Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Dec 2015 04:55:28 +1100 (EST)
From:      Ian Smith <smithi@nimnet.asn.au>
To:        Johannes Dieterich <dieterich.joh@gmail.com>
Cc:        freebsd-acpi@freebsd.org, Andriy Gapon <avg@freebsd.org>, Bengt Ahlgren <bengta@sics.se>
Subject:   Re: AMD A12-8800B ACPI questions (turbo mode, temp zones)
Message-ID:  <20151216200852.S95820@sola.nimnet.asn.au>
In-Reply-To: <CABquGzW4Lw1na-fN6hh3wC5Q%2Bf_AmfbzhPvjMv-DzVtgtu2zTw@mail.gmail.com>
References:  <CABquGzUkHvGTqe1-hswMnnmjbf1qgqKYEEEH3GV3VmzvUeTTBA@mail.gmail.com> <20151216005408.B61100@sola.nimnet.asn.au> <CABquGzW4Lw1na-fN6hh3wC5Q%2Bf_AmfbzhPvjMv-DzVtgtu2zTw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 15 Dec 2015 10:05:36 -0500, Johannes Dieterich wrote:
 > thanks for the response!
 > 
 > On Tue, Dec 15, 2015 at 9:15 AM, Ian Smith <smithi@nimnet.asn.au> wrote:
 > > On Sun, 13 Dec 2015 19:53:52 -0500, Johannes Dieterich wrote:
 > >  > Dear list,
 > >  >
 > >  > I am running CURRENT on an HP elitebook 745 G3 which comes with a AMD
 > >  > A12-8800B CPU. All in all, it runs very well with just a few nits to
 > >  > pick. Two of them are ACPI related.
 > >  >
 > >  > 1) there are 5 thermal zones defined out of which only two provide
 > >  > reasonable numbers it seems:
 > >  >
 > >  > hw.acpi.thermal.tz4.temperature: 34.1C
 > >  > hw.acpi.thermal.tz3.temperature: 0.1C
 > >  > hw.acpi.thermal.tz2.temperature: 0.1C
 > >  > hw.acpi.thermal.tz1.temperature: 0.1C
 > >  > hw.acpi.thermal.tz0.temperature: 56.1C
 > >  >
 > >  > my gut feeling is that tz0-tz3 may be the CPU cores and tz4 would be
 > >  > the GPU (which does not work in BSD ATM, hence consistently lower
 > >  > temp). I guess this is not a big deal (everything works) but I still
 > >  > wonder how to fix it.
 > >
 > > Not sure if anything needs fixing, but I only have Intel gear these
 > > days and am not up on the AMD side of things.  However, please show:
 > >
 > > % sysctl dev.cpu

 > dev.cpu.3.cx_method: C1/hlt C2/io
 > dev.cpu.3.cx_usage_counters: 25314 20561

These are both new in 11.0, I suppose _counters shows relative use of 
each C-state per CPU, which is then reflected in:

 > dev.cpu.3.cx_usage: 55.18% 44.81% last 979us

 > dev.cpu.2.cx_usage_counters: 25676 20634
 > dev.cpu.2.cx_usage: 55.44% 44.55% last 1300us

 > dev.cpu.1.cx_usage_counters: 27544 21225
 > dev.cpu.1.cx_usage: 56.47% 43.52% last 1836us

 > dev.cpu.0.cx_usage_counters: 35013 29515
 > dev.cpu.0.cx_usage: 54.26% 45.73% last 1686us
 > dev.cpu.0.cx_lowest: C2
 > dev.cpu.0.cx_supported: C1/1/0 C2/2/400
 > dev.cpu.0.freq_levels: 2100/4717 1800/3450 1400/2320
 > dev.cpu.0.freq: 2100
 > dev.cpu.0.%parent: acpi0
 > dev.cpu.0.%pnpinfo: _HID=none _UID=0
 > dev.cpu.0.%location: handle=\_PR_.C000
 > dev.cpu.0.%driver: cpu
 > dev.cpu.0.%desc: ACPI CPU
 > dev.cpu.%parent:

