Coder Social home page Coder Social logo

Comments (19)

RehabMan avatar RehabMan commented on July 18, 2024

By the way, slice's branch is not immune to this problem either. Same issue, but seems to happen less with his version, perhaps because they do less or do it faster at startup, so there is less chance of a context switch while a PlugIn is setting up...

from hwsensors.

CozmoNate avatar CozmoNate commented on July 18, 2024

Unsynchronized calls could produce glitches or KPs, I think it is possible. I added simple lock to FakeSMCDevice plugins API.

from hwsensors.

RehabMan avatar RehabMan commented on July 18, 2024

What you did there is a start, but is not enough. And it is not only possible... it has been proven to happen (I sent my version to someone who had issues w/ your build and it fixed the issue... I haven't been able to reproduce the problem consistently on either of my two machines, but I do get rare/random lockups at startup).

Consider the code in SuperIOSensors:

            if (getVacantGPUIndex() >= 0) {
                snprintf(key, 5, KEY_FORMAT_GPU_HEATSINK_TEMPERATURE, getVacantGPUIndex());
                if (addSensorFromConfigurationNode(node, "GPU", key, TYPE_SP78, TYPE_SPXX_SIZE, kFakeSMCTemperatureSensor, i))
                    takeVacantGPUIndex();
            }

If a context switch happens in between the time getVacantGPUIndex is called and takeVacantGPUIndex is called, then the result from getVacantGPUIndex is no longer valid (another thread could have stole the spare index).

This code needs to be protected as follows:

            lockSharedData();
            if (getVacantGPUIndex() >= 0) {
                snprintf(key, 5, KEY_FORMAT_GPU_HEATSINK_TEMPERATURE, getVacantGPUIndex());
                if (addSensorFromConfigurationNode(node, "GPU", key, TYPE_SP78, TYPE_SPXX_SIZE, kFakeSMCTemperatureSensor, i))
                    takeVacantGPUIndex();
            }
            unlockSharedData();

I used different name than lockSharedData, but I'm just using that for illustration.

Similar situation in RadeonSensors.cpp and GeforceSensors.cpp:

    card.card_index = getVacantGPUIndex();

    ... lots of code ...

   card.card_index = takeVacantGPUIndex();

What the purpose of the two-stage acquisition of the GPUIndex is, I'm not clear on, but I think there is an expectation in the code that get/take return the same index, and an assumption that if getVacantGPUIndex is successful, so will takeVacantGPUIndex be successful (otherwise, why have the getVacant/takeVacant -- if the result from getVacant isn't critical, then we can remove it from the code, right?)

In addition, there is the internals of FakeSMCDevice.cpp itself. I've found (from my work on the VoodooPS2Controller) that setProperties can be called in a multithreaded manner. In my kext I push it through the workloop (even safer), but a lock is just as effective in the FakeSMC case. Perhaps some of my locks in there are unnecessary, but do we really know in what context (whether they are serialized through a single work-loop somewhere) some of these calls are made? I don't think we do.

I still have yet to review the exported SMC functions...

Next consider the code in FakeSMCPlugIn.cpp ... FakeSMCPlugIn::addTachometer:

    if (kIOReturnSuccess == storageProvider->callPlatformFunction(kFakeSMCGetKeyValue, true, (void *)KEY_FAN_NUMBER, (void *)&length, (void *)&data, 0)) {

         .... // some more code 

                        if (kIOReturnSuccess != storageProvider->callPlatformFunction(kFakeSMCSetKeyValue, true, (void *)KEY_FAN_NUMBER, (void *)(UInt8)1, (void *)&length, 0))
                            HWSensorsWarningLog("failed to update FNum value");
                    }

It is possible to get a context switch (to another plugin doing similar code) in between the 'getkeyvalue' and the 'setkeyvalue'. I think in that case, the Fnum value is not correctly updated or you end up with two different plugins using the same fan number...

I suggest you take a closer look at my changes...

from hwsensors.

RehabMan avatar RehabMan commented on July 18, 2024

In addition, you missed my other fixes in PTIDSensors.cpp. There's some pretty good bugs there with the parsing of the array packages that come back from the PTID device.

If you want me to enter those as separate issues, I can...

from hwsensors.

CozmoNate avatar CozmoNate commented on July 18, 2024

