• Pratik R. Sampat's avatar
    powerpc/pseries: Interface to represent PAPR firmware attributes · 3c14b734
    Pratik R. Sampat authored
    Adds a syscall interface to represent the energy and frequency related
    PAPR attributes on the system using the new H_CALL
    "H_GET_ENERGY_SCALE_INFO".
    
    H_GET_EM_PARMS H_CALL was previously responsible for exporting this
    information in the lparcfg, however the H_GET_EM_PARMS H_CALL
    will be deprecated P10 onwards.
    
    The H_GET_ENERGY_SCALE_INFO H_CALL is of the following call format:
    hcall(
      uint64 H_GET_ENERGY_SCALE_INFO,  // Get energy scale info
      uint64 flags,           // Per the flag request
      uint64 firstAttributeId,// The attribute id
      uint64 bufferAddress,   // Guest physical address of the output buffer
      uint64 bufferSize       // The size in bytes of the output buffer
    );
    As specified in PAPR+ v2.11, section 14.14.3.
    
    This H_CALL can query either all the attributes at once with
    firstAttributeId = 0, flags = 0 as well as query only one attribute
    at a time with firstAttributeId = id, flags = 1.
    
    The output buffer consists of the following
    1. number of attributes              - 8 bytes
    2. array offset to the data location - 8 bytes
    3. version info                      - 1 byte
    4. A data array of size num attributes, which contains the following:
      a. attribute ID              - 8 bytes
      b. attribute value in number - 8 bytes
      c. attribute name in string  - 64 bytes
      d. attribute value in string - 64 bytes
    
    The new H_CALL exports information in direct string value format, hence
    a new interface has been introduced in
    /sys/firmware/papr/energy_scale_info to export this information to
    userspace so that the firmware can add new values without the need for
    the kernel to be changed.
    
    The H_CALL returns the name, numeric value and string value (if exists)
    
    The format of exposing the sysfs information is as follows:
    /sys/firmware/papr/energy_scale_info/
       |-- <id>/
         |-- desc
         |-- value
         |-- value_desc (if exists)
       |-- <id>/
         |-- desc
         |-- value
         |-- value_desc (if exists)
    ...
    
    The energy information that is exported is useful for userspace tools
    such as powerpc-utils. Currently these tools infer the
    "power_mode_data" value in the lparcfg, which in turn is obtained from
    the to be deprecated H_GET_EM_PARMS H_CALL.
    
    On future platforms, such userspace utilities will have to look at the
    data returned from the new H_CALL being populated in this new sysfs
    interface and report this information directly without the need of
    interpretation.
    Signed-off-by: default avatarPratik R. Sampat <psampat@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220217105321.52941-2-psampat@linux.ibm.com
    3c14b734
firmware.h 5.12 KB