OK, noting that 400ns penalty for C2 state seems quite a lot, and that 
4.7, 3.45 and 2.32W suggests a very low power usage CPU (more below).

 > > % sysctl hw.acpi.thermal
 > hw.acpi.thermal.tz4._TSP: 300
 > hw.acpi.thermal.tz4._TC2: 0
 > hw.acpi.thermal.tz4._TC1: 50
 > hw.acpi.thermal.tz4._ACx: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
 > hw.acpi.thermal.tz4._CRT: 128.1C
 > hw.acpi.thermal.tz4._HOT: -1
 > hw.acpi.thermal.tz4._PSV: 55.1C
 > hw.acpi.thermal.tz4.thermal_flags: 0
 > hw.acpi.thermal.tz4.passive_cooling: 1
 > hw.acpi.thermal.tz4.active: -1
 > hw.acpi.thermal.tz4.temperature: 29.1C

This is interesting; it's the only one using passive cooling, and has a 
very low _PSV cut-in temperature at 55C.  I think the .1C shown with 
each of these is probably bogus, slight miscalculation?  Unless this is 
CPU temperature, I don't know how passive cooling might be applied, but 
then I don't know anything about the 8-core GPU in this thing either, so 
it might indeed be for the GPU(s).

If it is the CPU(s) then the low _PSV figure of 55C might have something 
to do with controlling whether it could/would use the turbo mode/s, but 
that's merely wild speculation .. it may be controlled by CPU microcode 
without OS intervention, for all I know .. I've no time to research it.

 > hw.acpi.thermal.tz3._TSP: -1
 > hw.acpi.thermal.tz3._TC2: -1
 > hw.acpi.thermal.tz3._TC1: -1
 > hw.acpi.thermal.tz3._ACx: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
 > hw.acpi.thermal.tz3._CRT: 128.1C
 > hw.acpi.thermal.tz3._HOT: -1
 > hw.acpi.thermal.tz3._PSV: -1
 > hw.acpi.thermal.tz3.thermal_flags: 0
 > hw.acpi.thermal.tz3.passive_cooling: 0
 > hw.acpi.thermal.tz3.active: -1
 > hw.acpi.thermal.tz3.temperature: 0.1C

[ and exactly the same for tz2 and tz1 - I've no idea about these ]

 > hw.acpi.thermal.tz0._TSP: -1
 > hw.acpi.thermal.tz0._TC2: -1
 > hw.acpi.thermal.tz0._TC1: -1
 > hw.acpi.thermal.tz0._ACx: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
 > hw.acpi.thermal.tz0._CRT: 128.1C
 > hw.acpi.thermal.tz0._HOT: 102.1C
 > hw.acpi.thermal.tz0._PSV: -1
 > hw.acpi.thermal.tz0.thermal_flags: 0
 > hw.acpi.thermal.tz0.passive_cooling: 0
 > hw.acpi.thermal.tz0.active: -1
 > hw.acpi.thermal.tz0.temperature: 48.1C

This looks more like a typical active cooling setup, active meaning with 
a fan or such to control temperature, however there are no trip points 
set (_ACx) only the _HOT setting, so I'm really not sure.  I'm less sure 
this is likely to be a CPU temperature, though, though tz0 typically is.  
See acpi_thermal(4).

Have you tried running powerd(8) with it?

If you run it on battery and run acpiconf -i0 occasionally, what sort of 
power usage do you see - in mW or maybe in mA - a) when idle and b) when 
cranked up as hard as possible?  Just curious, as the chip TDP's rated 
at 15W which seems very low for 4 cores at 2.1GHz, let alone 3.4GHz, and 
then plus 8 GPU cores.

 > hw.acpi.thermal.user_override: 0
 > hw.acpi.thermal.polling_rate: 10
 > hw.acpi.thermal.min_runtime:
 > 
 > That does indeed show an awful lot of -1, or?

-1 in general just means 'unset', 'not used' or 'not applicable' in this 
context; in the case of .active it means 'inactive'.

 > > which may provide more clues.  Perhaps all 4 cores are in one package,
 > > in which case individual CPU temperatures may not be too meaningful.  I
 > > don't know whether there's any equivalent to coretemp(4) for AMD CPUs?
 > >
 > > Yours won't use est(4) but perhaps powernow(0) - 0 meaning no manpage :)
 > > but both are in GENERIC kernels.  You should be able to glean from dmesg
 > > which driver/s are in use; a verbose dmesg.boot might come in handy.

 > verbose boot does show neither powernow nor est.
 > 
 > http://llamapost.net/verbose_boot holds the verbose boot.