I have no time now but I take a look on your other changes later. What I see that you get rid off support for specific PTID version in some cases... Why? I got couple of DSDTs with different PTID description tables format.

from hwsensors.

RehabMan avatar RehabMan commented on July 18, 2024

What I see that you get rid off support for specific PTID version in some cases... Why?

Support is still there for both. I just simplified. If you have some examples of 0x30000, post it. I found only this one (by searching on the net -- I couldn't find a spec for any of this, not even in ACPI 5.0 spec) and wrote the code to fit it:

            Name(IVER, 0x00030000)
            Name(TSDL, Package(46)
            {
                Zero, "CPU Core 0 DTS", Zero, "CPU Core 1 DTS", Zero, "CPU Core 2 DTS",
                Zero, "CPU Core 3 DTS", Zero, "CPU Core Package DTS", 0x03, "CPU Core VR (IMVP) Temperature",
                0x03, "CPU GT VR (IMVP) Temperature", 0x03, "Heat Exchanger Fan Temperature",
                0x03, "Skin Temperature", 0x03, "Ambient Temperature", 0x03, "Minicard Region Temperature",
                0x02, "Channel 0 DIMM Temperature", 0x02, "Channel 1 DIMM Temperature",
                Zero, "CPU Package Temperature", 0x05, "PCH DTS Temperature from PCH",
                Zero, "CPU PECI reading", 0x05, "SA DTS Temperature from PCH", 0x02,
                "TS-on-DIMM0 Temperature", 0x02, "TS-on-DIMM1 Temperature", 0x02,
                "TS-on-DIMM2 Temperature", 0x02, "TS-on-DIMM3 Temperature", 0x02,
                "TZ00 _TMP", 0x02, "TZ01 _TMP"
            })
            Name(OSDL, Package(6) {Zero, "CPU Fan Speed", "RPM", Zero, "CPU energy", "RAW"})

So for TSDL, the name starts at position 1, in sets of two, thus the code:

                    UInt32 count = description->getCount();
                    for (int i = 1; i < count; i += 2) {
                        parseTemperatureName(OSDynamicCast(OSString, description->getObject(i)), i/2);
                    }

For OSDL, the fan type name ("RPM") starts at position 2, in sets of three, thus the code:

                    UInt32 count = description->getCount();
                    for (int i = 2; i < count; i += 3) {
                        parseTachometerName(OSDynamicCast(OSString, description->getObject(i)), i/3);
                    }

In each case the passed in index is the index to retrieve the temperature by index from the result of TSDD, OSDD, which in 0x30000 version is a direct index (the table has nothing but the actual sensor reading). Thus the "i/2" and "i/3" for the index. This takes whatever the special case was in getSensorValue. In addition I fixed a bug in parseTemperatureName where it was calling strlen on an uninitialized local variable 'key'.

For the case of IVER 0x20001... TMPV and TSDD basically return the same table. For TMPV the temp name is at position 1 and comes in groups of three. So

                    UInt32 count = description->getCount();
                    for (int i = 1; i < count; i += 3) {
                        parseTemperatureName(OSDynamicCast(OSString, description->getObject(i)), i+1);
                    }

The i+1 is because when retrieving the actual reading, the temp is in position 2 from the table returned from TSDD.

For OSDV, OSDD in 0x20001 similar. Fan type name ("RPM") starts at position 2 and repeats every 4. So,

                    UInt32 count = description->getCount();
                    for (int i = 2; i < count; i += 4) {
                        parseTachometerName(OSDynamicCast(OSString, description->getObject(i)), i+1);
                    }

Again, the i+1 is because actual fan reading is just past the "RPM" type name in position 3.

Bottom line is that index placed in the sensor is always the index to be retrieved from TSDD /OSDD. And we only pass the actual names we are interested in to parseTemperatureName/parseTachometerName. No more special cases required except for in the setup code.

Link to 0x30000 PTID: http://www.shoresofnowhere.com/AcpiTbls.rw

My laptop has a PTID in SSDT-1.aml, which was buggy, and the names didn't line up to what this kext was expecting, but I patched it and tested with it. I don't have a 0x30000 PTID to test with.

The only other thing I can think of that would be a good idea in this PTID code, would be to make sure that the index is within range of the returned table in readTemperature/readTachometer. But perhaps OSArray::getObject does this range check validation.

So, no... I don't think I removed anything.

BTW... What you've done with getting rid of getVacantGpuIndex is a good one. I was tempted to do that, but didn't want to make such drastic changes. Using one atomic 'take' is better than two separate 'get/take' operations that must be made atomic with a mutex.

from hwsensors.

RehabMan avatar RehabMan commented on July 18, 2024

I see also you did the same thing with adding tachometers (concept of vacant index). This looks good except for some code in SuperIOPlugin.cpp, addSensorFromConfigurationNode. Looks like is is possible to add a tachometer sensor here without going through FakeSMCPlugin::addTachometer, and therefore the bit vector maintained by takeFanIndex isn't reflecting the fan index being taken.

I just did a search for kFakeSMCTachometerSensor and started reviewing...

Looks like this might be OK, as it is never called with kFakeSMCTachometerSensor... at least that's the way I read it. As a result this code is dead code and the case could probably be removed or enhanced with an assert(false).

from hwsensors.

CozmoNate avatar CozmoNate commented on July 18, 2024

RehabMan/OS-X-FakeSMC-kozlek@0ce9001

search for 0x20001, you'll see you got rid off peace of code.

from hwsensors.

RehabMan avatar RehabMan commented on July 18, 2024

I don't understand your comment above. Your link points to my repo and my commit.
And I don't see any new commits in yours.

from hwsensors.

CozmoNate avatar CozmoNate commented on July 18, 2024

No, I mean that you removed PTID multiple versions support in parseTachometerName function... I got at least one DSDT with PTID version 0x20001 or 0x30000 (don't remember which is rare) and they are different. I don't see any reasons to remove support for one of PTID versions.

Show me your DSDT, please.

from hwsensors.

RehabMan avatar RehabMan commented on July 18, 2024

Did you read my comment above: #41 (comment)

from hwsensors.

RehabMan avatar RehabMan commented on July 18, 2024

Here is the relavent portions of my PTID device (actually in SSDT-1):

   Device (PTID)
    {
        Name (_HID, EisaId ("INT340E"))
        Name (_CID, EisaId ("PNP0C02"))
        Name (IVER, 0x00020001)
...
        Name (TMPV, Package (0x24)
        {
            Zero, 
            "0-CPUZ-CPU reading via EC", 
            0x80000000,   // Note: temperature returned HERE!
            One, 
            "1-GFXZ-Graphics via EC", 
            0x80000000,  // and here.... etc....
            0x03, 
            "2-EXTZ-External/Remote 1", 
            0x80000000, 
            0x03, 
            "Ambient Temperature", 
            0x80000000, 
            0x03, 
            "5-BATZ-Battery", 
            0x80000000, 
            0x05, 
            "PCH Temperature", 
            0x80000000, 
            0x02, 
            "TS-on-DIMM0 Temperature", 
            0x80000000, 
            0x02, 
            "TS-on-DIMM1 Temperature", 
            0x80000000, 
            0x02, 
            "Dummy", 
            0x80000000, 
            0x02, 
            "Dummy", 
            0x80000000, 
            0x02, 
            "V0", 
            0x80000000, 
            0x02, 
            "V1", 
            0x80000000
        })
        Name (OSDV, Package (0x0C)
        {
            Zero, 
            "Fan Speed RPM", 
            "RPM", 
            0x80000000, // Note: fan speed returned here
            Zero, 
            "Target Fan RPM", 
            "RPM", 
            0x80000000, // and here... etc...
            Zero, 
            "Fan Speed %", 
            "RAW", 
            0x80000000
        })
        Method (TSDD, 0, NotSerialized)
        {
            Store (\_TZ.CPUZ._TMP, Index (TMPV, 0x02))  // temp readings placed in position 2 (0-based)
            Store (\_TZ.GFXZ._TMP, Index (TMPV, 0x05))
            Store (\_TZ.EXTZ._TMP, Index (TMPV, 0x08))
            Store (\_TZ.LOCZ._TMP, Index (TMPV, 0x0B))
            Store (\_TZ.BATZ._TMP, Index (TMPV, 0x0E))
            Store (\_TZ.PCHZ._TMP, Index (TMPV, 0x11))
            Store (0x11, Local0)
            Add (Local0, 0x02, Local0)
            Increment (Local0)
            Store (\_TZ.GDTP, 0x30)   // Note: ignore the bugs in Intel's iasl disassembler
            One
            Index (TMPV, Local0)
            Add (Local0, 0x02, Local0)
            Increment (Local0)
            Store (\_TZ.GDTP, 0x34)
            One
            Index (TMPV, Local0)
            While (LLess (Local0, 0x1D))
            {
                Add (Local0, 0x03, Local0)
                Store (0x0AAC, Index (TMPV, Local0))
            }

            Store (Add (Multiply (VTS0, 0x0A), 0x0AAC), Index (TMPV, 
                0x20))
            Store (Add (Multiply (VTS1, 0x0A), 0x0AAC), Index (TMPV, 
                0x23))
            Return (TMPV)  // Note: returns same table as TMPV
        }
        Method (OSDD, 0, NotSerialized)
        {
            Store (\_TZ.GFRM, Index (OSDV, 0x03))  // tach readings placed in position 3 (0-based)
            Store (\_TZ.GTRM, Index (OSDV, 0x07))
            Store (\_TZ.GFSD, Index (OSDV, 0x0B))
            Return (OSDV)  // Note: returns same table as OSDV
        }

from hwsensors.

ISOTOM avatar ISOTOM commented on July 18, 2024

1
2
20130202004
 2013-02-17 3 06 06
sudo dmesg
Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64
vm_page_bootstrap: 1009767 free pages and 30617 wired pages
kext submap [0xffffff7f80741000 - 0xffffff8000000000], kernel text [0xffffff8000200000 - 0xffffff8000741000]
zone leak detection enabled
standard timeslicing quantum is 10000 us
standard background quantum is 2500 us
mig_table_max_displ = 74
corecrypto kext started!
Running kernel space in FIPS MODE
Plist hmac value is 735d392b68241ef173d81097b1c8ce9ba283521626d1c973ac376838c466757d
Computed hmac value is 735d392b68241ef173d81097b1c8ce9ba283521626d1c973ac376838c466757d
corecrypto.kext FIPS integrity POST test passed!
corecrypto.kext FIPS AES CBC POST test passed!
corecrypto.kext FIPS TDES CBC POST test passed!
corecrypto.kext FIPS SHA POST test passed!
corecrypto.kext FIPS HMAC POST test passed!
corecrypto.kext FIPS ECDSA POST test passed!
corecrypto.kext FIPS DRBG POST test passed!
corecrypto.kext FIPS POST passed!
AppleACPICPU: ProcessorId=1 LocalApicId=0 Enabled
AppleACPICPU: ProcessorId=2 LocalApicId=1 Enabled
AppleACPICPU: ProcessorId=3 LocalApicId=130 Disabled
AppleACPICPU: ProcessorId=4 LocalApicId=131 Disabled
calling mpo_policy_init for Sandbox
Security policy loaded: Seatbelt sandbox policy (Sandbox)
calling mpo_policy_init for Quarantine
Security policy loaded: Quarantine policy (Quarantine)
calling mpo_policy_init for TMSafetyNet
Security policy loaded: Safety net for Time Machine (TMSafetyNet)
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
MAC Framework successfully initialized
using 16384 buffer headers and 10240 cluster IO buffer headers
IOAPIC: Version 0x20 Vectors 64:87
ACPI: System State [S0 S3 S4 S5]
PFM64 (36 cpu) 0xf80000000, 0x80000000
[ PCI configuration begin ]
console relocated to 0xf97000000
PCI configuration changed (bridge=5 device=2 cardbus=0)
[ PCI configuration end, bridges 6 devices 18 ]
RTC: Only single RAM bank (128 bytes)
AppleIntelCPUPowerManagement: (built 00:59:42 Aug 25 2012) initialization complete
HWSensors Project Copyright 2012 netkas, slice, usr-sse2, kozlek, navi, THe KiNG. All rights reserved.
FakeSMCDevice: 22 preconfigured key(s) added
SMC: successfully initialized
CPUSensors: force Tjmax value to 100
CPUSensors: CPU family 0x6, model 0x17, stepping 0xa, cores 2, threads 2, TJmax 100
GIGE cannot assert wake from D3cold
SuperIODevice: found Winbond W83667HGB on port=0x2e address=0x290
mbinit: done [64 MB total pool size, (42/21) split]
Pthread support ABORTS when sync kernel primitives misused
rooting via boot-uuid from /chosen: DAB8792A-3D40-35BE-A527-F0E51A0C32A6
Waiting on IOProviderClassIOResourcesIOResourceMatchboot-uuid-media
com.apple.AppleFSCompressionTypeDataless kmod start
W836xMonitor: started
[RealtekRTL81xx:init] RealtekRTL81xx.kext v0.0.90 (c)2010-2011 by Lnx2Mac ([email protected])
com.apple.AppleFSCompressionTypeZlib kmod start
GeForceMonitor: [card0] chipset: GF108 (NVC1) family: NVC0 vbios:70.08.45.00----------------------->>here。
com.apple.AppleFSCompressionTypeDataless load succeeded
com.apple.AppleFSCompressionTypeZlib load succeeded
No interval found for . Using 8000000
[RealtekRTL81xx:init] _logLevel is now 132 (0x0084)
[RealtekRTL81xx:init] Using updated PHY config method
[RealtekRTL81xx:init] init completed
[RTL81xx@0xc800:rtl8168_init_board] NIC identified as RTL8168D/8111D (mcfg=8)
AppleIntelCPUPowerManagementClient: ready
Got boot device = IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/SATA@1F,2/AppleAHCI/CHN0@0/IOAHCIDevice@0/AppleAHCIDiskDriver/IOAHCIBlockStorageDevice/IOBlockStorageDriver/ST3250318AS Media/IOFDiskPartitionScheme/Untitled 7@7
BSD root: disk0s7, major 1, minor 3
Kernel is LP64
macx_swapon SUCCESS
Waiting for DSMOS...
AppleRTL8169Ethernet: Ethernet address
com_lnx2mac_RealtekRTL81xx: Ethernet address
Controller: Intel 82801J (vendor ID: 8086, device ID: 3a3e)
Controller: NVidia (Unknown) (vendor ID: 10de, device ID: 0bea)
Previous Shutdown Cause: 0
[AppleBluetoothHCIControllerUSBTransport][start] -- completed
NVDAGF100HAL loaded and registered.
[AGPM Controller] build GPUDict by Vendor10deDevice0de0
DSMOS has arrived
[IOBluetoothHCIController][staticBluetoothHCIControllerTransportShowsUp] -- Received Bluetooth Controller register service notification
[IOBluetoothHCIController][start] -- completed
[IOBluetoothHCIController::setConfigState] calling registerService
NTFS driver 3.10 [Flags: R/W].
NTFS volume name Windows 7, version 3.1.
NTFS volume name Word, version 3.1.
NTFS volume name Game, version 3.1.
Sandbox: sandboxd(121) deny mach-lookup com.apple.coresymbolicationd
CODE SIGNING: cs_invalid_page(0x1000): p=203[GoogleSoftwareUp] clearing CS_VALID
PPPoE domain init
CODE SIGNING: cs_invalid_page(0x1000): p=241[ksadmin] clearing CS_VALID
CODE SIGNING: cs_invalid_page(0x1000): p=245[ksadmin] clearing CS_VALID

White screen!!!

Other sudo dmesg
Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64
vm_page_bootstrap: 1009754 free pages and 30630 wired pages
kext submap [0xffffff7f80741000 - 0xffffff8000000000], kernel text [0xffffff8000200000 - 0xffffff8000741000]
zone leak detection enabled
standard timeslicing quantum is 10000 us
standard background quantum is 2500 us
mig_table_max_displ = 74
corecrypto kext started!
Running kernel space in FIPS MODE
Plist hmac value is 735d392b68241ef173d81097b1c8ce9ba283521626d1c973ac376838c466757d
Computed hmac value is 735d392b68241ef173d81097b1c8ce9ba283521626d1c973ac376838c466757d
corecrypto.kext FIPS integrity POST test passed!
corecrypto.kext FIPS AES CBC POST test passed!
corecrypto.kext FIPS TDES CBC POST test passed!
corecrypto.kext FIPS SHA POST test passed!
corecrypto.kext FIPS HMAC POST test passed!
corecrypto.kext FIPS ECDSA POST test passed!
corecrypto.kext FIPS DRBG POST test passed!
corecrypto.kext FIPS POST passed!
AppleACPICPU: ProcessorId=1 LocalApicId=0 Enabled
AppleACPICPU: ProcessorId=2 LocalApicId=1 Enabled
AppleACPICPU: ProcessorId=3 LocalApicId=130 Disabled
AppleACPICPU: ProcessorId=4 LocalApicId=131 Disabled
calling mpo_policy_init for Sandbox
Security policy loaded: Seatbelt sandbox policy (Sandbox)
calling mpo_policy_init for Quarantine
Security policy loaded: Quarantine policy (Quarantine)
calling mpo_policy_init for TMSafetyNet
Security policy loaded: Safety net for Time Machine (TMSafetyNet)
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
MAC Framework successfully initialized
using 16384 buffer headers and 10240 cluster IO buffer headers
IOAPIC: Version 0x20 Vectors 64:87
ACPI: System State [S0 S3 S4 S5]
PFM64 (36 cpu) 0xf80000000, 0x80000000
[ PCI configuration begin ]
console relocated to 0xf97000000
PCI configuration changed (bridge=5 device=2 cardbus=0)
[ PCI configuration end, bridges 6 devices 18 ]
RTC: Only single RAM bank (128 bytes)
AppleIntelCPUPowerManagement: (built 00:59:42 Aug 25 2012) initialization complete
HWSensors Project Copyright 2013 netkas, slice, usr-sse2, kozlek, navi, THe KiNG. All rights reserved.
FakeSMCDevice: 15 preconfigured key(s) added
SMC: successfully initialized
CPUSensors: force Tjmax value to 100
CPUSensors: CPU family 0x6, model 0x17, stepping 0xa, cores 2, threads 2, TJmax 100
SuperIODevice: found Winbond W83667HGB on port=0x2e address=0x290
W836xxSensors: started
GIGE cannot assert wake from D3cold
mbinit: done [64 MB total pool size, (42/21) split]
Pthread support ABORTS when sync kernel primitives misused
Kext org.hwsensors.driver.GPUSensors - library kext com.apple.iokit.IOGraphicsFamily not found.
Can't load kext org.hwsensors.driver.GPUSensors - failed to resolve library dependencies.
Kext org.hwsensors.driver.GPUSensors failed to load (0xdc00800e).
Failed to load kext org.hwsensors.driver.GPUSensors (error 0xdc00800e).
Couldn't alloc class "GeforceSensors"------------------------------------------------------------------------------->>here。
rooting via boot-uuid from /chosen: DAB8792A-3D40-35BE-A527-F0E51A0C32A6
Waiting on IOProviderClassIOResourcesIOResourceMatchboot-uuid-media
com.apple.AppleFSCompressionTypeDataless kmod start
[RealtekRTL81xx:init] RealtekRTL81xx.kext v0.0.90 (c)2010-2011 by Lnx2Mac ([email protected])
com.apple.AppleFSCompressionTypeZlib kmod start
[RealtekRTL81xx:init] _logLevel is now 132 (0x0084)
[RealtekRTL81xx:init] Using updated PHY config method
[RealtekRTL81xx:init] init completed
com.apple.AppleFSCompressionTypeDataless load succeeded
com.apple.AppleFSCompressionTypeZlib load succeeded
[RTL81xx@0xc800:rtl8168_init_board] NIC identified as RTL8168D/8111D (mcfg=8)
No interval found for . Using 8000000
AppleIntelCPUPowerManagementClient: ready
Got boot device = IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/SATA@1F,2/AppleAHCI/CHN0@0/IOAHCIDevice@0/AppleAHCIDiskDriver/IOAHCIBlockStorageDevice/IOBlockStorageDriver/ST3250318AS Media/IOFDiskPartitionScheme/Untitled 7@7
BSD root: disk0s7, major 1, minor 3
Kernel is LP64
Waiting for DSMOS...
macx_swapon SUCCESS
AppleRTL8169Ethernet: Ethernet address
com_lnx2mac_RealtekRTL81xx: Ethernet address
Controller: NVidia (Unknown) (vendor ID: 10de, device ID: 0bea)
Controller: Intel 82801J (vendor ID: 8086, device ID: 3a3e)
Previous Shutdown Cause: 5
[AppleBluetoothHCIControllerUSBTransport][start] -- completed
NVDAGF100HAL loaded and registered.
[AGPM Controller] build GPUDict by Vendor10deDevice0de0
DSMOS has arrived
[IOBluetoothHCIController][staticBluetoothHCIControllerTransportShowsUp] -- Received Bluetooth Controller register service notification
[IOBluetoothHCIController][start] -- completed
[IOBluetoothHCIController::setConfigState] calling registerService
NTFS driver 3.10 [Flags: R/W].
NTFS volume name Windows 7, version 3.1.
NTFS volume name Word, version 3.1.
NTFS volume name Game, version 3.1.
Sandbox: sandboxd(118) deny mach-lookup com.apple.coresymbolicationd
PPPoE domain init
CODE SIGNING: cs_invalid_page(0x1000): p=205[GoogleSoftwareUp] clearing CS_VALID
CODE SIGNING: cs_invalid_page(0x1000): p=299[ksadmin] clearing CS_VALID
CODE SIGNING: cs_invalid_page(0x1000): p=303[ksadmin] clearing CS_VALID
Sandbox: sandboxd(322) deny mach-lookup com.apple.coresymbolicationd

from hwsensors.

RehabMan avatar RehabMan commented on July 18, 2024

???? not related to my report...

from hwsensors.

CozmoNate avatar CozmoNate commented on July 18, 2024

Device (PTID)
{
Name (_HID, EisaId ("INT340E"))
Name (_CID, EisaId ("PNP0C02"))
Name (IVER, 0x00030000)
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}

        Name (TSDL, Package (0x2E)
        {
            Zero, 
            "CPU Core 0 DTS", 
            Zero, 
            "CPU Core 1 DTS", 
            Zero, 
            "CPU Core 2 DTS", 
            Zero, 
            "CPU Core 3 DTS", 
            Zero, 
            "CPU Core Package DTS", 
            0x03, 
            "CPU Core VR (IMVP) Temperature", 
            0x03, 
            "CPU GT VR (IMVP) Temperature", 
            0x03, 
            "Heat Exchanger Fan Temperature", 
            0x03, 
            "Skin Temperature", 
            0x03, 
            "Ambient Temperature", 
            0x03, 
            "Minicard Region Temperature", 
            0x02, 
            "Channel 0 DIMM Temperature", 
            0x02, 
            "Channel 1 DIMM Temperature", 
            Zero, 
            "CPU Package Temperature", 
            0x05, 
            "PCH DTS Temperature from PCH", 
            Zero, 
            "CPU PECI reading", 
            0x05, 
            "SA DTS Temperature from PCH", 
            0x02, 
            "TS-on-DIMM0 Temperature", 
            0x02, 
            "TS-on-DIMM1 Temperature", 
            0x02, 
            "TS-on-DIMM2 Temperature", 
            0x02, 
            "TS-on-DIMM3 Temperature", 
            0x02, 
            "TZ00 _TMP", 
            0x02, 
            "TZ01 _TMP"
        })
        Name (PSDL, Package (0x0C)
        {
            Zero, 
            "CPU Power", 
            One, 
            "Gfx Core Power", 
            0x0A, 
            "System Power", 
            Zero, 
            "CPU Average Power", 
            One, 
            "Gfx Core Average Power", 
            0x0A, 
            "System Average Power"
        })
        Name (OSDL, Package (0x06)
        {
            Zero, 
            "CPU Fan Speed", 
            "RPM", 
            Zero, 
            "CPU energy", 
            "RAW"
        })
        Method (TSDD, 0, NotSerialized)
        {
            Name (TMPV, Package (0x17)
            {
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000
            })
            Store (Add (Multiply (DTS1, 0x0A), 0x0AAC), Index (TMPV, 
                Zero))
            Store (Add (Multiply (DTS2, 0x0A), 0x0AAC), Index (TMPV, 
                One))
            Store (Add (Multiply (DTS3, 0x0A), 0x0AAC), Index (TMPV, 
                0x02))
            Store (Add (Multiply (DTS4, 0x0A), 0x0AAC), Index (TMPV, 
                0x03))
            Store (Add (Multiply (PDTS, 0x0A), 0x0AAC), Index (TMPV, 
                0x04))
            If (\ECON)
            {
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.CVRT, 0x0A), 0x0AAC), Index (TMPV, 
                    0x05))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.GTVR, 0x0A), 0x0AAC), Index (TMPV, 
                    0x06))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.FANT, 0x0A), 0x0AAC), Index (TMPV, 
                    0x07))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.SKNT, 0x0A), 0x0AAC), Index (TMPV, 
                    0x08))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.AMBT, 0x0A), 0x0AAC), Index (TMPV, 
                    0x09))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.MCRT, 0x0A), 0x0AAC), Index (TMPV, 
                    0x0A))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.DIM0, 0x0A), 0x0AAC), Index (TMPV, 
                    0x0B))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.DIM1, 0x0A), 0x0AAC), Index (TMPV, 
                    0x0C))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.PMAX, 0x0A), 0x0AAC), Index (TMPV, 
                    0x0D))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.PPDT, 0x0A), 0x0AAC), Index (TMPV, 
                    0x0E))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.PECH, 0x0A), 0x0AAC), Index (TMPV, 
                    0x0F))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.PMDT, 0x0A), 0x0AAC), Index (TMPV, 
                    0x10))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.TSD0, 0x0A), 0x0AAC), Index (TMPV, 
                    0x11))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.TSD1, 0x0A), 0x0AAC), Index (TMPV, 
                    0x12))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.TSD2, 0x0A), 0x0AAC), Index (TMPV, 
                    0x13))
                Store (Add (Multiply (\_SB.PCI0.LPCB.H_EC.TSD3, 0x0A), 0x0AAC), Index (TMPV, 
                    0x14))
            }

            Store (\_TZ.TZ00._TMP, Index (TMPV, 0x15))
            Store (\_TZ.TZ01._TMP, Index (TMPV, 0x16))
            Return (TMPV)
        }

        Method (PSDD, 0, NotSerialized)
        {
            Name (PWRV, Package (0x06)
            {
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000, 
                0x80000000
            })
            If (\ECON)
            {
                Store (\_SB.PCI0.LPCB.H_EC.CPUP, Index (PWRV, Zero))
                Store (\_SB.PCI0.LPCB.H_EC.MCHP, Index (PWRV, One))
                Store (Multiply (\_SB.PCI0.LPCB.H_EC.SYSP, 0x0A), Index (PWRV, 0x02))
                Store (\_SB.PCI0.LPCB.H_EC.CPAP, Index (PWRV, 0x03))
                Store (\_SB.PCI0.LPCB.H_EC.MCAP, Index (PWRV, 0x04))
                Store (Multiply (\_SB.PCI0.LPCB.H_EC.SYAP, 0x0A), Index (PWRV, 0x05))
            }

            Return (PWRV)
        }

        Method (OSDD, 0, NotSerialized)
        {
            Name (OSDV, Package (0x02)
            {
                0x80000000, 
                0x80000000
            })
            If (\ECON)
            {
                Store (\_SB.PCI0.LPCB.H_EC.CFSP, Index (OSDV, Zero))
                Store (\_SB.PCI0.LPCB.H_EC.CPUE, Index (OSDV, One))
            }

            Return (OSDV)
        }

