Date: Fri, 1 Jul 2011 01:52:34 +0300 From: Vitaly Magerya <vmagerya@gmail.com> To: Andriy Gapon <avg@freebsd.org> Cc: freebsd-acpi@freebsd.org Subject: Re: (Missing) power states of an Atom N455-based netbook Message-ID: <BANLkTinRY-h%2BkpXtwWJ_L86qVRdoynFSdg@mail.gmail.com> In-Reply-To: <4E0CE158.6030804@FreeBSD.org> References: <BANLkTim%2B1UwquMJ32WP8wZBGkYxPv78MLA@mail.gmail.com> <4E05EB91.9090509@FreeBSD.org> <BANLkTi=dyNx=TjyEqYMhSkRtddjVA4nAtw@mail.gmail.com> <4E0862A0.7060405@FreeBSD.org> <BANLkTikmVUtLyANBSqYb%2BL-xkwQ4Zo51Eg@mail.gmail.com> <4E09BADF.7050702@FreeBSD.org> <BANLkTin_%2BZH%2Bo7rdR9ijHMtrXcSdH9ZSdQ@mail.gmail.com> <4E0A41C8.3000904@FreeBSD.org> <BANLkTikwgy%2BKuA5E5zXQKGT-eyV35YAVag@mail.gmail.com> <4E0CE158.6030804@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Andriy Gapon <avg@freebsd.org> wrote:
> Here's what Intel docs say:
>
> The processor implements two software interfaces for requesting low power
> states, MWAIT instruction extensions with sub-state hints and P_LVLx reads to
> the ACPI P_BLK register block mapped in the processor's I/O address space. The
> P_LVLx I/O reads are converted to equivalent MWAIT C-state requests inside the
> processor and do not directly result in I/O reads on the processor FSB.
>
> My interpretation is that both mechanism should work equally.
I see.
>> Just tried this. Nothing seems fried; the visible effect is that
>> now when I plug the power cord in backlight brightness turns all
>> the way up, and then back down the I turn it off. No changes in
>> SNVS or GNVS variables aside from the usual ones.
>
> At least some improvement (or just a difference)...
Since VDRV is always 0, you can't really say if it's a coincidence
or the intended behavior.
> Not sure how to proceed here further. Apparently we do something differently
> from Linux (and presumably Windows) here, but it's quite hard to tell what. The
> problem is that SNVS/GNVS (in particular C1ON) seem to be controlled by some
> firmware/hardware and that's a black box.
> And I am still puzzled about which exactly event triggers change in C1ON value
> on FreeBSD...
I got the dumps for Linux (it appears that you can't just read
/dev/mem on there, you need to mmap it). The summary of differences
between FreeBSD and Linux right after the boot:
DB00: 01 -> 00
P80D: 06:08:00:00 -> 06:08:4C:00
PCP0: 1D -> BF
PCP1: 1D -> BF
BRTL: 00 -> 1E
VDRV: 00 -> 01
(Note that C1ON is 0 just as with FreeBSD, and yet powertop does
report C2 and C4).
Then, after about 4 minutes of uptime, C1ON changes to 1 (and
powertop still reports the same states).
> Do you have powerd enabled? Can you check if anything changes
> with it disabled (just for the sake of testing).
I do; nothing changes if I don't.
> P.S. Just an idea, maybe the following script could be of some help if you
> have dtrace support in your kernel:
> $ dtrace -n 'fbt::AcpiEvaluateObject:entry { printf("%p->%s\n", args[0],
> (string)args[1]); }'
> I would like to get entries, if any, around the time that the C-states
> become available.
I'll try to compile the kernel with dtrace and post the results back.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTinRY-h%2BkpXtwWJ_L86qVRdoynFSdg>
