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"