from hwsensors.

RehabMan avatar RehabMan commented on July 18, 2024

I'm not sure why you posted that DSDT, other than to prove that my code works and yours doesn't. Let's just take the example of parsing the TSDL. Your code looks at each entry (looking at both the integer and the string in each pair) in the returned array from the Method (TSDL). Count starts at 0 and is moved by +2 each iteration. By the time you hit the first name which is recognized, "CPU Core Package DTS", count is 18. The index is set to count/2, which is 9. So, you are reading the temperature at index 9 (reading temp for "Ambient Temperature") instead of the correct one which is at 4.

Are you sure you don't want to spend some more time reviewing what I did, and what you have coded previously?

from hwsensors.

CozmoNate avatar CozmoNate commented on July 18, 2024

Oh, yes! I am looking into the code and don't understand - it just can't work. It's wrong from the beginning. Such a shame. I'll fix it.

from hwsensors.

ISOTOM avatar ISOTOM commented on July 18, 2024

Hi, Kozlek!
My grahics card is GT440 with Fermi core GF108. My screen die if GPUSensors.kext is loaded. Is there any solution or anything I can do to help fix it. Wait for your reply. Thanks a lot. Sorry for my poor English.

from hwsensors.

CozmoNate avatar CozmoNate commented on July 18, 2024

ISOTOM, you are using an older version of GeForce sensors. Install latest drivers. I am closing this issue. It's getting huge and irrelevant to its name.

from hwsensors.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.