- *** NOTE ***
- This document is copied from OPAL firmware
- (skiboot/doc/device-tree/ibm,powerpc-cpu-features/binding.txt)
- There is more complete overview and documentation of features in that
- source tree. All patches and modifications should go there.
- ************
- ibm,powerpc-cpu-features binding
- ================================
- This device tree binding describes CPU features available to software, with
- enablement, privilege, and compatibility metadata.
- More general description of design and implementation of this binding is
- found in design.txt, which also points to documentation of specific features.
- /cpus/ibm,powerpc-cpu-features node binding
- -------------------------------------------
- Node: ibm,powerpc-cpu-features
- Description: Container of CPU feature nodes.
- The node name must be "ibm,powerpc-cpu-features".
- It is implemented as a child of the node "/cpus", but this must not be
- assumed by parsers.
- The node is optional but should be provided by new OPAL firmware.
- Properties:
- - compatible
- Usage: required
- Value type: string
- Definition: "ibm,powerpc-cpu-features"
- This compatibility refers to backwards compatibility of the overall
- design with parsers that behave according to these guidelines. This can
- be extended in a backward compatible manner which would not warrant a
- revision of the compatible property.
- - isa
- Usage: required
- Value type: <u32>
- Definition:
- isa that the CPU is currently running in. This provides instruction set
- compatibility, less the individual feature nodes. For example, an ISA v3.0
- implementation that lacks the "transactional-memory" cpufeature node
- should not use transactional memory facilities.
- Value corresponds to the "Power ISA Version" multiplied by 1000.
- For example, <3000> corresponds to Version 3.0, <2070> to Version 2.07.
- The minor digit is available for revisions.
- - display-name
- Usage: optional
- Value type: string
- Definition:
- A human readable name for the CPU.
- /cpus/ibm,powerpc-cpu-features/example-feature node bindings
- ----------------------------------------------------------------
- Each child node of cpu-features represents a CPU feature / capability.
- Node: A string describing an architected CPU feature, e.g., "floating-point".
- Description: A feature or capability supported by the CPUs.
- The name of the node is a human readable string that forms the interface
- used to describe features to software. Features are currently documented
- in the code where they are implemented in skiboot/core/cpufeatures.c
- Presence of the node indicates the feature is available.
- Properties:
- - isa
- Usage: required
- Value type: <u32>
- Definition:
- First level of the Power ISA that the feature appears in.
- Software should filter out features when constraining the
- environment to a particular ISA version.
- Value is defined similarly to /cpus/features/isa
- - usable-privilege
- Usage: required
- Value type: <u32> bit mask
- Definition:
- Bit numbers are LSB0
- bit 0 - PR (problem state / user mode)
- bit 1 - OS (privileged state)
- bit 2 - HV (hypervisor state)
- All other bits reserved and should be zero.
- This property describes the privilege levels and/or software components
- that can use the feature.
- If bit 0 is set, then the hwcap-bit-nr property will exist.
- - hv-support
- Usage: optional
- Value type: <u32> bit mask
- Definition:
- Bit numbers are LSB0
- bit 0 - HFSCR
- All other bits reserved and should be zero.
- This property describes the HV privilege support required to enable the
- feature to lesser privilege levels. If the property does not exist then no
- support is required.
- If no bits are set, the hypervisor must have explicit/custom support for
- this feature.
- If the HFSCR bit is set, then the hfscr-bit-nr property will exist and
- the feature may be enabled by setting this bit in the HFSCR register.
- - os-support
- Usage: optional
- Value type: <u32> bit mask
- Definition:
- Bit numbers are LSB0
- bit 0 - FSCR
- All other bits reserved and should be zero.
- This property describes the OS privilege support required to enable the
- feature to lesser privilege levels. If the property does not exist then no
- support is required.
- If no bits are set, the operating system must have explicit/custom support
- for this feature.
- If the FSCR bit is set, then the fscr-bit-nr property will exist and
- the feature may be enabled by setting this bit in the FSCR register.
- - hfscr-bit-nr
- Usage: optional
- Value type: <u32>
- Definition: HFSCR bit position (LSB0)
- This property exists when the hv-support property HFSCR bit is set. This
- property describes the bit number in the HFSCR register that the
- hypervisor must set in order to enable this feature.
- This property also exists if an HFSCR bit corresponds with this feature.
- This makes CPU feature parsing slightly simpler.
- - fscr-bit-nr
- Usage: optional
- Value type: <u32>
- Definition: FSCR bit position (LSB0)
- This property exists when the os-support property FSCR bit is set. This
- property describes the bit number in the FSCR register that the
- operating system must set in order to enable this feature.
- This property also exists if an FSCR bit corresponds with this feature.
- This makes CPU feature parsing slightly simpler.
- - hwcap-bit-nr
- Usage: optional
- Value type: <u32>
- Definition: Linux ELF AUX vector bit position (LSB0)
- This property may exist when the usable-privilege property value has PR bit set.
- This property describes the bit number that should be set in the ELF AUX
- hardware capability vectors in order to advertise this feature to userspace.
- Bits 0-31 correspond to bits 0-31 in AT_HWCAP vector. Bits 32-63 correspond
- to 0-31 in AT_HWCAP2 vector, and so on. Missing AT_HWCAPx vectors implies
- that the feature is not enabled or can not be advertised. Operating systems
- may provide a number of unassigned hardware capability bits to allow for new
- features to be advertised.
- Some properties representing features created before this binding are
- advertised to userspace without a one-to-one hwcap bit number may not specify
- this bit. Operating system will handle those bits specifically. All new
- features usable by userspace will have a hwcap-bit-nr property.
- - dependencies
- Usage: optional
- Value type: <prop-encoded-array>
- Definition:
- If this property exists then it is a list of phandles to cpu feature
- nodes that must be enabled for this feature to be enabled.
- Example
- -------
- /cpus/ibm,powerpc-cpu-features {
- compatible = "ibm,powerpc-cpu-features";
- isa = <3020>;
- darn {
- isa = <3000>;
- usable-privilege = <1 | 2 | 4>;
- hwcap-bit-nr = <xx>;
- };
- scv {
- isa = <3000>;
- usable-privilege = <1 | 2>;
- os-support = <0>;
- hwcap-bit-nr = <xx>;
- };
- stop {
- isa = <3000>;
- usable-privilege = <2 | 4>;
- hv-support = <0>;
- os-support = <0>;
- };
- vsx2 (hypothetical) {
- isa = <3010>;
- usable-privilege = <1 | 2 | 4>;
- hv-support = <0>;
- os-support = <0>;
- hwcap-bit-nr = <xx>;
- };
- vsx2-newinsns {
- isa = <3020>;
- usable-privilege = <1 | 2 | 4>;
- os-support = <1>;
- fscr-bit-nr = <xx>;
- hwcap-bit-nr = <xx>;
- dependencies = <&vsx2>;
- };
- };
Raw Paste