on 27/06/2011 21:04 Vitaly Magerya said the following:
>> It seems that possibly we present different OS capabilities to ACPI...
>> Needs more investigation.
>>
>> Can you also send me two binary files produced as follows:
>> 1. dd if=/dev/mem size=1 iseek=0x3F5B9B71 count=0x00000203 of=...
>> 2. dd if=/dev/mem size=1 iseek=0x3F5B92DA count=0x00000708 of=...
>>
>> Or, if it's not too much trouble for you, you can send results of
>> decompilation of those files using iasl -d <filename>
> 
> You can find them all at [1] and [2].
> 
> [1] http://tx97.net/~magv/n143-acpi/mem-3f5b9b71.dsl.txt
> [2] http://tx97.net/~magv/n143-acpi/mem-3f5b92da.dsl.txt

OK, thank you, very interesting.

I think that part (but not all) of the differences between FreeBSD and Linux can
be explained by the fact that FreeBSD currently doesn't advertise itself as
featuring ACPI_CAP_SMP_C1_NATIVE and ACPI_CAP_SMP_C3_NATIVE.  I am not sure what
it would take to actually support these features.  I think that Linux does
support (or at least advertise support) for these features.

I see one repeated condition for providing advanced C states, it's:
(\_SB.C1ON) and (LAnd (LOr (LNot (PWRS), \_SB.C4AC), \_SB.C3SU))).

I think that PWRS is supposed to reflect current AC state (1 - connected, 0 -
disconnected).
All of C1ON, C4AC and C3SU are declared in a special memory region:
OperationRegion (SNVS, SystemMemory, 0x3F5C0C7D, 0x000000FF)

My guess is that SNVS stands for "System Non-Volatile Storage" or some such,
which may serve similarly to CMOS NVRAM for BIOS settings.
Further, I guess that C4AC is a configuration setting for whether to provide C4
state while on AC, and C3SU - is whether C3 state should be supported.
C1ON - not really sure.

I would be interested to see memory dumps of the above region both early after
boot and later when you get additional C states.
This can be done with:
dd if=/dev/mem size=1 iseek=0x3F5C0C7D count=0x000000FF

I am not sure if the values in SNVS can change during OS run-time, so I would
like to check that.  At least they are not modified via ACPI code as far as I
can see.

Then, PWRS is declared in GNVS region ("Global Non-Volatile Storage"?):
OperationRegion (GNVS, SystemMemory, 0x3F5C0D7C, 0x0100)
I would like to get two dumps for this region too.

I see that PWRS value is being manipulated in a few of EC (embedded controller
device) methods.  So maybe we do not call something related as early as Linux 
does.

And, I also see that there is an interesting variable MPEN which controls
whether to send Processor notifications when PNOT ("processor notify"?) method
is called; these notifications are what leads to re-evaluation of _CST
(avialable C states).

I hope that the additional data will shed some light.
-- 
Andriy Gapon
_______________________________________________
freebsd-acpi@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-acpi
To unsubscribe, send any mail to "freebsd-acpi-unsubscr...@freebsd.org"

Reply via email to