Ok, it's already using hwpstate (creating hwpstate0 on boot), see 
http://svnweb.freebsd.org/base/head/sys/x86/cpufreq/hwpstate.c?view=log

This code hasn't changed substantially since my stable/9 version; no 
mention at all of any 'turbo' mode handling.  It can work well, it says, 
with acpi_perf, but that's likely disabled as it douesn't appear (except 
regarding random noisily harvesting entropy) so:

        /*
         * If we cannot get info from acpi_perf,
         * Let's get info from MSRs.
         */
        if (error)
                error = hwpstate_get_info_from_msr(dev);
        if (error)
                return (error);

        device_set_desc(dev, "Cool`n'Quiet 2.0");
        return (0);

which is the description in your dmesg, so it is loaded and running, and 
doesn't need loading.  You could try setting the debug.hwpstate_verbose 
tunable if you want to see it chatting about what it's doing for a bit?

 > >  > 2) turbo mode: this is a more major issue. sysctl reports the
 > >  > following for all four cores:
 > >  >
 > >  > dev.cpu.0.cx_lowest: C2
 > >  > dev.cpu.0.cx_supported: C1/1/0 C2/2/400
 > >  > dev.cpu.0.freq_levels: 2100/4717 1800/3450 1400/2320
 > >  > dev.cpu.0.freq: 2100
 > >  >
 > >  > >From the intel CPUs w/ turbo mode I had before I know that there
 > >  > should be (at least) a 2101 frequency indicating the turbo clock. This
 > >  > frequency is absent, I suspect this means turbo mode does not work.
 > >
 > > Or that these CPUs just don't have a turbo mode, as such?  I expect the
 > > specs on AMD's site should mention that, either way?
 > http://products.amd.com/en-us/search/APU/AMD-PRO-A-Series-Processors/AMD-PRO-A-Series-A12-APU-for-Laptops/AMD-PRO-A12-8800B-with-Radeon%E2%84%A2-R7-Graphics/164

That's a bit thin.  It says it has 'max turbo core speed' of 3.4GHz, but 
I didn't know where to go digging for a description of how it works; in 
any case, it seems currently entirely unsupported.

 > So it does have a turbo mode up to 3.4 GHz, I recall reading from a
 > review (sorry, no link) that it should also have multiple steps in
 > between 2.1 and 3.4 (it would supposedly typically run in between the
 > two).

I wonder if anyone is working on that?  Andriy? (cc'd)

 > >  > How can I debug this? I believe also that this AMD chip has multiple
 > >  > frequencies above the base clock of 2100, so how would that show?
 > >
 > > What leads you to believe that?  Where is this documented?
 > >  > Loaded modules:
 > >  >
 > >  > Id Refs Address            Size     Name
 > >  >  1   23 0xffffffff80200000 1e79670  kernel
 > >  >  2    1 0xffffffff8207b000 384858   zfs.ko
 > >  >  3    2 0xffffffff82400000 ca38     opensolaris.ko
 > >  >  4    1 0xffffffff8240d000 22b98    geom_eli.ko
 > >  >  5    1 0xffffffff82431000 ac60     aesni.ko
 > >  >  6    1 0xffffffff8243d000 1c520    fuse.ko
 > >  >  7    1 0xffffffff82621000 358b     ums.ko
 > >  >  8    1 0xffffffff82625000 223c4    ipfw.ko
 > >  >
 > >  > I should note that I boot in legacy mode, not EFI.
 > >  >
 > >  > asl dump available from http://llamapost.net/elitebook.asl
 > >
 > > If it cxomes to that ..
 > >
 > >  > Thanks a lot!
 > >  >
 > >  > Johannes
 > >
 > > Not much help, but I see noone else springing to your aid so far ..
 > Thanks either way!

No worries, but I've waded in over my head.  Hopefully the big kids will 
now rescue me and say something useful about your prospects with it.

cheers, Ian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20151216200852.S95820>