On Sat, Sep 16, 2017 at 02:07:47PM +0200, Matthieu Herrb wrote:
> On Sat, Sep 16, 2017 at 06:57:38PM +1000, Jonathan Gray wrote:
> > On Sat, Sep 16, 2017 at 10:03:58AM +0200, matth...@herrb.eu wrote:
> > > >Synopsis:        no CPU frequency scaling on Purism Librem 13v2
> > > >Category:        kern/amd64
> > > >Environment:
> > >   System      : OpenBSD 6.2
> > >   Details     : OpenBSD 6.2-beta (GENERIC.MP) #0: Fri Sep 15 23:36:30 
> > > CEST 2017
> > >                    matth...@librem.herrb.net:/usr/obj/GENERIC.MP
> > > 
> > >   Architecture: OpenBSD.amd64
> > >   Machine     : amd64
> > > >Description:
> > >   There is no hw.setperf sysctl available to control the CPU speed
> > > 
> > > >How-To-Repeat:
> > >   Try to use apmd -A to save some battery life
> > > >Fix:
> > >   unknown
> > 
> > If vendor supplied acpi tables neglect to include _PSS in the aml you
> > won't get different cpu speed states on anything more recent than
> > a pentium m.
> >
> Hi,
> 
> On PureOS (the Debian derivative shipped by Purism) it's the
> intel_pstate driver that is used to control the CPU core speeds.
> 
> Should I try to ask Purism  to provide the proper _PSS objects in
> their BIOS, or is there hope to get P states support at some point?

Given there is no _PSS or _CPC the alternative seems to be MSRs.
The ones related to hardware p states (HWP) available in broadwell
and later.

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20170303 (64-bit version)
 * Copyright (c) 2000 - 2017 Intel Corporation
 * 
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of SSDT.3, Sat Sep 16 23:19:18 2017
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x00000308 (776)
 *     Revision         0x02
 *     Checksum         0xEF
 *     OEM ID           "CORE  "
 *     OEM Table ID     "COREBOOT"
 *     OEM Revision     0x0000002A (42)
 *     Compiler ID      "CORE"
 *     Compiler Version 0x0000002A (42)
 */
DefinitionBlock ("", "SSDT", 2, "CORE  ", "COREBOOT", 0x0000002A)
{
    Device (CTBL)
    {
        Name (_HID, "BOOT0000")  // _HID: Hardware ID
        Name (_UID, Zero)  // _UID: Unique ID
        Method (_STA, 0, NotSerialized)  // _STA: Status
        {
            Return (0x0F)
        }

        Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
        {
            Memory32Fixed (ReadOnly,
                0x7AB8F000,         // Address Base
                0x00008000,         // Address Length
                )
        })
    }

    Processor (\_PR.CP00, 0x00, 0x00001800, 0x06)
    {
        Name (_CST, Package (0x04)  // _CST: C-States
        {
            0x00000003, 
            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000001, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000001, 
                0x00000000, 
                0x000003E8
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000010, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000002, 
                0x0000004F, 
                0x000001F4
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000033, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000003, 
                0x00000097, 
                0x000000C8
            }
        })
    }

    Processor (\_PR.CP01, 0x01, 0x00000000, 0x00)
    {
        Name (_CST, Package (0x04)  // _CST: C-States
        {
            0x00000003, 
            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000001, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000001, 
                0x00000000, 
                0x000003E8
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000010, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000002, 
                0x0000004F, 
                0x000001F4
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000033, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000003, 
                0x00000097, 
                0x000000C8
            }
        })
    }

    Processor (\_PR.CP02, 0x02, 0x00000000, 0x00)
    {
        Name (_CST, Package (0x04)  // _CST: C-States
        {
            0x00000003, 
            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000001, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000001, 
                0x00000000, 
                0x000003E8
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000010, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000002, 
                0x0000004F, 
                0x000001F4
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000033, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000003, 
                0x00000097, 
                0x000000C8
            }
        })
    }

    Processor (\_PR.CP03, 0x03, 0x00000000, 0x00)
    {
        Name (_CST, Package (0x04)  // _CST: C-States
        {
            0x00000003, 
            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000001, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000001, 
                0x00000000, 
                0x000003E8
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000010, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000002, 
                0x0000004F, 
                0x000001F4
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000033, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x00000003, 
                0x00000097, 
                0x000000C8
            }
        })
    }
}

Reply via email to