mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-20 03:04:01 +08:00
Linux 5.6-rc5
-----BEGIN PGP SIGNATURE----- iQFSBAABCAA8FiEEq68RxlopcLEwq+PEeb4+QwBBGIYFAl5lkYceHHRvcnZhbGRz QGxpbnV4LWZvdW5kYXRpb24ub3JnAAoJEHm+PkMAQRiGpHQH/RJrzcaZHo4lw88m Jf7vBZ9DYUlRgqE0pxTHWmodNObKRqpwOUGflUcWbb/7GD2LQUfeqhSECVQyTID9 N9y7FcPvx321Qhc3EkZ24DBYk0+DQ0K2FVUrSa/PxO0n7czxxXWaLRDmlSULEd3R D4pVs3zEWOBXJHUAvUQ5R+lKfkeWKNeeepeh+rezuhpdWFBRNz4Jjr5QUJ8od5xI sIwobYmESJqTRVBHqW8g2T2/yIsFJ78GCXs8DZLe1wxh40UbxdYDTA0NDDTHKzK6 lxzBgcmKzuge+1OVmzxLouNWMnPcjFlVgXWVerpSy3/SIFFkzzUWeMbqm6hKuhOn wAlcIgI= =VQUc -----END PGP SIGNATURE----- gpgsig -----BEGIN PGP SIGNATURE----- iQFHBAABCgAxFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAl5pMckTHGJyb29uaWVA a2VybmVsLm9yZwAKCRAk1otyXVSH0JSaB/0dQ534mBfgkuR5JCOBU53pfcuSGoqM Ya+KepVKdGSIazXuuHRNaFeI3jJxiuiKJ7ar77lxxBSeerhMuLy5EAAH5Pm2f7TL XfevQ0VmptN8BKqZBRhIfdRAeXNDP04/R9bWK9wBk+J18A3mem1tMFkBwOYYS02f OgvsyUwDEsau6hTBBOiK3qyQgGPMOoCKHmX7ZQlNcaRYJzPwXqH+hQpnDbBRw+v/ lW/+vVOa/NamWSXZogHQWuF1FqERY2AqWqDpDgoA0nLBwEis+Jte8gzCQxuNx6pd L0D5IJItvpWGM+bkDrg/dFHQRp4KlbX9G+cMU/ScGuBh0E4KBYT/17lk =CIkj -----END PGP SIGNATURE----- Merge tag 'v5.6-rc5' into asoc-5.7 Linux 5.6-rc5
This commit is contained in:
commit
4d90a4e677
2
COPYING
2
COPYING
@ -16,3 +16,5 @@ In addition, other licenses may also apply. Please see:
|
|||||||
Documentation/process/license-rules.rst
|
Documentation/process/license-rules.rst
|
||||||
|
|
||||||
for more details.
|
for more details.
|
||||||
|
|
||||||
|
All contributions to the Linux Kernel are subject to this COPYING file.
|
||||||
|
5
CREDITS
5
CREDITS
@ -567,6 +567,11 @@ D: Original author of Amiga FFS filesystem
|
|||||||
S: Orlando, Florida
|
S: Orlando, Florida
|
||||||
S: USA
|
S: USA
|
||||||
|
|
||||||
|
N: Paul Burton
|
||||||
|
E: paulburton@kernel.org
|
||||||
|
W: https://pburton.com
|
||||||
|
D: MIPS maintainer 2018-2020
|
||||||
|
|
||||||
N: Lennert Buytenhek
|
N: Lennert Buytenhek
|
||||||
E: kernel@wantstofly.org
|
E: kernel@wantstofly.org
|
||||||
D: Original (2.4) rewrite of the ethernet bridging code
|
D: Original (2.4) rewrite of the ethernet bridging code
|
||||||
|
@ -18,7 +18,7 @@ may look as follows::
|
|||||||
|
|
||||||
$ ls -l /sys/bus/acpi/devices/INT3404:00/
|
$ ls -l /sys/bus/acpi/devices/INT3404:00/
|
||||||
total 0
|
total 0
|
||||||
...
|
...
|
||||||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state0
|
-r--r--r-- 1 root root 4096 Dec 13 20:38 state0
|
||||||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state1
|
-r--r--r-- 1 root root 4096 Dec 13 20:38 state1
|
||||||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state10
|
-r--r--r-- 1 root root 4096 Dec 13 20:38 state10
|
||||||
@ -38,7 +38,7 @@ where each of the "state*" files represents one performance state of the fan
|
|||||||
and contains a colon-separated list of 5 integer numbers (fields) with the
|
and contains a colon-separated list of 5 integer numbers (fields) with the
|
||||||
following interpretation::
|
following interpretation::
|
||||||
|
|
||||||
control_percent:trip_point_index:speed_rpm:noise_level_mdb:power_mw
|
control_percent:trip_point_index:speed_rpm:noise_level_mdb:power_mw
|
||||||
|
|
||||||
* ``control_percent``: The percent value to be used to set the fan speed to a
|
* ``control_percent``: The percent value to be used to set the fan speed to a
|
||||||
specific level using the _FSL object (0-100).
|
specific level using the _FSL object (0-100).
|
||||||
|
@ -62,6 +62,30 @@ Or more shorter, written as following::
|
|||||||
In both styles, same key words are automatically merged when parsing it
|
In both styles, same key words are automatically merged when parsing it
|
||||||
at boot time. So you can append similar trees or key-values.
|
at boot time. So you can append similar trees or key-values.
|
||||||
|
|
||||||
|
Same-key Values
|
||||||
|
---------------
|
||||||
|
|
||||||
|
It is prohibited that two or more values or arrays share a same-key.
|
||||||
|
For example,::
|
||||||
|
|
||||||
|
foo = bar, baz
|
||||||
|
foo = qux # !ERROR! we can not re-define same key
|
||||||
|
|
||||||
|
If you want to append the value to existing key as an array member,
|
||||||
|
you can use ``+=`` operator. For example::
|
||||||
|
|
||||||
|
foo = bar, baz
|
||||||
|
foo += qux
|
||||||
|
|
||||||
|
In this case, the key ``foo`` has ``bar``, ``baz`` and ``qux``.
|
||||||
|
|
||||||
|
However, a sub-key and a value can not co-exist under a parent key.
|
||||||
|
For example, following config is NOT allowed.::
|
||||||
|
|
||||||
|
foo = value1
|
||||||
|
foo.bar = value2 # !ERROR! subkey "bar" and value "value1" can NOT co-exist
|
||||||
|
|
||||||
|
|
||||||
Comments
|
Comments
|
||||||
--------
|
--------
|
||||||
|
|
||||||
@ -102,9 +126,13 @@ Boot Kernel With a Boot Config
|
|||||||
==============================
|
==============================
|
||||||
|
|
||||||
Since the boot configuration file is loaded with initrd, it will be added
|
Since the boot configuration file is loaded with initrd, it will be added
|
||||||
to the end of the initrd (initramfs) image file. The Linux kernel decodes
|
to the end of the initrd (initramfs) image file with size, checksum and
|
||||||
the last part of the initrd image in memory to get the boot configuration
|
12-byte magic word as below.
|
||||||
data.
|
|
||||||
|
[initrd][bootconfig][size(u32)][checksum(u32)][#BOOTCONFIG\n]
|
||||||
|
|
||||||
|
The Linux kernel decodes the last part of the initrd image in memory to
|
||||||
|
get the boot configuration data.
|
||||||
Because of this "piggyback" method, there is no need to change or
|
Because of this "piggyback" method, there is no need to change or
|
||||||
update the boot loader and the kernel image itself.
|
update the boot loader and the kernel image itself.
|
||||||
|
|
||||||
|
@ -136,6 +136,10 @@
|
|||||||
dynamic table installation which will install SSDT
|
dynamic table installation which will install SSDT
|
||||||
tables to /sys/firmware/acpi/tables/dynamic.
|
tables to /sys/firmware/acpi/tables/dynamic.
|
||||||
|
|
||||||
|
acpi_no_watchdog [HW,ACPI,WDT]
|
||||||
|
Ignore the ACPI-based watchdog interface (WDAT) and let
|
||||||
|
a native driver control the watchdog device instead.
|
||||||
|
|
||||||
acpi_rsdp= [ACPI,EFI,KEXEC]
|
acpi_rsdp= [ACPI,EFI,KEXEC]
|
||||||
Pass the RSDP address to the kernel, mostly used
|
Pass the RSDP address to the kernel, mostly used
|
||||||
on machines running EFI runtime service to boot the
|
on machines running EFI runtime service to boot the
|
||||||
|
@ -129,7 +129,7 @@ this logic.
|
|||||||
|
|
||||||
As a single binary will need to support both 48-bit and 52-bit VA
|
As a single binary will need to support both 48-bit and 52-bit VA
|
||||||
spaces, the VMEMMAP must be sized large enough for 52-bit VAs and
|
spaces, the VMEMMAP must be sized large enough for 52-bit VAs and
|
||||||
also must be sized large enought to accommodate a fixed PAGE_OFFSET.
|
also must be sized large enough to accommodate a fixed PAGE_OFFSET.
|
||||||
|
|
||||||
Most code in the kernel should not need to consider the VA_BITS, for
|
Most code in the kernel should not need to consider the VA_BITS, for
|
||||||
code that does need to know the VA size the variables are
|
code that does need to know the VA size the variables are
|
||||||
|
@ -44,8 +44,15 @@ The AArch64 Tagged Address ABI has two stages of relaxation depending
|
|||||||
how the user addresses are used by the kernel:
|
how the user addresses are used by the kernel:
|
||||||
|
|
||||||
1. User addresses not accessed by the kernel but used for address space
|
1. User addresses not accessed by the kernel but used for address space
|
||||||
management (e.g. ``mmap()``, ``mprotect()``, ``madvise()``). The use
|
management (e.g. ``mprotect()``, ``madvise()``). The use of valid
|
||||||
of valid tagged pointers in this context is always allowed.
|
tagged pointers in this context is allowed with the exception of
|
||||||
|
``brk()``, ``mmap()`` and the ``new_address`` argument to
|
||||||
|
``mremap()`` as these have the potential to alias with existing
|
||||||
|
user addresses.
|
||||||
|
|
||||||
|
NOTE: This behaviour changed in v5.6 and so some earlier kernels may
|
||||||
|
incorrectly accept valid tagged pointers for the ``brk()``,
|
||||||
|
``mmap()`` and ``mremap()`` system calls.
|
||||||
|
|
||||||
2. User addresses accessed by the kernel (e.g. ``write()``). This ABI
|
2. User addresses accessed by the kernel (e.g. ``write()``). This ABI
|
||||||
relaxation is disabled by default and the application thread needs to
|
relaxation is disabled by default and the application thread needs to
|
||||||
|
@ -551,6 +551,7 @@ options to your ``.config``:
|
|||||||
Once the kernel is built and installed, a simple
|
Once the kernel is built and installed, a simple
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
modprobe example-test
|
modprobe example-test
|
||||||
|
|
||||||
...will run the tests.
|
...will run the tests.
|
||||||
|
@ -102,7 +102,7 @@ Required sub-node properties:
|
|||||||
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
|
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||||
[2] Documentation/devicetree/bindings/power/power-domain.yaml
|
[2] Documentation/devicetree/bindings/power/power-domain.yaml
|
||||||
[3] Documentation/devicetree/bindings/thermal/thermal.txt
|
[3] Documentation/devicetree/bindings/thermal/thermal.txt
|
||||||
[4] Documentation/devicetree/bindings/sram/sram.txt
|
[4] Documentation/devicetree/bindings/sram/sram.yaml
|
||||||
[5] Documentation/devicetree/bindings/reset/reset.txt
|
[5] Documentation/devicetree/bindings/reset/reset.txt
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
@ -109,7 +109,7 @@ Required properties:
|
|||||||
[0] http://infocenter.arm.com/help/topic/com.arm.doc.dui0922b/index.html
|
[0] http://infocenter.arm.com/help/topic/com.arm.doc.dui0922b/index.html
|
||||||
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
|
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||||
[2] Documentation/devicetree/bindings/thermal/thermal.txt
|
[2] Documentation/devicetree/bindings/thermal/thermal.txt
|
||||||
[3] Documentation/devicetree/bindings/sram/sram.txt
|
[3] Documentation/devicetree/bindings/sram/sram.yaml
|
||||||
[4] Documentation/devicetree/bindings/power/power-domain.yaml
|
[4] Documentation/devicetree/bindings/power/power-domain.yaml
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
@ -62,7 +62,7 @@ Timer node:
|
|||||||
|
|
||||||
Syscon reboot node:
|
Syscon reboot node:
|
||||||
|
|
||||||
See Documentation/devicetree/bindings/power/reset/syscon-reboot.txt for the
|
See Documentation/devicetree/bindings/power/reset/syscon-reboot.yaml for the
|
||||||
detailed list of properties, the two values defined below are specific to the
|
detailed list of properties, the two values defined below are specific to the
|
||||||
BCM6328-style timer:
|
BCM6328-style timer:
|
||||||
|
|
||||||
|
@ -216,7 +216,7 @@ properties:
|
|||||||
$ref: '/schemas/types.yaml#/definitions/phandle-array'
|
$ref: '/schemas/types.yaml#/definitions/phandle-array'
|
||||||
description: |
|
description: |
|
||||||
List of phandles to idle state nodes supported
|
List of phandles to idle state nodes supported
|
||||||
by this cpu (see ./idle-states.txt).
|
by this cpu (see ./idle-states.yaml).
|
||||||
|
|
||||||
capacity-dmips-mhz:
|
capacity-dmips-mhz:
|
||||||
$ref: '/schemas/types.yaml#/definitions/uint32'
|
$ref: '/schemas/types.yaml#/definitions/uint32'
|
||||||
|
@ -160,7 +160,7 @@ properties:
|
|||||||
items:
|
items:
|
||||||
- enum:
|
- enum:
|
||||||
- armadeus,imx6dl-apf6 # APF6 (Solo) SoM
|
- armadeus,imx6dl-apf6 # APF6 (Solo) SoM
|
||||||
- armadeus,imx6dl-apf6dldev # APF6 (Solo) SoM on APF6Dev board
|
- armadeus,imx6dl-apf6dev # APF6 (Solo) SoM on APF6Dev board
|
||||||
- eckelmann,imx6dl-ci4x10
|
- eckelmann,imx6dl-ci4x10
|
||||||
- emtrion,emcon-mx6 # emCON-MX6S or emCON-MX6DL SoM
|
- emtrion,emcon-mx6 # emCON-MX6S or emCON-MX6DL SoM
|
||||||
- emtrion,emcon-mx6-avari # emCON-MX6S or emCON-MX6DL SoM on Avari Base
|
- emtrion,emcon-mx6-avari # emCON-MX6S or emCON-MX6DL SoM on Avari Base
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
* Hisilicon Hi3519 System Controller Block
|
* Hisilicon Hi3519 System Controller Block
|
||||||
|
|
||||||
This bindings use the following binding:
|
This bindings use the following binding:
|
||||||
Documentation/devicetree/bindings/mfd/syscon.txt
|
Documentation/devicetree/bindings/mfd/syscon.yaml
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: "hisilicon,hi3519-sysctrl".
|
- compatible: "hisilicon,hi3519-sysctrl".
|
||||||
|
@ -81,4 +81,4 @@ Example:
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
[1]. Documentation/devicetree/bindings/arm/idle-states.txt
|
[1]. Documentation/devicetree/bindings/arm/idle-states.yaml
|
||||||
|
@ -17,7 +17,7 @@ am335x and am437x only:
|
|||||||
- pm-sram: Phandles to ocmcram nodes to be used for power management.
|
- pm-sram: Phandles to ocmcram nodes to be used for power management.
|
||||||
First should be type 'protect-exec' for the driver to use to copy
|
First should be type 'protect-exec' for the driver to use to copy
|
||||||
and run PM functions, second should be regular pool to be used for
|
and run PM functions, second should be regular pool to be used for
|
||||||
data region for code. See Documentation/devicetree/bindings/sram/sram.txt
|
data region for code. See Documentation/devicetree/bindings/sram/sram.yaml
|
||||||
for more details.
|
for more details.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
@ -100,13 +100,14 @@ properties:
|
|||||||
bindings in [1]) must specify this property.
|
bindings in [1]) must specify this property.
|
||||||
|
|
||||||
[1] Kernel documentation - ARM idle states bindings
|
[1] Kernel documentation - ARM idle states bindings
|
||||||
Documentation/devicetree/bindings/arm/idle-states.txt
|
Documentation/devicetree/bindings/arm/idle-states.yaml
|
||||||
|
|
||||||
"#power-domain-cells":
|
|
||||||
description:
|
|
||||||
The number of cells in a PM domain specifier as per binding in [3].
|
|
||||||
Must be 0 as to represent a single PM domain.
|
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
"^power-domain-":
|
||||||
|
allOf:
|
||||||
|
- $ref: "../power/power-domain.yaml#"
|
||||||
|
type: object
|
||||||
|
description: |
|
||||||
ARM systems can have multiple cores, sometimes in an hierarchical
|
ARM systems can have multiple cores, sometimes in an hierarchical
|
||||||
arrangement. This often, but not always, maps directly to the processor
|
arrangement. This often, but not always, maps directly to the processor
|
||||||
power topology of the system. Individual nodes in a topology have their
|
power topology of the system. Individual nodes in a topology have their
|
||||||
@ -122,14 +123,8 @@ properties:
|
|||||||
helps to implement support for OSI mode and OS implementations may choose
|
helps to implement support for OSI mode and OS implementations may choose
|
||||||
to mandate it.
|
to mandate it.
|
||||||
|
|
||||||
[3] Documentation/devicetree/bindings/power/power_domain.txt
|
[3] Documentation/devicetree/bindings/power/power-domain.yaml
|
||||||
[4] Documentation/devicetree/bindings/power/domain-idle-state.txt
|
[4] Documentation/devicetree/bindings/power/domain-idle-state.yaml
|
||||||
|
|
||||||
power-domains:
|
|
||||||
$ref: '/schemas/types.yaml#/definitions/phandle-array'
|
|
||||||
description:
|
|
||||||
List of phandles and PM domain specifiers, as defined by bindings of the
|
|
||||||
PM domain provider.
|
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
@ -199,7 +194,7 @@ examples:
|
|||||||
|
|
||||||
CPU0: cpu@0 {
|
CPU0: cpu@0 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a53", "arm,armv8";
|
compatible = "arm,cortex-a53";
|
||||||
reg = <0x0>;
|
reg = <0x0>;
|
||||||
enable-method = "psci";
|
enable-method = "psci";
|
||||||
power-domains = <&CPU_PD0>;
|
power-domains = <&CPU_PD0>;
|
||||||
@ -208,7 +203,7 @@ examples:
|
|||||||
|
|
||||||
CPU1: cpu@1 {
|
CPU1: cpu@1 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a57", "arm,armv8";
|
compatible = "arm,cortex-a53";
|
||||||
reg = <0x100>;
|
reg = <0x100>;
|
||||||
enable-method = "psci";
|
enable-method = "psci";
|
||||||
power-domains = <&CPU_PD1>;
|
power-domains = <&CPU_PD1>;
|
||||||
@ -224,6 +219,9 @@ examples:
|
|||||||
exit-latency-us = <10>;
|
exit-latency-us = <10>;
|
||||||
min-residency-us = <100>;
|
min-residency-us = <100>;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
domain-idle-states {
|
||||||
|
|
||||||
CLUSTER_RET: cluster-retention {
|
CLUSTER_RET: cluster-retention {
|
||||||
compatible = "domain-idle-state";
|
compatible = "domain-idle-state";
|
||||||
@ -247,19 +245,19 @@ examples:
|
|||||||
compatible = "arm,psci-1.0";
|
compatible = "arm,psci-1.0";
|
||||||
method = "smc";
|
method = "smc";
|
||||||
|
|
||||||
CPU_PD0: cpu-pd0 {
|
CPU_PD0: power-domain-cpu0 {
|
||||||
#power-domain-cells = <0>;
|
#power-domain-cells = <0>;
|
||||||
domain-idle-states = <&CPU_PWRDN>;
|
domain-idle-states = <&CPU_PWRDN>;
|
||||||
power-domains = <&CLUSTER_PD>;
|
power-domains = <&CLUSTER_PD>;
|
||||||
};
|
};
|
||||||
|
|
||||||
CPU_PD1: cpu-pd1 {
|
CPU_PD1: power-domain-cpu1 {
|
||||||
#power-domain-cells = <0>;
|
#power-domain-cells = <0>;
|
||||||
domain-idle-states = <&CPU_PWRDN>;
|
domain-idle-states = <&CPU_PWRDN>;
|
||||||
power-domains = <&CLUSTER_PD>;
|
power-domains = <&CLUSTER_PD>;
|
||||||
};
|
};
|
||||||
|
|
||||||
CLUSTER_PD: cluster-pd {
|
CLUSTER_PD: power-domain-cluster {
|
||||||
#power-domain-cells = <0>;
|
#power-domain-cells = <0>;
|
||||||
domain-idle-states = <&CLUSTER_RET>, <&CLUSTER_PWRDN>;
|
domain-idle-states = <&CLUSTER_RET>, <&CLUSTER_PWRDN>;
|
||||||
};
|
};
|
||||||
|
@ -52,7 +52,7 @@ required:
|
|||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
mlahb: ahb {
|
mlahb: ahb@38000000 {
|
||||||
compatible = "st,mlahb", "simple-bus";
|
compatible = "st,mlahb", "simple-bus";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
@ -70,7 +70,6 @@ examples:
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
pmic@3e3 {
|
pmic@3e3 {
|
||||||
compatible = "...";
|
|
||||||
reg = <0x3e3>;
|
reg = <0x3e3>;
|
||||||
|
|
||||||
/* ... */
|
/* ... */
|
||||||
|
@ -40,7 +40,7 @@ additionalProperties: false
|
|||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
osc24M: clk@01c20050 {
|
osc24M: clk@1c20050 {
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "allwinner,sun4i-a10-osc-clk";
|
compatible = "allwinner,sun4i-a10-osc-clk";
|
||||||
reg = <0x01c20050 0x4>;
|
reg = <0x01c20050 0x4>;
|
||||||
|
@ -41,7 +41,7 @@ additionalProperties: false
|
|||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
clk@0600005c {
|
clk@600005c {
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "allwinner,sun9i-a80-gt-clk";
|
compatible = "allwinner,sun9i-a80-gt-clk";
|
||||||
reg = <0x0600005c 0x4>;
|
reg = <0x0600005c 0x4>;
|
||||||
|
@ -42,7 +42,7 @@ properties:
|
|||||||
be part of GCC and hence the TSENS properties can also be part
|
be part of GCC and hence the TSENS properties can also be part
|
||||||
of the GCC/clock-controller node.
|
of the GCC/clock-controller node.
|
||||||
For more details on the TSENS properties please refer
|
For more details on the TSENS properties please refer
|
||||||
Documentation/devicetree/bindings/thermal/qcom-tsens.txt
|
Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
|
||||||
|
|
||||||
nvmem-cell-names:
|
nvmem-cell-names:
|
||||||
minItems: 1
|
minItems: 1
|
||||||
|
@ -43,9 +43,13 @@ properties:
|
|||||||
- enum:
|
- enum:
|
||||||
- allwinner,sun8i-h3-tcon-tv
|
- allwinner,sun8i-h3-tcon-tv
|
||||||
- allwinner,sun50i-a64-tcon-tv
|
- allwinner,sun50i-a64-tcon-tv
|
||||||
- allwinner,sun50i-h6-tcon-tv
|
|
||||||
- const: allwinner,sun8i-a83t-tcon-tv
|
- const: allwinner,sun8i-a83t-tcon-tv
|
||||||
|
|
||||||
|
- items:
|
||||||
|
- enum:
|
||||||
|
- allwinner,sun50i-h6-tcon-tv
|
||||||
|
- const: allwinner,sun8i-r40-tcon-tv
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
|
@ -49,11 +49,7 @@ examples:
|
|||||||
resets = <&tcon_ch0_clk 0>;
|
resets = <&tcon_ch0_clk 0>;
|
||||||
|
|
||||||
port {
|
port {
|
||||||
#address-cells = <1>;
|
tve0_in_tcon0: endpoint {
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
tve0_in_tcon0: endpoint@0 {
|
|
||||||
reg = <0>;
|
|
||||||
remote-endpoint = <&tcon0_out_tve0>;
|
remote-endpoint = <&tcon0_out_tve0>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -79,21 +79,15 @@ examples:
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
anx6345_in: port@0 {
|
anx6345_in: port@0 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
anx6345_in_tcon0: endpoint@0 {
|
anx6345_in_tcon0: endpoint {
|
||||||
reg = <0>;
|
|
||||||
remote-endpoint = <&tcon0_out_anx6345>;
|
remote-endpoint = <&tcon0_out_anx6345>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
anx6345_out: port@1 {
|
anx6345_out: port@1 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
anx6345_out_panel: endpoint@0 {
|
anx6345_out_panel: endpoint {
|
||||||
reg = <0>;
|
|
||||||
remote-endpoint = <&panel_in_edp>;
|
remote-endpoint = <&panel_in_edp>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -37,6 +37,8 @@ examples:
|
|||||||
dsi@ff450000 {
|
dsi@ff450000 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
reg = <0xff450000 0x1000>;
|
||||||
|
|
||||||
panel@0 {
|
panel@0 {
|
||||||
compatible = "leadtek,ltk500hd1829";
|
compatible = "leadtek,ltk500hd1829";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
@ -37,6 +37,8 @@ examples:
|
|||||||
dsi@ff450000 {
|
dsi@ff450000 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
reg = <0xff450000 0x1000>;
|
||||||
|
|
||||||
panel@0 {
|
panel@0 {
|
||||||
compatible = "xinpeng,xpp055c272";
|
compatible = "xinpeng,xpp055c272";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
@ -174,10 +174,6 @@ examples:
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
soc@1c00000 {
|
lcdc0: lcdc { };
|
||||||
lcdc0: lcdc@1c0c000 {
|
|
||||||
compatible = "allwinner,sun4i-a10-lcdc";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
...
|
...
|
||||||
|
@ -37,7 +37,7 @@ Optional nodes:
|
|||||||
supports a single port with a single endpoint.
|
supports a single port with a single endpoint.
|
||||||
|
|
||||||
- See also Documentation/devicetree/bindings/display/tilcdc/panel.txt and
|
- See also Documentation/devicetree/bindings/display/tilcdc/panel.txt and
|
||||||
Documentation/devicetree/bindings/display/tilcdc/tfp410.txt for connecting
|
Documentation/devicetree/bindings/display/bridge/ti,tfp410.txt for connecting
|
||||||
tfp410 DVI encoder or lcd panel to lcdc
|
tfp410 DVI encoder or lcd panel to lcdc
|
||||||
|
|
||||||
[1] There is an errata about AM335x color wiring. For 16-bit color mode
|
[1] There is an errata about AM335x color wiring. For 16-bit color mode
|
||||||
|
@ -143,7 +143,7 @@ examples:
|
|||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
dma-coherent;
|
dma-coherent;
|
||||||
dma-ranges;
|
dma-ranges;
|
||||||
ranges;
|
ranges = <0x0 0x30800000 0x0 0x30800000 0x0 0x05000000>;
|
||||||
|
|
||||||
ti,sci-dev-id = <118>;
|
ti,sci-dev-id = <118>;
|
||||||
|
|
||||||
@ -169,16 +169,4 @@ examples:
|
|||||||
ti,sci-rm-range-rflow = <0x6>; /* GP RFLOW */
|
ti,sci-rm-range-rflow = <0x6>; /* GP RFLOW */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mcasp0: mcasp@02B00000 {
|
|
||||||
dmas = <&main_udmap 0xc400>, <&main_udmap 0x4400>;
|
|
||||||
dma-names = "tx", "rx";
|
|
||||||
};
|
|
||||||
|
|
||||||
crypto: crypto@4E00000 {
|
|
||||||
compatible = "ti,sa2ul-crypto";
|
|
||||||
|
|
||||||
dmas = <&main_udmap 0xc000>, <&main_udmap 0x4000>, <&main_udmap 0x4001>;
|
|
||||||
dma-names = "tx", "rx1", "rx2";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
@ -84,31 +84,31 @@ examples:
|
|||||||
gpu_opp_table: opp_table0 {
|
gpu_opp_table: opp_table0 {
|
||||||
compatible = "operating-points-v2";
|
compatible = "operating-points-v2";
|
||||||
|
|
||||||
opp@533000000 {
|
opp-533000000 {
|
||||||
opp-hz = /bits/ 64 <533000000>;
|
opp-hz = /bits/ 64 <533000000>;
|
||||||
opp-microvolt = <1250000>;
|
opp-microvolt = <1250000>;
|
||||||
};
|
};
|
||||||
opp@450000000 {
|
opp-450000000 {
|
||||||
opp-hz = /bits/ 64 <450000000>;
|
opp-hz = /bits/ 64 <450000000>;
|
||||||
opp-microvolt = <1150000>;
|
opp-microvolt = <1150000>;
|
||||||
};
|
};
|
||||||
opp@400000000 {
|
opp-400000000 {
|
||||||
opp-hz = /bits/ 64 <400000000>;
|
opp-hz = /bits/ 64 <400000000>;
|
||||||
opp-microvolt = <1125000>;
|
opp-microvolt = <1125000>;
|
||||||
};
|
};
|
||||||
opp@350000000 {
|
opp-350000000 {
|
||||||
opp-hz = /bits/ 64 <350000000>;
|
opp-hz = /bits/ 64 <350000000>;
|
||||||
opp-microvolt = <1075000>;
|
opp-microvolt = <1075000>;
|
||||||
};
|
};
|
||||||
opp@266000000 {
|
opp-266000000 {
|
||||||
opp-hz = /bits/ 64 <266000000>;
|
opp-hz = /bits/ 64 <266000000>;
|
||||||
opp-microvolt = <1025000>;
|
opp-microvolt = <1025000>;
|
||||||
};
|
};
|
||||||
opp@160000000 {
|
opp-160000000 {
|
||||||
opp-hz = /bits/ 64 <160000000>;
|
opp-hz = /bits/ 64 <160000000>;
|
||||||
opp-microvolt = <925000>;
|
opp-microvolt = <925000>;
|
||||||
};
|
};
|
||||||
opp@100000000 {
|
opp-100000000 {
|
||||||
opp-hz = /bits/ 64 <100000000>;
|
opp-hz = /bits/ 64 <100000000>;
|
||||||
opp-microvolt = <912500>;
|
opp-microvolt = <912500>;
|
||||||
};
|
};
|
||||||
|
@ -138,31 +138,31 @@ examples:
|
|||||||
gpu_opp_table: opp_table0 {
|
gpu_opp_table: opp_table0 {
|
||||||
compatible = "operating-points-v2";
|
compatible = "operating-points-v2";
|
||||||
|
|
||||||
opp@533000000 {
|
opp-533000000 {
|
||||||
opp-hz = /bits/ 64 <533000000>;
|
opp-hz = /bits/ 64 <533000000>;
|
||||||
opp-microvolt = <1250000>;
|
opp-microvolt = <1250000>;
|
||||||
};
|
};
|
||||||
opp@450000000 {
|
opp-450000000 {
|
||||||
opp-hz = /bits/ 64 <450000000>;
|
opp-hz = /bits/ 64 <450000000>;
|
||||||
opp-microvolt = <1150000>;
|
opp-microvolt = <1150000>;
|
||||||
};
|
};
|
||||||
opp@400000000 {
|
opp-400000000 {
|
||||||
opp-hz = /bits/ 64 <400000000>;
|
opp-hz = /bits/ 64 <400000000>;
|
||||||
opp-microvolt = <1125000>;
|
opp-microvolt = <1125000>;
|
||||||
};
|
};
|
||||||
opp@350000000 {
|
opp-350000000 {
|
||||||
opp-hz = /bits/ 64 <350000000>;
|
opp-hz = /bits/ 64 <350000000>;
|
||||||
opp-microvolt = <1075000>;
|
opp-microvolt = <1075000>;
|
||||||
};
|
};
|
||||||
opp@266000000 {
|
opp-266000000 {
|
||||||
opp-hz = /bits/ 64 <266000000>;
|
opp-hz = /bits/ 64 <266000000>;
|
||||||
opp-microvolt = <1025000>;
|
opp-microvolt = <1025000>;
|
||||||
};
|
};
|
||||||
opp@160000000 {
|
opp-160000000 {
|
||||||
opp-hz = /bits/ 64 <160000000>;
|
opp-hz = /bits/ 64 <160000000>;
|
||||||
opp-microvolt = <925000>;
|
opp-microvolt = <925000>;
|
||||||
};
|
};
|
||||||
opp@100000000 {
|
opp-100000000 {
|
||||||
opp-hz = /bits/ 64 <100000000>;
|
opp-hz = /bits/ 64 <100000000>;
|
||||||
opp-microvolt = <912500>;
|
opp-microvolt = <912500>;
|
||||||
};
|
};
|
||||||
|
@ -123,7 +123,7 @@ examples:
|
|||||||
samsung,syscon-phandle = <&pmu_system_controller>;
|
samsung,syscon-phandle = <&pmu_system_controller>;
|
||||||
|
|
||||||
/* NTC thermistor is a hwmon device */
|
/* NTC thermistor is a hwmon device */
|
||||||
ncp15wb473@0 {
|
ncp15wb473 {
|
||||||
compatible = "murata,ncp15wb473";
|
compatible = "murata,ncp15wb473";
|
||||||
pullup-uv = <1800000>;
|
pullup-uv = <1800000>;
|
||||||
pullup-ohm = <47000>;
|
pullup-ohm = <47000>;
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
Ilitek ILI210x/ILI2117/ILI251x touchscreen controller
|
Ilitek ILI210x/ILI2117/ILI2120/ILI251x touchscreen controller
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible:
|
- compatible:
|
||||||
ilitek,ili210x for ILI210x
|
ilitek,ili210x for ILI210x
|
||||||
ilitek,ili2117 for ILI2117
|
ilitek,ili2117 for ILI2117
|
||||||
|
ilitek,ili2120 for ILI2120
|
||||||
ilitek,ili251x for ILI251x
|
ilitek,ili251x for ILI251x
|
||||||
|
|
||||||
- reg: The I2C address of the device
|
- reg: The I2C address of the device
|
||||||
|
@ -62,7 +62,7 @@ required:
|
|||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
i2c@00000000 {
|
i2c {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
gt928@5d {
|
gt928@5d {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Texas Instruments TWL family (twl4030) pwrbutton module
|
Texas Instruments TWL family (twl4030) pwrbutton module
|
||||||
|
|
||||||
This module is part of the TWL4030. For more details about the whole
|
This module is part of the TWL4030. For more details about the whole
|
||||||
chip see Documentation/devicetree/bindings/mfd/twl-familly.txt.
|
chip see Documentation/devicetree/bindings/mfd/twl-family.txt.
|
||||||
|
|
||||||
This module provides a simple power button event via an Interrupt.
|
This module provides a simple power button event via an Interrupt.
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ properties:
|
|||||||
# LED will act as a back-light, controlled by the framebuffer system
|
# LED will act as a back-light, controlled by the framebuffer system
|
||||||
- backlight
|
- backlight
|
||||||
# LED will turn on (but for leds-gpio see "default-state" property in
|
# LED will turn on (but for leds-gpio see "default-state" property in
|
||||||
# Documentation/devicetree/bindings/leds/leds-gpio.txt)
|
# Documentation/devicetree/bindings/leds/leds-gpio.yaml)
|
||||||
- default-on
|
- default-on
|
||||||
# LED "double" flashes at a load average based rate
|
# LED "double" flashes at a load average based rate
|
||||||
- heartbeat
|
- heartbeat
|
||||||
|
@ -5,7 +5,7 @@ where single bits in a certain register can turn on/off a
|
|||||||
single LED. The register bit LEDs appear as children to the
|
single LED. The register bit LEDs appear as children to the
|
||||||
syscon device, with the proper compatible string. For the
|
syscon device, with the proper compatible string. For the
|
||||||
syscon bindings see:
|
syscon bindings see:
|
||||||
Documentation/devicetree/bindings/mfd/syscon.txt
|
Documentation/devicetree/bindings/mfd/syscon.yaml
|
||||||
|
|
||||||
Each LED is represented as a sub-node of the syscon device. Each
|
Each LED is represented as a sub-node of the syscon device. Each
|
||||||
node's name represents the name of the corresponding LED.
|
node's name represents the name of the corresponding LED.
|
||||||
|
@ -33,24 +33,40 @@ properties:
|
|||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
clocks:
|
clocks:
|
||||||
minItems: 2
|
oneOf:
|
||||||
maxItems: 3
|
- items:
|
||||||
items:
|
- description: The CSI interface clock
|
||||||
- description: The CSI interface clock
|
- description: The CSI DRAM clock
|
||||||
- description: The CSI ISP clock
|
|
||||||
- description: The CSI DRAM clock
|
- items:
|
||||||
|
- description: The CSI interface clock
|
||||||
|
- description: The CSI ISP clock
|
||||||
|
- description: The CSI DRAM clock
|
||||||
|
|
||||||
clock-names:
|
clock-names:
|
||||||
minItems: 2
|
oneOf:
|
||||||
maxItems: 3
|
- items:
|
||||||
items:
|
- const: bus
|
||||||
- const: bus
|
- const: ram
|
||||||
- const: isp
|
|
||||||
- const: ram
|
- items:
|
||||||
|
- const: bus
|
||||||
|
- const: isp
|
||||||
|
- const: ram
|
||||||
|
|
||||||
resets:
|
resets:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
|
# FIXME: This should be made required eventually once every SoC will
|
||||||
|
# have the MBUS declared.
|
||||||
|
interconnects:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
# FIXME: This should be made required eventually once every SoC will
|
||||||
|
# have the MBUS declared.
|
||||||
|
interconnect-names:
|
||||||
|
const: dma-mem
|
||||||
|
|
||||||
# See ./video-interfaces.txt for details
|
# See ./video-interfaces.txt for details
|
||||||
port:
|
port:
|
||||||
type: object
|
type: object
|
||||||
|
@ -177,7 +177,7 @@ examples:
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c5: i2c@4807c000 {
|
i2c {
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
@ -347,6 +347,7 @@ examples:
|
|||||||
interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
|
||||||
#iommu-cells = <1>;
|
#iommu-cells = <1>;
|
||||||
|
#reset-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
external-memory-controller@7001b000 {
|
external-memory-controller@7001b000 {
|
||||||
@ -363,20 +364,23 @@ examples:
|
|||||||
timing-0 {
|
timing-0 {
|
||||||
clock-frequency = <12750000>;
|
clock-frequency = <12750000>;
|
||||||
|
|
||||||
nvidia,emc-zcal-cnt-long = <0x00000042>;
|
|
||||||
nvidia,emc-auto-cal-interval = <0x001fffff>;
|
|
||||||
nvidia,emc-ctt-term-ctrl = <0x00000802>;
|
|
||||||
nvidia,emc-cfg = <0x73240000>;
|
|
||||||
nvidia,emc-cfg-2 = <0x000008c5>;
|
|
||||||
nvidia,emc-sel-dpd-ctrl = <0x00040128>;
|
|
||||||
nvidia,emc-bgbias-ctl0 = <0x00000008>;
|
|
||||||
nvidia,emc-auto-cal-config = <0xa1430000>;
|
nvidia,emc-auto-cal-config = <0xa1430000>;
|
||||||
nvidia,emc-auto-cal-config2 = <0x00000000>;
|
nvidia,emc-auto-cal-config2 = <0x00000000>;
|
||||||
nvidia,emc-auto-cal-config3 = <0x00000000>;
|
nvidia,emc-auto-cal-config3 = <0x00000000>;
|
||||||
nvidia,emc-mode-reset = <0x80001221>;
|
nvidia,emc-auto-cal-interval = <0x001fffff>;
|
||||||
|
nvidia,emc-bgbias-ctl0 = <0x00000008>;
|
||||||
|
nvidia,emc-cfg = <0x73240000>;
|
||||||
|
nvidia,emc-cfg-2 = <0x000008c5>;
|
||||||
|
nvidia,emc-ctt-term-ctrl = <0x00000802>;
|
||||||
nvidia,emc-mode-1 = <0x80100003>;
|
nvidia,emc-mode-1 = <0x80100003>;
|
||||||
nvidia,emc-mode-2 = <0x80200008>;
|
nvidia,emc-mode-2 = <0x80200008>;
|
||||||
nvidia,emc-mode-4 = <0x00000000>;
|
nvidia,emc-mode-4 = <0x00000000>;
|
||||||
|
nvidia,emc-mode-reset = <0x80001221>;
|
||||||
|
nvidia,emc-mrs-wait-cnt = <0x000e000e>;
|
||||||
|
nvidia,emc-sel-dpd-ctrl = <0x00040128>;
|
||||||
|
nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
|
||||||
|
nvidia,emc-zcal-cnt-long = <0x00000042>;
|
||||||
|
nvidia,emc-zcal-interval = <0x00000000>;
|
||||||
|
|
||||||
nvidia,emc-configuration = <
|
nvidia,emc-configuration = <
|
||||||
0x00000000 /* EMC_RC */
|
0x00000000 /* EMC_RC */
|
||||||
|
@ -32,7 +32,7 @@ Required only for "ti,emif-am3352" and "ti,emif-am4372":
|
|||||||
- sram : Phandles for generic sram driver nodes,
|
- sram : Phandles for generic sram driver nodes,
|
||||||
first should be type 'protect-exec' for the driver to use to copy
|
first should be type 'protect-exec' for the driver to use to copy
|
||||||
and run PM functions, second should be regular pool to be used for
|
and run PM functions, second should be regular pool to be used for
|
||||||
data region for code. See Documentation/devicetree/bindings/sram/sram.txt
|
data region for code. See Documentation/devicetree/bindings/sram/sram.yaml
|
||||||
for more details.
|
for more details.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
|
@ -97,14 +97,14 @@ examples:
|
|||||||
regulators {
|
regulators {
|
||||||
compatible = "maxim,max77650-regulator";
|
compatible = "maxim,max77650-regulator";
|
||||||
|
|
||||||
max77650_ldo: regulator@0 {
|
max77650_ldo: regulator-ldo {
|
||||||
regulator-compatible = "ldo";
|
regulator-compatible = "ldo";
|
||||||
regulator-name = "max77650-ldo";
|
regulator-name = "max77650-ldo";
|
||||||
regulator-min-microvolt = <1350000>;
|
regulator-min-microvolt = <1350000>;
|
||||||
regulator-max-microvolt = <2937500>;
|
regulator-max-microvolt = <2937500>;
|
||||||
};
|
};
|
||||||
|
|
||||||
max77650_sbb0: regulator@1 {
|
max77650_sbb0: regulator-sbb0 {
|
||||||
regulator-compatible = "sbb0";
|
regulator-compatible = "sbb0";
|
||||||
regulator-name = "max77650-sbb0";
|
regulator-name = "max77650-sbb0";
|
||||||
regulator-min-microvolt = <800000>;
|
regulator-min-microvolt = <800000>;
|
||||||
|
@ -26,8 +26,8 @@ Required properties:
|
|||||||
ldo6, ldo7, ldo8
|
ldo6, ldo7, ldo8
|
||||||
|
|
||||||
- xxx-supply: Input voltage supply regulator.
|
- xxx-supply: Input voltage supply regulator.
|
||||||
These entries are require if regulators are enabled for a device. Missing of these
|
These entries are required if regulators are enabled for a device. Missing these
|
||||||
properties can cause the regulator registration fails.
|
properties can cause the regulator registration to fail.
|
||||||
If some of input supply is powered through battery or always-on supply then
|
If some of input supply is powered through battery or always-on supply then
|
||||||
also it is require to have these parameters with proper node handle of always
|
also it is require to have these parameters with proper node handle of always
|
||||||
on power supply.
|
on power supply.
|
||||||
|
@ -20,7 +20,7 @@ RAVE SP consists of the following sub-devices:
|
|||||||
Device Description
|
Device Description
|
||||||
------ -----------
|
------ -----------
|
||||||
rave-sp-wdt : Watchdog
|
rave-sp-wdt : Watchdog
|
||||||
rave-sp-nvmem : Interface to onborad EEPROM
|
rave-sp-nvmem : Interface to onboard EEPROM
|
||||||
rave-sp-backlight : Display backlight
|
rave-sp-backlight : Display backlight
|
||||||
rave-sp-hwmon : Interface to onboard hardware sensors
|
rave-sp-hwmon : Interface to onboard hardware sensors
|
||||||
rave-sp-leds : Interface to onboard LEDs
|
rave-sp-leds : Interface to onboard LEDs
|
||||||
|
@ -26,7 +26,7 @@ For generic IOMMU bindings, see
|
|||||||
Documentation/devicetree/bindings/iommu/iommu.txt.
|
Documentation/devicetree/bindings/iommu/iommu.txt.
|
||||||
|
|
||||||
For arm-smmu binding, see:
|
For arm-smmu binding, see:
|
||||||
Documentation/devicetree/bindings/iommu/arm,smmu.txt.
|
Documentation/devicetree/bindings/iommu/arm,smmu.yaml.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
|
|
||||||
|
@ -370,6 +370,7 @@ examples:
|
|||||||
mmc3: mmc@1c12000 {
|
mmc3: mmc@1c12000 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
reg = <0x1c12000 0x200>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&mmc3_pins_a>;
|
pinctrl-0 = <&mmc3_pins_a>;
|
||||||
vmmc-supply = <®_vmmc3>;
|
vmmc-supply = <®_vmmc3>;
|
||||||
|
@ -124,7 +124,7 @@ not every application needs SDIO irq, e.g. MMC cards.
|
|||||||
pinctrl-1 = <&mmc1_idle>;
|
pinctrl-1 = <&mmc1_idle>;
|
||||||
pinctrl-2 = <&mmc1_sleep>;
|
pinctrl-2 = <&mmc1_sleep>;
|
||||||
...
|
...
|
||||||
interrupts-extended = <&intc 64 &gpio2 28 GPIO_ACTIVE_LOW>;
|
interrupts-extended = <&intc 64 &gpio2 28 IRQ_TYPE_LEVEL_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc1_idle : pinmux_cirq_pin {
|
mmc1_idle : pinmux_cirq_pin {
|
||||||
|
@ -27,7 +27,7 @@ Required properties of NAND chips:
|
|||||||
- reg: shall contain the native Chip Select ids from 0 to max supported by
|
- reg: shall contain the native Chip Select ids from 0 to max supported by
|
||||||
the cadence nand flash controller
|
the cadence nand flash controller
|
||||||
|
|
||||||
See Documentation/devicetree/bindings/mtd/nand.txt for more details on
|
See Documentation/devicetree/bindings/mtd/nand-controller.yaml for more details on
|
||||||
generic bindings.
|
generic bindings.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
@ -45,7 +45,7 @@ Optional properties:
|
|||||||
switch queue
|
switch queue
|
||||||
|
|
||||||
- resets: a single phandle and reset identifier pair. See
|
- resets: a single phandle and reset identifier pair. See
|
||||||
Documentation/devicetree/binding/reset/reset.txt for details.
|
Documentation/devicetree/bindings/reset/reset.txt for details.
|
||||||
|
|
||||||
- reset-names: If the "reset" property is specified, this property should have
|
- reset-names: If the "reset" property is specified, this property should have
|
||||||
the value "switch" to denote the switch reset line.
|
the value "switch" to denote the switch reset line.
|
||||||
|
@ -56,7 +56,6 @@ patternProperties:
|
|||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
davinci_mdio: mdio@5c030000 {
|
davinci_mdio: mdio@5c030000 {
|
||||||
compatible = "ti,davinci_mdio";
|
|
||||||
reg = <0x5c030000 0x1000>;
|
reg = <0x5c030000 0x1000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
@ -76,6 +76,8 @@ examples:
|
|||||||
qfprom: eeprom@700000 {
|
qfprom: eeprom@700000 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
reg = <0x00700000 0x100000>;
|
||||||
|
|
||||||
wp-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
|
wp-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
|
||||||
|
|
||||||
/* ... */
|
/* ... */
|
||||||
|
@ -86,7 +86,7 @@ examples:
|
|||||||
#include <dt-bindings/clock/sun4i-a10-ccu.h>
|
#include <dt-bindings/clock/sun4i-a10-ccu.h>
|
||||||
#include <dt-bindings/reset/sun4i-a10-ccu.h>
|
#include <dt-bindings/reset/sun4i-a10-ccu.h>
|
||||||
|
|
||||||
usbphy: phy@01c13400 {
|
usbphy: phy@1c13400 {
|
||||||
#phy-cells = <1>;
|
#phy-cells = <1>;
|
||||||
compatible = "allwinner,sun4i-a10-usb-phy";
|
compatible = "allwinner,sun4i-a10-usb-phy";
|
||||||
reg = <0x01c13400 0x10>, <0x01c14800 0x4>, <0x01c1c800 0x4>;
|
reg = <0x01c13400 0x10>, <0x01c14800 0x4>, <0x01c1c800 0x4>;
|
||||||
|
@ -17,7 +17,7 @@ description: |+
|
|||||||
"aspeed,ast2400-scu", "syscon", "simple-mfd"
|
"aspeed,ast2400-scu", "syscon", "simple-mfd"
|
||||||
|
|
||||||
Refer to the the bindings described in
|
Refer to the the bindings described in
|
||||||
Documentation/devicetree/bindings/mfd/syscon.txt
|
Documentation/devicetree/bindings/mfd/syscon.yaml
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -18,7 +18,7 @@ description: |+
|
|||||||
"aspeed,g5-scu", "syscon", "simple-mfd"
|
"aspeed,g5-scu", "syscon", "simple-mfd"
|
||||||
|
|
||||||
Refer to the the bindings described in
|
Refer to the the bindings described in
|
||||||
Documentation/devicetree/bindings/mfd/syscon.txt
|
Documentation/devicetree/bindings/mfd/syscon.yaml
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -17,7 +17,7 @@ description: |+
|
|||||||
"aspeed,ast2600-scu", "syscon", "simple-mfd"
|
"aspeed,ast2600-scu", "syscon", "simple-mfd"
|
||||||
|
|
||||||
Refer to the the bindings described in
|
Refer to the the bindings described in
|
||||||
Documentation/devicetree/bindings/mfd/syscon.txt
|
Documentation/devicetree/bindings/mfd/syscon.yaml
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -248,7 +248,7 @@ examples:
|
|||||||
};
|
};
|
||||||
|
|
||||||
//Example 3 pin groups
|
//Example 3 pin groups
|
||||||
pinctrl@60020000 {
|
pinctrl {
|
||||||
usart1_pins_a: usart1-0 {
|
usart1_pins_a: usart1-0 {
|
||||||
pins1 {
|
pins1 {
|
||||||
pinmux = <STM32_PINMUX('A', 9, AF7)>;
|
pinmux = <STM32_PINMUX('A', 9, AF7)>;
|
||||||
|
@ -18,7 +18,7 @@ description: |+
|
|||||||
"amlogic,meson-gx-hhi-sysctrl", "simple-mfd", "syscon"
|
"amlogic,meson-gx-hhi-sysctrl", "simple-mfd", "syscon"
|
||||||
|
|
||||||
Refer to the the bindings described in
|
Refer to the the bindings described in
|
||||||
Documentation/devicetree/bindings/mfd/syscon.txt
|
Documentation/devicetree/bindings/mfd/syscon.yaml
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
PM Domain Idle State Node:
|
|
||||||
|
|
||||||
A domain idle state node represents the state parameters that will be used to
|
|
||||||
select the state when there are no active components in the domain.
|
|
||||||
|
|
||||||
The state node has the following parameters -
|
|
||||||
|
|
||||||
- compatible:
|
|
||||||
Usage: Required
|
|
||||||
Value type: <string>
|
|
||||||
Definition: Must be "domain-idle-state".
|
|
||||||
|
|
||||||
- entry-latency-us
|
|
||||||
Usage: Required
|
|
||||||
Value type: <prop-encoded-array>
|
|
||||||
Definition: u32 value representing worst case latency in
|
|
||||||
microseconds required to enter the idle state.
|
|
||||||
The exit-latency-us duration may be guaranteed
|
|
||||||
only after entry-latency-us has passed.
|
|
||||||
|
|
||||||
- exit-latency-us
|
|
||||||
Usage: Required
|
|
||||||
Value type: <prop-encoded-array>
|
|
||||||
Definition: u32 value representing worst case latency
|
|
||||||
in microseconds required to exit the idle state.
|
|
||||||
|
|
||||||
- min-residency-us
|
|
||||||
Usage: Required
|
|
||||||
Value type: <prop-encoded-array>
|
|
||||||
Definition: u32 value representing minimum residency duration
|
|
||||||
in microseconds after which the idle state will yield
|
|
||||||
power benefits after overcoming the overhead in entering
|
|
||||||
i the idle state.
|
|
@ -0,0 +1,64 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/power/domain-idle-state.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: PM Domain Idle States binding description
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Ulf Hansson <ulf.hansson@linaro.org>
|
||||||
|
|
||||||
|
description:
|
||||||
|
A domain idle state node represents the state parameters that will be used to
|
||||||
|
select the state when there are no active components in the PM domain.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
$nodename:
|
||||||
|
const: domain-idle-states
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
"^(cpu|cluster|domain)-":
|
||||||
|
type: object
|
||||||
|
description:
|
||||||
|
Each state node represents a domain idle state description.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: domain-idle-state
|
||||||
|
|
||||||
|
entry-latency-us:
|
||||||
|
description:
|
||||||
|
The worst case latency in microseconds required to enter the idle
|
||||||
|
state. Note that, the exit-latency-us duration may be guaranteed only
|
||||||
|
after the entry-latency-us has passed.
|
||||||
|
|
||||||
|
exit-latency-us:
|
||||||
|
description:
|
||||||
|
The worst case latency in microseconds required to exit the idle
|
||||||
|
state.
|
||||||
|
|
||||||
|
min-residency-us:
|
||||||
|
description:
|
||||||
|
The minimum residency duration in microseconds after which the idle
|
||||||
|
state will yield power benefits, after overcoming the overhead while
|
||||||
|
entering the idle state.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- entry-latency-us
|
||||||
|
- exit-latency-us
|
||||||
|
- min-residency-us
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
|
||||||
|
domain-idle-states {
|
||||||
|
domain_retention: domain-retention {
|
||||||
|
compatible = "domain-idle-state";
|
||||||
|
entry-latency-us = <20>;
|
||||||
|
exit-latency-us = <40>;
|
||||||
|
min-residency-us = <80>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
...
|
@ -25,22 +25,20 @@ description: |+
|
|||||||
|
|
||||||
properties:
|
properties:
|
||||||
$nodename:
|
$nodename:
|
||||||
pattern: "^(power-controller|power-domain)(@.*)?$"
|
pattern: "^(power-controller|power-domain)([@-].*)?$"
|
||||||
|
|
||||||
domain-idle-states:
|
domain-idle-states:
|
||||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||||
description:
|
description: |
|
||||||
A phandle of an idle-state that shall be soaked into a generic domain
|
Phandles of idle states that defines the available states for the
|
||||||
power state. The idle state definitions are compatible with
|
power-domain provider. The idle state definitions are compatible with the
|
||||||
domain-idle-state specified in
|
domain-idle-state bindings, specified in ./domain-idle-state.yaml.
|
||||||
Documentation/devicetree/bindings/power/domain-idle-state.txt
|
|
||||||
phandles that are not compatible with domain-idle-state will be ignored.
|
Note that, the domain-idle-state property reflects the idle states of this
|
||||||
The domain-idle-state property reflects the idle state of this PM domain
|
PM domain and not the idle states of the devices or sub-domains in the PM
|
||||||
and not the idle states of the devices or sub-domains in the PM domain.
|
domain. Devices and sub-domains have their own idle states independent of
|
||||||
Devices and sub-domains have their own idle-states independent
|
the parent domain's idle states. In the absence of this property, the
|
||||||
of the parent domain's idle states. In the absence of this property,
|
domain would be considered as capable of being powered-on or powered-off.
|
||||||
the domain would be considered as capable of being powered-on
|
|
||||||
or powered-off.
|
|
||||||
|
|
||||||
operating-points-v2:
|
operating-points-v2:
|
||||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||||
|
@ -109,4 +109,4 @@ Example:
|
|||||||
required-opps = <&domain1_opp_1>;
|
required-opps = <&domain1_opp_1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
[1]. Documentation/devicetree/bindings/power/domain-idle-state.txt
|
[1]. Documentation/devicetree/bindings/power/domain-idle-state.yaml
|
||||||
|
@ -161,7 +161,7 @@ The regulator node houses sub-nodes for each regulator within the device. Each
|
|||||||
sub-node is identified using the node's name, with valid values listed for each
|
sub-node is identified using the node's name, with valid values listed for each
|
||||||
of the PMICs below.
|
of the PMICs below.
|
||||||
|
|
||||||
pm8005:
|
pm8004:
|
||||||
s2, s5
|
s2, s5
|
||||||
|
|
||||||
pm8005:
|
pm8005:
|
||||||
|
@ -191,7 +191,7 @@ patternProperties:
|
|||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
xyzreg: regulator@0 {
|
xyzreg: regulator {
|
||||||
regulator-min-microvolt = <1000000>;
|
regulator-min-microvolt = <1000000>;
|
||||||
regulator-max-microvolt = <2500000>;
|
regulator-max-microvolt = <2500000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
|
@ -23,7 +23,11 @@ properties:
|
|||||||
description: Global reset register offset and bit offset.
|
description: Global reset register offset and bit offset.
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: /schemas/types.yaml#/definitions/uint32-array
|
- $ref: /schemas/types.yaml#/definitions/uint32-array
|
||||||
- maxItems: 2
|
items:
|
||||||
|
- description: Register offset
|
||||||
|
- description: Register bit offset
|
||||||
|
minimum: 0
|
||||||
|
maximum: 31
|
||||||
|
|
||||||
"#reset-cells":
|
"#reset-cells":
|
||||||
minimum: 2
|
minimum: 2
|
||||||
|
@ -3,4 +3,4 @@ STMicroelectronics STM32MP1 Peripheral Reset Controller
|
|||||||
|
|
||||||
The RCC IP is both a reset and a clock controller.
|
The RCC IP is both a reset and a clock controller.
|
||||||
|
|
||||||
Please see Documentation/devicetree/bindings/clock/st,stm32mp1-rcc.txt
|
Please see Documentation/devicetree/bindings/clock/st,stm32mp1-rcc.yaml
|
||||||
|
@ -36,7 +36,7 @@ SAI subnodes required properties:
|
|||||||
- clock-names: Must contain "sai_ck".
|
- clock-names: Must contain "sai_ck".
|
||||||
Must also contain "MCLK", if SAI shares a master clock,
|
Must also contain "MCLK", if SAI shares a master clock,
|
||||||
with a SAI set as MCLK clock provider.
|
with a SAI set as MCLK clock provider.
|
||||||
- dmas: see Documentation/devicetree/bindings/dma/stm32-dma.txt
|
- dmas: see Documentation/devicetree/bindings/dma/st,stm32-dma.yaml
|
||||||
- dma-names: identifier string for each DMA request line
|
- dma-names: identifier string for each DMA request line
|
||||||
"tx": if sai sub-block is configured as playback DAI
|
"tx": if sai sub-block is configured as playback DAI
|
||||||
"rx": if sai sub-block is configured as capture DAI
|
"rx": if sai sub-block is configured as capture DAI
|
||||||
|
@ -49,7 +49,7 @@ properties:
|
|||||||
dmas:
|
dmas:
|
||||||
description: |
|
description: |
|
||||||
DMA specifiers for tx and rx dma. DMA fifo mode must be used. See
|
DMA specifiers for tx and rx dma. DMA fifo mode must be used. See
|
||||||
the STM32 DMA bindings Documentation/devicetree/bindings/dma/stm32-dma.txt.
|
the STM32 DMA bindings Documentation/devicetree/bindings/dma/st,stm32-dma.yaml.
|
||||||
items:
|
items:
|
||||||
- description: rx DMA channel
|
- description: rx DMA channel
|
||||||
- description: tx DMA channel
|
- description: tx DMA channel
|
||||||
|
@ -125,7 +125,7 @@ examples:
|
|||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges;
|
ranges;
|
||||||
|
|
||||||
sram_a: sram@00000000 {
|
sram_a: sram@0 {
|
||||||
compatible = "mmio-sram";
|
compatible = "mmio-sram";
|
||||||
reg = <0x00000000 0xc000>;
|
reg = <0x00000000 0xc000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
@ -17,7 +17,7 @@ description: |+
|
|||||||
"brcm,bcm2711-avs-monitor", "syscon", "simple-mfd"
|
"brcm,bcm2711-avs-monitor", "syscon", "simple-mfd"
|
||||||
|
|
||||||
Refer to the the bindings described in
|
Refer to the the bindings described in
|
||||||
Documentation/devicetree/bindings/mfd/syscon.txt
|
Documentation/devicetree/bindings/mfd/syscon.yaml
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -87,7 +87,7 @@ additionalProperties: false
|
|||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
timer {
|
timer@1c20c00 {
|
||||||
compatible = "allwinner,sun4i-a10-timer";
|
compatible = "allwinner,sun4i-a10-timer";
|
||||||
reg = <0x01c20c00 0x400>;
|
reg = <0x01c20c00 0x400>;
|
||||||
interrupts = <22>,
|
interrupts = <22>,
|
||||||
|
@ -151,8 +151,8 @@ The details of these operations are:
|
|||||||
Note that callbacks will always be invoked from the DMA
|
Note that callbacks will always be invoked from the DMA
|
||||||
engines tasklet, never from interrupt context.
|
engines tasklet, never from interrupt context.
|
||||||
|
|
||||||
Optional: per descriptor metadata
|
**Optional: per descriptor metadata**
|
||||||
---------------------------------
|
|
||||||
DMAengine provides two ways for metadata support.
|
DMAengine provides two ways for metadata support.
|
||||||
|
|
||||||
DESC_METADATA_CLIENT
|
DESC_METADATA_CLIENT
|
||||||
@ -199,12 +199,15 @@ Optional: per descriptor metadata
|
|||||||
DESC_METADATA_CLIENT
|
DESC_METADATA_CLIENT
|
||||||
|
|
||||||
- DMA_MEM_TO_DEV / DEV_MEM_TO_MEM:
|
- DMA_MEM_TO_DEV / DEV_MEM_TO_MEM:
|
||||||
|
|
||||||
1. prepare the descriptor (dmaengine_prep_*)
|
1. prepare the descriptor (dmaengine_prep_*)
|
||||||
construct the metadata in the client's buffer
|
construct the metadata in the client's buffer
|
||||||
2. use dmaengine_desc_attach_metadata() to attach the buffer to the
|
2. use dmaengine_desc_attach_metadata() to attach the buffer to the
|
||||||
descriptor
|
descriptor
|
||||||
3. submit the transfer
|
3. submit the transfer
|
||||||
|
|
||||||
- DMA_DEV_TO_MEM:
|
- DMA_DEV_TO_MEM:
|
||||||
|
|
||||||
1. prepare the descriptor (dmaengine_prep_*)
|
1. prepare the descriptor (dmaengine_prep_*)
|
||||||
2. use dmaengine_desc_attach_metadata() to attach the buffer to the
|
2. use dmaengine_desc_attach_metadata() to attach the buffer to the
|
||||||
descriptor
|
descriptor
|
||||||
@ -215,6 +218,7 @@ Optional: per descriptor metadata
|
|||||||
DESC_METADATA_ENGINE
|
DESC_METADATA_ENGINE
|
||||||
|
|
||||||
- DMA_MEM_TO_DEV / DEV_MEM_TO_MEM:
|
- DMA_MEM_TO_DEV / DEV_MEM_TO_MEM:
|
||||||
|
|
||||||
1. prepare the descriptor (dmaengine_prep_*)
|
1. prepare the descriptor (dmaengine_prep_*)
|
||||||
2. use dmaengine_desc_get_metadata_ptr() to get the pointer to the
|
2. use dmaengine_desc_get_metadata_ptr() to get the pointer to the
|
||||||
engine's metadata area
|
engine's metadata area
|
||||||
@ -222,7 +226,9 @@ Optional: per descriptor metadata
|
|||||||
4. use dmaengine_desc_set_metadata_len() to tell the DMA engine the
|
4. use dmaengine_desc_set_metadata_len() to tell the DMA engine the
|
||||||
amount of data the client has placed into the metadata buffer
|
amount of data the client has placed into the metadata buffer
|
||||||
5. submit the transfer
|
5. submit the transfer
|
||||||
|
|
||||||
- DMA_DEV_TO_MEM:
|
- DMA_DEV_TO_MEM:
|
||||||
|
|
||||||
1. prepare the descriptor (dmaengine_prep_*)
|
1. prepare the descriptor (dmaengine_prep_*)
|
||||||
2. submit the transfer
|
2. submit the transfer
|
||||||
3. on transfer completion, use dmaengine_desc_get_metadata_ptr() to get
|
3. on transfer completion, use dmaengine_desc_get_metadata_ptr() to get
|
||||||
@ -278,8 +284,8 @@ Optional: per descriptor metadata
|
|||||||
|
|
||||||
void dma_async_issue_pending(struct dma_chan *chan);
|
void dma_async_issue_pending(struct dma_chan *chan);
|
||||||
|
|
||||||
Further APIs:
|
Further APIs
|
||||||
-------------
|
------------
|
||||||
|
|
||||||
1. Terminate APIs
|
1. Terminate APIs
|
||||||
|
|
||||||
|
@ -71,9 +71,13 @@ b) Example for device tree::
|
|||||||
ipmb@10 {
|
ipmb@10 {
|
||||||
compatible = "ipmb-dev";
|
compatible = "ipmb-dev";
|
||||||
reg = <0x10>;
|
reg = <0x10>;
|
||||||
|
i2c-protocol;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
If xmit of data to be done using raw i2c block vs smbus
|
||||||
|
then "i2c-protocol" needs to be defined as above.
|
||||||
|
|
||||||
2) Manually from Linux::
|
2) Manually from Linux::
|
||||||
|
|
||||||
modprobe ipmb-dev-int
|
modprobe ipmb-dev-int
|
||||||
|
@ -164,9 +164,9 @@ file.
|
|||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dentry *debugfs_create_regset32(const char *name, umode_t mode,
|
debugfs_create_regset32(const char *name, umode_t mode,
|
||||||
struct dentry *parent,
|
struct dentry *parent,
|
||||||
struct debugfs_regset32 *regset);
|
struct debugfs_regset32 *regset);
|
||||||
|
|
||||||
void debugfs_print_regs32(struct seq_file *s, struct debugfs_reg32 *regs,
|
void debugfs_print_regs32(struct seq_file *s, struct debugfs_reg32 *regs,
|
||||||
int nregs, void __iomem *base, char *prefix);
|
int nregs, void __iomem *base, char *prefix);
|
||||||
|
@ -134,7 +134,7 @@ Sequential zone files can only be written sequentially, starting from the file
|
|||||||
end, that is, write operations can only be append writes. Zonefs makes no
|
end, that is, write operations can only be append writes. Zonefs makes no
|
||||||
attempt at accepting random writes and will fail any write request that has a
|
attempt at accepting random writes and will fail any write request that has a
|
||||||
start offset not corresponding to the end of the file, or to the end of the last
|
start offset not corresponding to the end of the file, or to the end of the last
|
||||||
write issued and still in-flight (for asynchrnous I/O operations).
|
write issued and still in-flight (for asynchronous I/O operations).
|
||||||
|
|
||||||
Since dirty page writeback by the page cache does not guarantee a sequential
|
Since dirty page writeback by the page cache does not guarantee a sequential
|
||||||
write pattern, zonefs prevents buffered writes and writeable shared mappings
|
write pattern, zonefs prevents buffered writes and writeable shared mappings
|
||||||
@ -142,7 +142,7 @@ on sequential files. Only direct I/O writes are accepted for these files.
|
|||||||
zonefs relies on the sequential delivery of write I/O requests to the device
|
zonefs relies on the sequential delivery of write I/O requests to the device
|
||||||
implemented by the block layer elevator. An elevator implementing the sequential
|
implemented by the block layer elevator. An elevator implementing the sequential
|
||||||
write feature for zoned block device (ELEVATOR_F_ZBD_SEQ_WRITE elevator feature)
|
write feature for zoned block device (ELEVATOR_F_ZBD_SEQ_WRITE elevator feature)
|
||||||
must be used. This type of elevator (e.g. mq-deadline) is the set by default
|
must be used. This type of elevator (e.g. mq-deadline) is set by default
|
||||||
for zoned block devices on device initialization.
|
for zoned block devices on device initialization.
|
||||||
|
|
||||||
There are no restrictions on the type of I/O used for read operations in
|
There are no restrictions on the type of I/O used for read operations in
|
||||||
@ -196,7 +196,7 @@ additional conditions that result in I/O errors.
|
|||||||
may still happen in the case of a partial failure of a very large direct I/O
|
may still happen in the case of a partial failure of a very large direct I/O
|
||||||
operation split into multiple BIOs/requests or asynchronous I/O operations.
|
operation split into multiple BIOs/requests or asynchronous I/O operations.
|
||||||
If one of the write request within the set of sequential write requests
|
If one of the write request within the set of sequential write requests
|
||||||
issued to the device fails, all write requests after queued after it will
|
issued to the device fails, all write requests queued after it will
|
||||||
become unaligned and fail.
|
become unaligned and fail.
|
||||||
|
|
||||||
* Delayed write errors: similarly to regular block devices, if the device side
|
* Delayed write errors: similarly to regular block devices, if the device side
|
||||||
@ -207,7 +207,7 @@ additional conditions that result in I/O errors.
|
|||||||
causing all data to be dropped after the sector that caused the error.
|
causing all data to be dropped after the sector that caused the error.
|
||||||
|
|
||||||
All I/O errors detected by zonefs are notified to the user with an error code
|
All I/O errors detected by zonefs are notified to the user with an error code
|
||||||
return for the system call that trigered or detected the error. The recovery
|
return for the system call that triggered or detected the error. The recovery
|
||||||
actions taken by zonefs in response to I/O errors depend on the I/O type (read
|
actions taken by zonefs in response to I/O errors depend on the I/O type (read
|
||||||
vs write) and on the reason for the error (bad sector, unaligned writes or zone
|
vs write) and on the reason for the error (bad sector, unaligned writes or zone
|
||||||
condition change).
|
condition change).
|
||||||
@ -222,7 +222,7 @@ condition change).
|
|||||||
* A zone condition change to read-only or offline also always triggers zonefs
|
* A zone condition change to read-only or offline also always triggers zonefs
|
||||||
I/O error recovery.
|
I/O error recovery.
|
||||||
|
|
||||||
Zonefs minimal I/O error recovery may change a file size and a file access
|
Zonefs minimal I/O error recovery may change a file size and file access
|
||||||
permissions.
|
permissions.
|
||||||
|
|
||||||
* File size changes:
|
* File size changes:
|
||||||
@ -237,7 +237,7 @@ permissions.
|
|||||||
A file size may also be reduced to reflect a delayed write error detected on
|
A file size may also be reduced to reflect a delayed write error detected on
|
||||||
fsync(): in this case, the amount of data effectively written in the zone may
|
fsync(): in this case, the amount of data effectively written in the zone may
|
||||||
be less than originally indicated by the file inode size. After such I/O
|
be less than originally indicated by the file inode size. After such I/O
|
||||||
error, zonefs always fixes a file inode size to reflect the amount of data
|
error, zonefs always fixes the file inode size to reflect the amount of data
|
||||||
persistently stored in the file zone.
|
persistently stored in the file zone.
|
||||||
|
|
||||||
* Access permission changes:
|
* Access permission changes:
|
||||||
@ -281,11 +281,11 @@ Further notes:
|
|||||||
permissions to read-only applies to all files. The file system is remounted
|
permissions to read-only applies to all files. The file system is remounted
|
||||||
read-only.
|
read-only.
|
||||||
* Access permission and file size changes due to the device transitioning zones
|
* Access permission and file size changes due to the device transitioning zones
|
||||||
to the offline condition are permanent. Remounting or reformating the device
|
to the offline condition are permanent. Remounting or reformatting the device
|
||||||
with mkfs.zonefs (mkzonefs) will not change back offline zone files to a good
|
with mkfs.zonefs (mkzonefs) will not change back offline zone files to a good
|
||||||
state.
|
state.
|
||||||
* File access permission changes to read-only due to the device transitioning
|
* File access permission changes to read-only due to the device transitioning
|
||||||
zones to the read-only condition are permanent. Remounting or reformating
|
zones to the read-only condition are permanent. Remounting or reformatting
|
||||||
the device will not re-enable file write access.
|
the device will not re-enable file write access.
|
||||||
* File access permission changes implied by the remount-ro, zone-ro and
|
* File access permission changes implied by the remount-ro, zone-ro and
|
||||||
zone-offline mount options are temporary for zones in a good condition.
|
zone-offline mount options are temporary for zones in a good condition.
|
||||||
@ -301,13 +301,13 @@ Mount options
|
|||||||
|
|
||||||
zonefs define the "errors=<behavior>" mount option to allow the user to specify
|
zonefs define the "errors=<behavior>" mount option to allow the user to specify
|
||||||
zonefs behavior in response to I/O errors, inode size inconsistencies or zone
|
zonefs behavior in response to I/O errors, inode size inconsistencies or zone
|
||||||
condition chages. The defined behaviors are as follow:
|
condition changes. The defined behaviors are as follow:
|
||||||
* remount-ro (default)
|
* remount-ro (default)
|
||||||
* zone-ro
|
* zone-ro
|
||||||
* zone-offline
|
* zone-offline
|
||||||
* repair
|
* repair
|
||||||
|
|
||||||
The I/O error actions defined for each behavior is detailed in the previous
|
The I/O error actions defined for each behavior are detailed in the previous
|
||||||
section.
|
section.
|
||||||
|
|
||||||
Zonefs User Space Tools
|
Zonefs User Space Tools
|
||||||
|
@ -20,8 +20,7 @@ Usage Notes
|
|||||||
-----------
|
-----------
|
||||||
|
|
||||||
This driver does not auto-detect devices. You will have to instantiate the
|
This driver does not auto-detect devices. You will have to instantiate the
|
||||||
devices explicitly. Please see Documentation/i2c/instantiating-devices for
|
devices explicitly. Please see :doc:`/i2c/instantiating-devices` for details.
|
||||||
details.
|
|
||||||
|
|
||||||
|
|
||||||
Sysfs entries
|
Sysfs entries
|
||||||
|
@ -24,6 +24,7 @@ This driver implements support for Infineon Multi-phase XDPE122 family
|
|||||||
dual loop voltage regulators.
|
dual loop voltage regulators.
|
||||||
The family includes XDPE12284 and XDPE12254 devices.
|
The family includes XDPE12284 and XDPE12254 devices.
|
||||||
The devices from this family complaint with:
|
The devices from this family complaint with:
|
||||||
|
|
||||||
- Intel VR13 and VR13HC rev 1.3, IMVP8 rev 1.2 and IMPVP9 rev 1.3 DC-DC
|
- Intel VR13 and VR13HC rev 1.3, IMVP8 rev 1.2 and IMPVP9 rev 1.3 DC-DC
|
||||||
converter specification.
|
converter specification.
|
||||||
- Intel SVID rev 1.9. protocol.
|
- Intel SVID rev 1.9. protocol.
|
||||||
|
@ -765,7 +765,7 @@ is not sufficient this sometimes needs to be explicit.
|
|||||||
Example::
|
Example::
|
||||||
|
|
||||||
#arch/x86/boot/Makefile
|
#arch/x86/boot/Makefile
|
||||||
subdir- := compressed/
|
subdir- := compressed
|
||||||
|
|
||||||
The above assignment instructs kbuild to descend down in the
|
The above assignment instructs kbuild to descend down in the
|
||||||
directory compressed/ when "make clean" is executed.
|
directory compressed/ when "make clean" is executed.
|
||||||
@ -1379,9 +1379,6 @@ See subsequent chapter for the syntax of the Kbuild file.
|
|||||||
in arch/$(ARCH)/include/(uapi/)/asm, Kbuild will automatically generate
|
in arch/$(ARCH)/include/(uapi/)/asm, Kbuild will automatically generate
|
||||||
a wrapper of the asm-generic one.
|
a wrapper of the asm-generic one.
|
||||||
|
|
||||||
The convention is to list one subdir per line and
|
|
||||||
preferably in alphabetic order.
|
|
||||||
|
|
||||||
8 Kbuild Variables
|
8 Kbuild Variables
|
||||||
==================
|
==================
|
||||||
|
|
||||||
|
@ -487,8 +487,9 @@ phy_register_fixup_for_id()::
|
|||||||
The stubs set one of the two matching criteria, and set the other one to
|
The stubs set one of the two matching criteria, and set the other one to
|
||||||
match anything.
|
match anything.
|
||||||
|
|
||||||
When phy_register_fixup() or \*_for_uid()/\*_for_id() is called at module,
|
When phy_register_fixup() or \*_for_uid()/\*_for_id() is called at module load
|
||||||
unregister fixup and free allocate memory are required.
|
time, the module needs to unregister the fixup and free allocated memory when
|
||||||
|
it's unloaded.
|
||||||
|
|
||||||
Call one of following function before unloading module::
|
Call one of following function before unloading module::
|
||||||
|
|
||||||
|
@ -13,7 +13,6 @@ Power Management
|
|||||||
drivers-testing
|
drivers-testing
|
||||||
energy-model
|
energy-model
|
||||||
freezing-of-tasks
|
freezing-of-tasks
|
||||||
interface
|
|
||||||
opp
|
opp
|
||||||
pci
|
pci
|
||||||
pm_qos_interface
|
pm_qos_interface
|
||||||
|
@ -244,23 +244,23 @@ disclosure of a particular issue, unless requested by a response team or by
|
|||||||
an involved disclosed party. The current ambassadors list:
|
an involved disclosed party. The current ambassadors list:
|
||||||
|
|
||||||
============= ========================================================
|
============= ========================================================
|
||||||
ARM
|
ARM Grant Likely <grant.likely@arm.com>
|
||||||
AMD Tom Lendacky <tom.lendacky@amd.com>
|
AMD Tom Lendacky <tom.lendacky@amd.com>
|
||||||
IBM
|
IBM
|
||||||
Intel Tony Luck <tony.luck@intel.com>
|
Intel Tony Luck <tony.luck@intel.com>
|
||||||
Qualcomm Trilok Soni <tsoni@codeaurora.org>
|
Qualcomm Trilok Soni <tsoni@codeaurora.org>
|
||||||
|
|
||||||
Microsoft Sasha Levin <sashal@kernel.org>
|
Microsoft James Morris <jamorris@linux.microsoft.com>
|
||||||
VMware
|
VMware
|
||||||
Xen Andrew Cooper <andrew.cooper3@citrix.com>
|
Xen Andrew Cooper <andrew.cooper3@citrix.com>
|
||||||
|
|
||||||
Canonical Tyler Hicks <tyhicks@canonical.com>
|
Canonical John Johansen <john.johansen@canonical.com>
|
||||||
Debian Ben Hutchings <ben@decadent.org.uk>
|
Debian Ben Hutchings <ben@decadent.org.uk>
|
||||||
Oracle Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
Oracle Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||||
Red Hat Josh Poimboeuf <jpoimboe@redhat.com>
|
Red Hat Josh Poimboeuf <jpoimboe@redhat.com>
|
||||||
SUSE Jiri Kosina <jkosina@suse.cz>
|
SUSE Jiri Kosina <jkosina@suse.cz>
|
||||||
|
|
||||||
Amazon Peter Bowen <pzb@amzn.com>
|
Amazon
|
||||||
Google Kees Cook <keescook@chromium.org>
|
Google Kees Cook <keescook@chromium.org>
|
||||||
============= ========================================================
|
============= ========================================================
|
||||||
|
|
||||||
|
@ -30,4 +30,4 @@ if [ -n "$parallel" ] ; then
|
|||||||
parallel="-j$parallel"
|
parallel="-j$parallel"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$sphinx" "$parallel" "$@"
|
exec "$sphinx" $parallel "$@"
|
||||||
|
@ -183,7 +183,7 @@ CVE分配
|
|||||||
VMware
|
VMware
|
||||||
Xen Andrew Cooper <andrew.cooper3@citrix.com>
|
Xen Andrew Cooper <andrew.cooper3@citrix.com>
|
||||||
|
|
||||||
Canonical Tyler Hicks <tyhicks@canonical.com>
|
Canonical John Johansen <john.johansen@canonical.com>
|
||||||
Debian Ben Hutchings <ben@decadent.org.uk>
|
Debian Ben Hutchings <ben@decadent.org.uk>
|
||||||
Oracle Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
Oracle Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||||
Red Hat Josh Poimboeuf <jpoimboe@redhat.com>
|
Red Hat Josh Poimboeuf <jpoimboe@redhat.com>
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
|
==================
|
||||||
Guest halt polling
|
Guest halt polling
|
||||||
==================
|
==================
|
||||||
|
|
||||||
The cpuidle_haltpoll driver, with the haltpoll governor, allows
|
The cpuidle_haltpoll driver, with the haltpoll governor, allows
|
||||||
the guest vcpus to poll for a specified amount of time before
|
the guest vcpus to poll for a specified amount of time before
|
||||||
halting.
|
halting.
|
||||||
|
|
||||||
This provides the following benefits to host side polling:
|
This provides the following benefits to host side polling:
|
||||||
|
|
||||||
1) The POLL flag is set while polling is performed, which allows
|
1) The POLL flag is set while polling is performed, which allows
|
||||||
@ -29,18 +31,21 @@ Module Parameters
|
|||||||
The haltpoll governor has 5 tunable module parameters:
|
The haltpoll governor has 5 tunable module parameters:
|
||||||
|
|
||||||
1) guest_halt_poll_ns:
|
1) guest_halt_poll_ns:
|
||||||
|
|
||||||
Maximum amount of time, in nanoseconds, that polling is
|
Maximum amount of time, in nanoseconds, that polling is
|
||||||
performed before halting.
|
performed before halting.
|
||||||
|
|
||||||
Default: 200000
|
Default: 200000
|
||||||
|
|
||||||
2) guest_halt_poll_shrink:
|
2) guest_halt_poll_shrink:
|
||||||
|
|
||||||
Division factor used to shrink per-cpu guest_halt_poll_ns when
|
Division factor used to shrink per-cpu guest_halt_poll_ns when
|
||||||
wakeup event occurs after the global guest_halt_poll_ns.
|
wakeup event occurs after the global guest_halt_poll_ns.
|
||||||
|
|
||||||
Default: 2
|
Default: 2
|
||||||
|
|
||||||
3) guest_halt_poll_grow:
|
3) guest_halt_poll_grow:
|
||||||
|
|
||||||
Multiplication factor used to grow per-cpu guest_halt_poll_ns
|
Multiplication factor used to grow per-cpu guest_halt_poll_ns
|
||||||
when event occurs after per-cpu guest_halt_poll_ns
|
when event occurs after per-cpu guest_halt_poll_ns
|
||||||
but before global guest_halt_poll_ns.
|
but before global guest_halt_poll_ns.
|
||||||
@ -48,6 +53,7 @@ but before global guest_halt_poll_ns.
|
|||||||
Default: 2
|
Default: 2
|
||||||
|
|
||||||
4) guest_halt_poll_grow_start:
|
4) guest_halt_poll_grow_start:
|
||||||
|
|
||||||
The per-cpu guest_halt_poll_ns eventually reaches zero
|
The per-cpu guest_halt_poll_ns eventually reaches zero
|
||||||
in case of an idle system. This value sets the initial
|
in case of an idle system. This value sets the initial
|
||||||
per-cpu guest_halt_poll_ns when growing. This can
|
per-cpu guest_halt_poll_ns when growing. This can
|
||||||
@ -66,7 +72,7 @@ high once achieves global guest_halt_poll_ns value).
|
|||||||
|
|
||||||
Default: Y
|
Default: Y
|
||||||
|
|
||||||
The module parameters can be set from the debugfs files in:
|
The module parameters can be set from the debugfs files in::
|
||||||
|
|
||||||
/sys/module/haltpoll/parameters/
|
/sys/module/haltpoll/parameters/
|
||||||
|
|
||||||
@ -74,5 +80,5 @@ Further Notes
|
|||||||
=============
|
=============
|
||||||
|
|
||||||
- Care should be taken when setting the guest_halt_poll_ns parameter as a
|
- Care should be taken when setting the guest_halt_poll_ns parameter as a
|
||||||
large value has the potential to drive the cpu usage to 100% on a machine which
|
large value has the potential to drive the cpu usage to 100% on a machine
|
||||||
would be almost entirely idle otherwise.
|
which would be almost entirely idle otherwise.
|
@ -8,7 +8,9 @@ Linux Virtualization Support
|
|||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
kvm/index
|
kvm/index
|
||||||
|
uml/user_mode_linux
|
||||||
paravirt_ops
|
paravirt_ops
|
||||||
|
guest-halt-polling
|
||||||
|
|
||||||
.. only:: html and subproject
|
.. only:: html and subproject
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,8 @@
|
|||||||
* Internal ABI between the kernel and HYP
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
=======================================
|
||||||
|
Internal ABI between the kernel and HYP
|
||||||
|
=======================================
|
||||||
|
|
||||||
This file documents the interaction between the Linux kernel and the
|
This file documents the interaction between the Linux kernel and the
|
||||||
hypervisor layer when running Linux as a hypervisor (for example
|
hypervisor layer when running Linux as a hypervisor (for example
|
||||||
@ -19,25 +23,31 @@ and only act on individual CPUs.
|
|||||||
Unless specified otherwise, any built-in hypervisor must implement
|
Unless specified otherwise, any built-in hypervisor must implement
|
||||||
these functions (see arch/arm{,64}/include/asm/virt.h):
|
these functions (see arch/arm{,64}/include/asm/virt.h):
|
||||||
|
|
||||||
* r0/x0 = HVC_SET_VECTORS
|
* ::
|
||||||
r1/x1 = vectors
|
|
||||||
|
r0/x0 = HVC_SET_VECTORS
|
||||||
|
r1/x1 = vectors
|
||||||
|
|
||||||
Set HVBAR/VBAR_EL2 to 'vectors' to enable a hypervisor. 'vectors'
|
Set HVBAR/VBAR_EL2 to 'vectors' to enable a hypervisor. 'vectors'
|
||||||
must be a physical address, and respect the alignment requirements
|
must be a physical address, and respect the alignment requirements
|
||||||
of the architecture. Only implemented by the initial stubs, not by
|
of the architecture. Only implemented by the initial stubs, not by
|
||||||
Linux hypervisors.
|
Linux hypervisors.
|
||||||
|
|
||||||
* r0/x0 = HVC_RESET_VECTORS
|
* ::
|
||||||
|
|
||||||
|
r0/x0 = HVC_RESET_VECTORS
|
||||||
|
|
||||||
Turn HYP/EL2 MMU off, and reset HVBAR/VBAR_EL2 to the initials
|
Turn HYP/EL2 MMU off, and reset HVBAR/VBAR_EL2 to the initials
|
||||||
stubs' exception vector value. This effectively disables an existing
|
stubs' exception vector value. This effectively disables an existing
|
||||||
hypervisor.
|
hypervisor.
|
||||||
|
|
||||||
* r0/x0 = HVC_SOFT_RESTART
|
* ::
|
||||||
r1/x1 = restart address
|
|
||||||
x2 = x0's value when entering the next payload (arm64)
|
r0/x0 = HVC_SOFT_RESTART
|
||||||
x3 = x1's value when entering the next payload (arm64)
|
r1/x1 = restart address
|
||||||
x4 = x2's value when entering the next payload (arm64)
|
x2 = x0's value when entering the next payload (arm64)
|
||||||
|
x3 = x1's value when entering the next payload (arm64)
|
||||||
|
x4 = x2's value when entering the next payload (arm64)
|
||||||
|
|
||||||
Mask all exceptions, disable the MMU, move the arguments into place
|
Mask all exceptions, disable the MMU, move the arguments into place
|
||||||
(arm64 only), and jump to the restart address while at HYP/EL2. This
|
(arm64 only), and jump to the restart address while at HYP/EL2. This
|
12
Documentation/virt/kvm/arm/index.rst
Normal file
12
Documentation/virt/kvm/arm/index.rst
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
===
|
||||||
|
ARM
|
||||||
|
===
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
hyp-abi
|
||||||
|
psci
|
||||||
|
pvtime
|
@ -1,3 +1,9 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
=========================================
|
||||||
|
Power State Coordination Interface (PSCI)
|
||||||
|
=========================================
|
||||||
|
|
||||||
KVM implements the PSCI (Power State Coordination Interface)
|
KVM implements the PSCI (Power State Coordination Interface)
|
||||||
specification in order to provide services such as CPU on/off, reset
|
specification in order to provide services such as CPU on/off, reset
|
||||||
and power-off to the guest.
|
and power-off to the guest.
|
||||||
@ -30,32 +36,42 @@ The following register is defined:
|
|||||||
- Affects the whole VM (even if the register view is per-vcpu)
|
- Affects the whole VM (even if the register view is per-vcpu)
|
||||||
|
|
||||||
* KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1:
|
* KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1:
|
||||||
Holds the state of the firmware support to mitigate CVE-2017-5715, as
|
Holds the state of the firmware support to mitigate CVE-2017-5715, as
|
||||||
offered by KVM to the guest via a HVC call. The workaround is described
|
offered by KVM to the guest via a HVC call. The workaround is described
|
||||||
under SMCCC_ARCH_WORKAROUND_1 in [1].
|
under SMCCC_ARCH_WORKAROUND_1 in [1].
|
||||||
|
|
||||||
Accepted values are:
|
Accepted values are:
|
||||||
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL: KVM does not offer
|
|
||||||
|
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL:
|
||||||
|
KVM does not offer
|
||||||
firmware support for the workaround. The mitigation status for the
|
firmware support for the workaround. The mitigation status for the
|
||||||
guest is unknown.
|
guest is unknown.
|
||||||
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL: The workaround HVC call is
|
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL:
|
||||||
|
The workaround HVC call is
|
||||||
available to the guest and required for the mitigation.
|
available to the guest and required for the mitigation.
|
||||||
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED: The workaround HVC call
|
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED:
|
||||||
|
The workaround HVC call
|
||||||
is available to the guest, but it is not needed on this VCPU.
|
is available to the guest, but it is not needed on this VCPU.
|
||||||
|
|
||||||
* KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2:
|
* KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2:
|
||||||
Holds the state of the firmware support to mitigate CVE-2018-3639, as
|
Holds the state of the firmware support to mitigate CVE-2018-3639, as
|
||||||
offered by KVM to the guest via a HVC call. The workaround is described
|
offered by KVM to the guest via a HVC call. The workaround is described
|
||||||
under SMCCC_ARCH_WORKAROUND_2 in [1].
|
under SMCCC_ARCH_WORKAROUND_2 in [1]_.
|
||||||
|
|
||||||
Accepted values are:
|
Accepted values are:
|
||||||
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL: A workaround is not
|
|
||||||
|
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL:
|
||||||
|
A workaround is not
|
||||||
available. KVM does not offer firmware support for the workaround.
|
available. KVM does not offer firmware support for the workaround.
|
||||||
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN: The workaround state is
|
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN:
|
||||||
|
The workaround state is
|
||||||
unknown. KVM does not offer firmware support for the workaround.
|
unknown. KVM does not offer firmware support for the workaround.
|
||||||
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_AVAIL: The workaround is available,
|
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_AVAIL:
|
||||||
|
The workaround is available,
|
||||||
and can be disabled by a vCPU. If
|
and can be disabled by a vCPU. If
|
||||||
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_ENABLED is set, it is active for
|
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_ENABLED is set, it is active for
|
||||||
this vCPU.
|
this vCPU.
|
||||||
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_REQUIRED: The workaround is
|
KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_REQUIRED:
|
||||||
always active on this vCPU or it is not needed.
|
The workaround is always active on this vCPU or it is not needed.
|
||||||
|
|
||||||
[1] https://developer.arm.com/-/media/developer/pdf/ARM_DEN_0070A_Firmware_interfaces_for_mitigating_CVE-2017-5715.pdf
|
.. [1] https://developer.arm.com/-/media/developer/pdf/ARM_DEN_0070A_Firmware_interfaces_for_mitigating_CVE-2017-5715.pdf
|
@ -1,3 +1,6 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
===============================================
|
||||||
ARM Virtual Interrupt Translation Service (ITS)
|
ARM Virtual Interrupt Translation Service (ITS)
|
||||||
===============================================
|
===============================================
|
||||||
|
|
||||||
@ -12,22 +15,32 @@ There can be multiple ITS controllers per guest, each of them has to have
|
|||||||
a separate, non-overlapping MMIO region.
|
a separate, non-overlapping MMIO region.
|
||||||
|
|
||||||
|
|
||||||
Groups:
|
Groups
|
||||||
KVM_DEV_ARM_VGIC_GRP_ADDR
|
======
|
||||||
|
|
||||||
|
KVM_DEV_ARM_VGIC_GRP_ADDR
|
||||||
|
-------------------------
|
||||||
|
|
||||||
Attributes:
|
Attributes:
|
||||||
KVM_VGIC_ITS_ADDR_TYPE (rw, 64-bit)
|
KVM_VGIC_ITS_ADDR_TYPE (rw, 64-bit)
|
||||||
Base address in the guest physical address space of the GICv3 ITS
|
Base address in the guest physical address space of the GICv3 ITS
|
||||||
control register frame.
|
control register frame.
|
||||||
This address needs to be 64K aligned and the region covers 128K.
|
This address needs to be 64K aligned and the region covers 128K.
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-E2BIG: Address outside of addressable IPA range
|
|
||||||
-EINVAL: Incorrectly aligned address
|
======= =================================================
|
||||||
-EEXIST: Address already configured
|
-E2BIG Address outside of addressable IPA range
|
||||||
-EFAULT: Invalid user pointer for attr->addr.
|
-EINVAL Incorrectly aligned address
|
||||||
-ENODEV: Incorrect attribute or the ITS is not supported.
|
-EEXIST Address already configured
|
||||||
|
-EFAULT Invalid user pointer for attr->addr.
|
||||||
|
-ENODEV Incorrect attribute or the ITS is not supported.
|
||||||
|
======= =================================================
|
||||||
|
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_GRP_CTRL
|
KVM_DEV_ARM_VGIC_GRP_CTRL
|
||||||
|
-------------------------
|
||||||
|
|
||||||
Attributes:
|
Attributes:
|
||||||
KVM_DEV_ARM_VGIC_CTRL_INIT
|
KVM_DEV_ARM_VGIC_CTRL_INIT
|
||||||
request the initialization of the ITS, no additional parameter in
|
request the initialization of the ITS, no additional parameter in
|
||||||
@ -58,16 +71,21 @@ Groups:
|
|||||||
"ITS Restore Sequence".
|
"ITS Restore Sequence".
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-ENXIO: ITS not properly configured as required prior to setting
|
|
||||||
this attribute
|
|
||||||
-ENOMEM: Memory shortage when allocating ITS internal data
|
|
||||||
-EINVAL: Inconsistent restored data
|
|
||||||
-EFAULT: Invalid guest ram access
|
|
||||||
-EBUSY: One or more VCPUS are running
|
|
||||||
-EACCES: The virtual ITS is backed by a physical GICv4 ITS, and the
|
|
||||||
state is not available
|
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_GRP_ITS_REGS
|
======= ==========================================================
|
||||||
|
-ENXIO ITS not properly configured as required prior to setting
|
||||||
|
this attribute
|
||||||
|
-ENOMEM Memory shortage when allocating ITS internal data
|
||||||
|
-EINVAL Inconsistent restored data
|
||||||
|
-EFAULT Invalid guest ram access
|
||||||
|
-EBUSY One or more VCPUS are running
|
||||||
|
-EACCES The virtual ITS is backed by a physical GICv4 ITS, and the
|
||||||
|
state is not available
|
||||||
|
======= ==========================================================
|
||||||
|
|
||||||
|
KVM_DEV_ARM_VGIC_GRP_ITS_REGS
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
Attributes:
|
Attributes:
|
||||||
The attr field of kvm_device_attr encodes the offset of the
|
The attr field of kvm_device_attr encodes the offset of the
|
||||||
ITS register, relative to the ITS control frame base address
|
ITS register, relative to the ITS control frame base address
|
||||||
@ -78,6 +96,7 @@ Groups:
|
|||||||
be accessed with full length.
|
be accessed with full length.
|
||||||
|
|
||||||
Writes to read-only registers are ignored by the kernel except for:
|
Writes to read-only registers are ignored by the kernel except for:
|
||||||
|
|
||||||
- GITS_CREADR. It must be restored otherwise commands in the queue
|
- GITS_CREADR. It must be restored otherwise commands in the queue
|
||||||
will be re-executed after restoring CWRITER. GITS_CREADR must be
|
will be re-executed after restoring CWRITER. GITS_CREADR must be
|
||||||
restored before restoring the GITS_CTLR which is likely to enable the
|
restored before restoring the GITS_CTLR which is likely to enable the
|
||||||
@ -91,30 +110,36 @@ Groups:
|
|||||||
|
|
||||||
For other registers, getting or setting a register has the same
|
For other registers, getting or setting a register has the same
|
||||||
effect as reading/writing the register on real hardware.
|
effect as reading/writing the register on real hardware.
|
||||||
Errors:
|
|
||||||
-ENXIO: Offset does not correspond to any supported register
|
|
||||||
-EFAULT: Invalid user pointer for attr->addr
|
|
||||||
-EINVAL: Offset is not 64-bit aligned
|
|
||||||
-EBUSY: one or more VCPUS are running
|
|
||||||
|
|
||||||
ITS Restore Sequence:
|
Errors:
|
||||||
-------------------------
|
|
||||||
|
======= ====================================================
|
||||||
|
-ENXIO Offset does not correspond to any supported register
|
||||||
|
-EFAULT Invalid user pointer for attr->addr
|
||||||
|
-EINVAL Offset is not 64-bit aligned
|
||||||
|
-EBUSY one or more VCPUS are running
|
||||||
|
======= ====================================================
|
||||||
|
|
||||||
|
ITS Restore Sequence:
|
||||||
|
---------------------
|
||||||
|
|
||||||
The following ordering must be followed when restoring the GIC and the ITS:
|
The following ordering must be followed when restoring the GIC and the ITS:
|
||||||
|
|
||||||
a) restore all guest memory and create vcpus
|
a) restore all guest memory and create vcpus
|
||||||
b) restore all redistributors
|
b) restore all redistributors
|
||||||
c) provide the ITS base address
|
c) provide the ITS base address
|
||||||
(KVM_DEV_ARM_VGIC_GRP_ADDR)
|
(KVM_DEV_ARM_VGIC_GRP_ADDR)
|
||||||
d) restore the ITS in the following order:
|
d) restore the ITS in the following order:
|
||||||
1. Restore GITS_CBASER
|
|
||||||
2. Restore all other GITS_ registers, except GITS_CTLR!
|
1. Restore GITS_CBASER
|
||||||
3. Load the ITS table data (KVM_DEV_ARM_ITS_RESTORE_TABLES)
|
2. Restore all other ``GITS_`` registers, except GITS_CTLR!
|
||||||
4. Restore GITS_CTLR
|
3. Load the ITS table data (KVM_DEV_ARM_ITS_RESTORE_TABLES)
|
||||||
|
4. Restore GITS_CTLR
|
||||||
|
|
||||||
Then vcpus can be started.
|
Then vcpus can be started.
|
||||||
|
|
||||||
ITS Table ABI REV0:
|
ITS Table ABI REV0:
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Revision 0 of the ABI only supports the features of a virtual GICv3, and does
|
Revision 0 of the ABI only supports the features of a virtual GICv3, and does
|
||||||
not support a virtual GICv4 with support for direct injection of virtual
|
not support a virtual GICv4 with support for direct injection of virtual
|
||||||
@ -125,12 +150,13 @@ Then vcpus can be started.
|
|||||||
entries in the collection are listed in no particular order.
|
entries in the collection are listed in no particular order.
|
||||||
All entries are 8 bytes.
|
All entries are 8 bytes.
|
||||||
|
|
||||||
Device Table Entry (DTE):
|
Device Table Entry (DTE)::
|
||||||
|
|
||||||
bits: | 63| 62 ... 49 | 48 ... 5 | 4 ... 0 |
|
bits: | 63| 62 ... 49 | 48 ... 5 | 4 ... 0 |
|
||||||
values: | V | next | ITT_addr | Size |
|
values: | V | next | ITT_addr | Size |
|
||||||
|
|
||||||
|
where:
|
||||||
|
|
||||||
where;
|
|
||||||
- V indicates whether the entry is valid. If not, other fields
|
- V indicates whether the entry is valid. If not, other fields
|
||||||
are not meaningful.
|
are not meaningful.
|
||||||
- next: equals to 0 if this entry is the last one; otherwise it
|
- next: equals to 0 if this entry is the last one; otherwise it
|
||||||
@ -140,32 +166,34 @@ Then vcpus can be started.
|
|||||||
- Size specifies the supported number of bits for the EventID,
|
- Size specifies the supported number of bits for the EventID,
|
||||||
minus one
|
minus one
|
||||||
|
|
||||||
Collection Table Entry (CTE):
|
Collection Table Entry (CTE)::
|
||||||
|
|
||||||
bits: | 63| 62 .. 52 | 51 ... 16 | 15 ... 0 |
|
bits: | 63| 62 .. 52 | 51 ... 16 | 15 ... 0 |
|
||||||
values: | V | RES0 | RDBase | ICID |
|
values: | V | RES0 | RDBase | ICID |
|
||||||
|
|
||||||
where:
|
where:
|
||||||
|
|
||||||
- V indicates whether the entry is valid. If not, other fields are
|
- V indicates whether the entry is valid. If not, other fields are
|
||||||
not meaningful.
|
not meaningful.
|
||||||
- RES0: reserved field with Should-Be-Zero-or-Preserved behavior.
|
- RES0: reserved field with Should-Be-Zero-or-Preserved behavior.
|
||||||
- RDBase is the PE number (GICR_TYPER.Processor_Number semantic),
|
- RDBase is the PE number (GICR_TYPER.Processor_Number semantic),
|
||||||
- ICID is the collection ID
|
- ICID is the collection ID
|
||||||
|
|
||||||
Interrupt Translation Entry (ITE):
|
Interrupt Translation Entry (ITE)::
|
||||||
|
|
||||||
bits: | 63 ... 48 | 47 ... 16 | 15 ... 0 |
|
bits: | 63 ... 48 | 47 ... 16 | 15 ... 0 |
|
||||||
values: | next | pINTID | ICID |
|
values: | next | pINTID | ICID |
|
||||||
|
|
||||||
where:
|
where:
|
||||||
|
|
||||||
- next: equals to 0 if this entry is the last one; otherwise it corresponds
|
- next: equals to 0 if this entry is the last one; otherwise it corresponds
|
||||||
to the EventID offset to the next ITE capped by 2^16 -1.
|
to the EventID offset to the next ITE capped by 2^16 -1.
|
||||||
- pINTID is the physical LPI ID; if zero, it means the entry is not valid
|
- pINTID is the physical LPI ID; if zero, it means the entry is not valid
|
||||||
and other fields are not meaningful.
|
and other fields are not meaningful.
|
||||||
- ICID is the collection ID
|
- ICID is the collection ID
|
||||||
|
|
||||||
ITS Reset State:
|
ITS Reset State:
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
RESET returns the ITS to the same state that it was when first created and
|
RESET returns the ITS to the same state that it was when first created and
|
||||||
initialized. When the RESET command returns, the following things are
|
initialized. When the RESET command returns, the following things are
|
@ -1,9 +1,12 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
==============================================================
|
||||||
ARM Virtual Generic Interrupt Controller v3 and later (VGICv3)
|
ARM Virtual Generic Interrupt Controller v3 and later (VGICv3)
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
|
|
||||||
Device types supported:
|
Device types supported:
|
||||||
KVM_DEV_TYPE_ARM_VGIC_V3 ARM Generic Interrupt Controller v3.0
|
- KVM_DEV_TYPE_ARM_VGIC_V3 ARM Generic Interrupt Controller v3.0
|
||||||
|
|
||||||
Only one VGIC instance may be instantiated through this API. The created VGIC
|
Only one VGIC instance may be instantiated through this API. The created VGIC
|
||||||
will act as the VM interrupt controller, requiring emulated user-space devices
|
will act as the VM interrupt controller, requiring emulated user-space devices
|
||||||
@ -15,7 +18,8 @@ Creating a guest GICv3 device requires a host GICv3 as well.
|
|||||||
|
|
||||||
Groups:
|
Groups:
|
||||||
KVM_DEV_ARM_VGIC_GRP_ADDR
|
KVM_DEV_ARM_VGIC_GRP_ADDR
|
||||||
Attributes:
|
Attributes:
|
||||||
|
|
||||||
KVM_VGIC_V3_ADDR_TYPE_DIST (rw, 64-bit)
|
KVM_VGIC_V3_ADDR_TYPE_DIST (rw, 64-bit)
|
||||||
Base address in the guest physical address space of the GICv3 distributor
|
Base address in the guest physical address space of the GICv3 distributor
|
||||||
register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V3.
|
register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V3.
|
||||||
@ -29,21 +33,25 @@ Groups:
|
|||||||
This address needs to be 64K aligned.
|
This address needs to be 64K aligned.
|
||||||
|
|
||||||
KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION (rw, 64-bit)
|
KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION (rw, 64-bit)
|
||||||
The attribute data pointed to by kvm_device_attr.addr is a __u64 value:
|
The attribute data pointed to by kvm_device_attr.addr is a __u64 value::
|
||||||
bits: | 63 .... 52 | 51 .... 16 | 15 - 12 |11 - 0
|
|
||||||
values: | count | base | flags | index
|
bits: | 63 .... 52 | 51 .... 16 | 15 - 12 |11 - 0
|
||||||
|
values: | count | base | flags | index
|
||||||
|
|
||||||
- index encodes the unique redistributor region index
|
- index encodes the unique redistributor region index
|
||||||
- flags: reserved for future use, currently 0
|
- flags: reserved for future use, currently 0
|
||||||
- base field encodes bits [51:16] of the guest physical base address
|
- base field encodes bits [51:16] of the guest physical base address
|
||||||
of the first redistributor in the region.
|
of the first redistributor in the region.
|
||||||
- count encodes the number of redistributors in the region. Must be
|
- count encodes the number of redistributors in the region. Must be
|
||||||
greater than 0.
|
greater than 0.
|
||||||
|
|
||||||
There are two 64K pages for each redistributor in the region and
|
There are two 64K pages for each redistributor in the region and
|
||||||
redistributors are laid out contiguously within the region. Regions
|
redistributors are laid out contiguously within the region. Regions
|
||||||
are filled with redistributors in the index order. The sum of all
|
are filled with redistributors in the index order. The sum of all
|
||||||
region count fields must be greater than or equal to the number of
|
region count fields must be greater than or equal to the number of
|
||||||
VCPUs. Redistributor regions must be registered in the incremental
|
VCPUs. Redistributor regions must be registered in the incremental
|
||||||
index order, starting from index 0.
|
index order, starting from index 0.
|
||||||
|
|
||||||
The characteristics of a specific redistributor region can be read
|
The characteristics of a specific redistributor region can be read
|
||||||
by presetting the index field in the attr data.
|
by presetting the index field in the attr data.
|
||||||
Only valid for KVM_DEV_TYPE_ARM_VGIC_V3.
|
Only valid for KVM_DEV_TYPE_ARM_VGIC_V3.
|
||||||
@ -52,23 +60,27 @@ Groups:
|
|||||||
KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION attributes.
|
KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION attributes.
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-E2BIG: Address outside of addressable IPA range
|
|
||||||
-EINVAL: Incorrectly aligned address, bad redistributor region
|
======= =============================================================
|
||||||
|
-E2BIG Address outside of addressable IPA range
|
||||||
|
-EINVAL Incorrectly aligned address, bad redistributor region
|
||||||
count/index, mixed redistributor region attribute usage
|
count/index, mixed redistributor region attribute usage
|
||||||
-EEXIST: Address already configured
|
-EEXIST Address already configured
|
||||||
-ENOENT: Attempt to read the characteristics of a non existing
|
-ENOENT Attempt to read the characteristics of a non existing
|
||||||
redistributor region
|
redistributor region
|
||||||
-ENXIO: The group or attribute is unknown/unsupported for this device
|
-ENXIO The group or attribute is unknown/unsupported for this device
|
||||||
or hardware support is missing.
|
or hardware support is missing.
|
||||||
-EFAULT: Invalid user pointer for attr->addr.
|
-EFAULT Invalid user pointer for attr->addr.
|
||||||
|
======= =============================================================
|
||||||
|
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_GRP_DIST_REGS
|
KVM_DEV_ARM_VGIC_GRP_DIST_REGS, KVM_DEV_ARM_VGIC_GRP_REDIST_REGS
|
||||||
KVM_DEV_ARM_VGIC_GRP_REDIST_REGS
|
Attributes:
|
||||||
Attributes:
|
|
||||||
The attr field of kvm_device_attr encodes two values:
|
The attr field of kvm_device_attr encodes two values::
|
||||||
bits: | 63 .... 32 | 31 .... 0 |
|
|
||||||
values: | mpidr | offset |
|
bits: | 63 .... 32 | 31 .... 0 |
|
||||||
|
values: | mpidr | offset |
|
||||||
|
|
||||||
All distributor regs are (rw, 32-bit) and kvm_device_attr.addr points to a
|
All distributor regs are (rw, 32-bit) and kvm_device_attr.addr points to a
|
||||||
__u32 value. 64-bit registers must be accessed by separately accessing the
|
__u32 value. 64-bit registers must be accessed by separately accessing the
|
||||||
@ -93,7 +105,8 @@ Groups:
|
|||||||
redistributor is accessed. The mpidr is ignored for the distributor.
|
redistributor is accessed. The mpidr is ignored for the distributor.
|
||||||
|
|
||||||
The mpidr encoding is based on the affinity information in the
|
The mpidr encoding is based on the affinity information in the
|
||||||
architecture defined MPIDR, and the field is encoded as follows:
|
architecture defined MPIDR, and the field is encoded as follows::
|
||||||
|
|
||||||
| 63 .... 56 | 55 .... 48 | 47 .... 40 | 39 .... 32 |
|
| 63 .... 56 | 55 .... 48 | 47 .... 40 | 39 .... 32 |
|
||||||
| Aff3 | Aff2 | Aff1 | Aff0 |
|
| Aff3 | Aff2 | Aff1 | Aff0 |
|
||||||
|
|
||||||
@ -148,24 +161,30 @@ Groups:
|
|||||||
ignored.
|
ignored.
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-ENXIO: Getting or setting this register is not yet supported
|
|
||||||
-EBUSY: One or more VCPUs are running
|
====== =====================================================
|
||||||
|
-ENXIO Getting or setting this register is not yet supported
|
||||||
|
-EBUSY One or more VCPUs are running
|
||||||
|
====== =====================================================
|
||||||
|
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS
|
KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS
|
||||||
Attributes:
|
Attributes:
|
||||||
The attr field of kvm_device_attr encodes two values:
|
|
||||||
bits: | 63 .... 32 | 31 .... 16 | 15 .... 0 |
|
The attr field of kvm_device_attr encodes two values::
|
||||||
values: | mpidr | RES | instr |
|
|
||||||
|
bits: | 63 .... 32 | 31 .... 16 | 15 .... 0 |
|
||||||
|
values: | mpidr | RES | instr |
|
||||||
|
|
||||||
The mpidr field encodes the CPU ID based on the affinity information in the
|
The mpidr field encodes the CPU ID based on the affinity information in the
|
||||||
architecture defined MPIDR, and the field is encoded as follows:
|
architecture defined MPIDR, and the field is encoded as follows::
|
||||||
|
|
||||||
| 63 .... 56 | 55 .... 48 | 47 .... 40 | 39 .... 32 |
|
| 63 .... 56 | 55 .... 48 | 47 .... 40 | 39 .... 32 |
|
||||||
| Aff3 | Aff2 | Aff1 | Aff0 |
|
| Aff3 | Aff2 | Aff1 | Aff0 |
|
||||||
|
|
||||||
The instr field encodes the system register to access based on the fields
|
The instr field encodes the system register to access based on the fields
|
||||||
defined in the A64 instruction set encoding for system register access
|
defined in the A64 instruction set encoding for system register access
|
||||||
(RES means the bits are reserved for future use and should be zero):
|
(RES means the bits are reserved for future use and should be zero)::
|
||||||
|
|
||||||
| 15 ... 14 | 13 ... 11 | 10 ... 7 | 6 ... 3 | 2 ... 0 |
|
| 15 ... 14 | 13 ... 11 | 10 ... 7 | 6 ... 3 | 2 ... 0 |
|
||||||
| Op 0 | Op1 | CRn | CRm | Op2 |
|
| Op 0 | Op1 | CRn | CRm | Op2 |
|
||||||
@ -178,26 +197,35 @@ Groups:
|
|||||||
|
|
||||||
CPU interface registers access is not implemented for AArch32 mode.
|
CPU interface registers access is not implemented for AArch32 mode.
|
||||||
Error -ENXIO is returned when accessed in AArch32 mode.
|
Error -ENXIO is returned when accessed in AArch32 mode.
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-ENXIO: Getting or setting this register is not yet supported
|
|
||||||
-EBUSY: VCPU is running
|
======= =====================================================
|
||||||
-EINVAL: Invalid mpidr or register value supplied
|
-ENXIO Getting or setting this register is not yet supported
|
||||||
|
-EBUSY VCPU is running
|
||||||
|
-EINVAL Invalid mpidr or register value supplied
|
||||||
|
======= =====================================================
|
||||||
|
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_GRP_NR_IRQS
|
KVM_DEV_ARM_VGIC_GRP_NR_IRQS
|
||||||
Attributes:
|
Attributes:
|
||||||
|
|
||||||
A value describing the number of interrupts (SGI, PPI and SPI) for
|
A value describing the number of interrupts (SGI, PPI and SPI) for
|
||||||
this GIC instance, ranging from 64 to 1024, in increments of 32.
|
this GIC instance, ranging from 64 to 1024, in increments of 32.
|
||||||
|
|
||||||
kvm_device_attr.addr points to a __u32 value.
|
kvm_device_attr.addr points to a __u32 value.
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-EINVAL: Value set is out of the expected range
|
|
||||||
-EBUSY: Value has already be set.
|
======= ======================================
|
||||||
|
-EINVAL Value set is out of the expected range
|
||||||
|
-EBUSY Value has already be set.
|
||||||
|
======= ======================================
|
||||||
|
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_GRP_CTRL
|
KVM_DEV_ARM_VGIC_GRP_CTRL
|
||||||
Attributes:
|
Attributes:
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_CTRL_INIT
|
KVM_DEV_ARM_VGIC_CTRL_INIT
|
||||||
request the initialization of the VGIC, no additional parameter in
|
request the initialization of the VGIC, no additional parameter in
|
||||||
kvm_device_attr.addr.
|
kvm_device_attr.addr.
|
||||||
@ -205,20 +233,26 @@ Groups:
|
|||||||
save all LPI pending bits into guest RAM pending tables.
|
save all LPI pending bits into guest RAM pending tables.
|
||||||
|
|
||||||
The first kB of the pending table is not altered by this operation.
|
The first kB of the pending table is not altered by this operation.
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-ENXIO: VGIC not properly configured as required prior to calling
|
|
||||||
this attribute
|
======= ========================================================
|
||||||
-ENODEV: no online VCPU
|
-ENXIO VGIC not properly configured as required prior to calling
|
||||||
-ENOMEM: memory shortage when allocating vgic internal data
|
this attribute
|
||||||
-EFAULT: Invalid guest ram access
|
-ENODEV no online VCPU
|
||||||
-EBUSY: One or more VCPUS are running
|
-ENOMEM memory shortage when allocating vgic internal data
|
||||||
|
-EFAULT Invalid guest ram access
|
||||||
|
-EBUSY One or more VCPUS are running
|
||||||
|
======= ========================================================
|
||||||
|
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO
|
KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO
|
||||||
Attributes:
|
Attributes:
|
||||||
The attr field of kvm_device_attr encodes the following values:
|
|
||||||
bits: | 63 .... 32 | 31 .... 10 | 9 .... 0 |
|
The attr field of kvm_device_attr encodes the following values::
|
||||||
values: | mpidr | info | vINTID |
|
|
||||||
|
bits: | 63 .... 32 | 31 .... 10 | 9 .... 0 |
|
||||||
|
values: | mpidr | info | vINTID |
|
||||||
|
|
||||||
The vINTID specifies which set of IRQs is reported on.
|
The vINTID specifies which set of IRQs is reported on.
|
||||||
|
|
||||||
@ -228,6 +262,7 @@ Groups:
|
|||||||
VGIC_LEVEL_INFO_LINE_LEVEL:
|
VGIC_LEVEL_INFO_LINE_LEVEL:
|
||||||
Get/Set the input level of the IRQ line for a set of 32 contiguously
|
Get/Set the input level of the IRQ line for a set of 32 contiguously
|
||||||
numbered interrupts.
|
numbered interrupts.
|
||||||
|
|
||||||
vINTID must be a multiple of 32.
|
vINTID must be a multiple of 32.
|
||||||
|
|
||||||
kvm_device_attr.addr points to a __u32 value which will contain a
|
kvm_device_attr.addr points to a __u32 value which will contain a
|
||||||
@ -243,9 +278,14 @@ Groups:
|
|||||||
reported with the same value regardless of the mpidr specified.
|
reported with the same value regardless of the mpidr specified.
|
||||||
|
|
||||||
The mpidr field encodes the CPU ID based on the affinity information in the
|
The mpidr field encodes the CPU ID based on the affinity information in the
|
||||||
architecture defined MPIDR, and the field is encoded as follows:
|
architecture defined MPIDR, and the field is encoded as follows::
|
||||||
|
|
||||||
| 63 .... 56 | 55 .... 48 | 47 .... 40 | 39 .... 32 |
|
| 63 .... 56 | 55 .... 48 | 47 .... 40 | 39 .... 32 |
|
||||||
| Aff3 | Aff2 | Aff1 | Aff0 |
|
| Aff3 | Aff2 | Aff1 | Aff0 |
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-EINVAL: vINTID is not multiple of 32 or
|
|
||||||
info field is not VGIC_LEVEL_INFO_LINE_LEVEL
|
======= =============================================
|
||||||
|
-EINVAL vINTID is not multiple of 32 or info field is
|
||||||
|
not VGIC_LEVEL_INFO_LINE_LEVEL
|
||||||
|
======= =============================================
|
@ -1,8 +1,12 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
==================================================
|
||||||
ARM Virtual Generic Interrupt Controller v2 (VGIC)
|
ARM Virtual Generic Interrupt Controller v2 (VGIC)
|
||||||
==================================================
|
==================================================
|
||||||
|
|
||||||
Device types supported:
|
Device types supported:
|
||||||
KVM_DEV_TYPE_ARM_VGIC_V2 ARM Generic Interrupt Controller v2.0
|
|
||||||
|
- KVM_DEV_TYPE_ARM_VGIC_V2 ARM Generic Interrupt Controller v2.0
|
||||||
|
|
||||||
Only one VGIC instance may be instantiated through either this API or the
|
Only one VGIC instance may be instantiated through either this API or the
|
||||||
legacy KVM_CREATE_IRQCHIP API. The created VGIC will act as the VM interrupt
|
legacy KVM_CREATE_IRQCHIP API. The created VGIC will act as the VM interrupt
|
||||||
@ -17,7 +21,8 @@ create both a GICv3 and GICv2 device on the same VM.
|
|||||||
|
|
||||||
Groups:
|
Groups:
|
||||||
KVM_DEV_ARM_VGIC_GRP_ADDR
|
KVM_DEV_ARM_VGIC_GRP_ADDR
|
||||||
Attributes:
|
Attributes:
|
||||||
|
|
||||||
KVM_VGIC_V2_ADDR_TYPE_DIST (rw, 64-bit)
|
KVM_VGIC_V2_ADDR_TYPE_DIST (rw, 64-bit)
|
||||||
Base address in the guest physical address space of the GIC distributor
|
Base address in the guest physical address space of the GIC distributor
|
||||||
register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V2.
|
register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V2.
|
||||||
@ -27,19 +32,25 @@ Groups:
|
|||||||
Base address in the guest physical address space of the GIC virtual cpu
|
Base address in the guest physical address space of the GIC virtual cpu
|
||||||
interface register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V2.
|
interface register mappings. Only valid for KVM_DEV_TYPE_ARM_VGIC_V2.
|
||||||
This address needs to be 4K aligned and the region covers 4 KByte.
|
This address needs to be 4K aligned and the region covers 4 KByte.
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-E2BIG: Address outside of addressable IPA range
|
|
||||||
-EINVAL: Incorrectly aligned address
|
======= =============================================================
|
||||||
-EEXIST: Address already configured
|
-E2BIG Address outside of addressable IPA range
|
||||||
-ENXIO: The group or attribute is unknown/unsupported for this device
|
-EINVAL Incorrectly aligned address
|
||||||
|
-EEXIST Address already configured
|
||||||
|
-ENXIO The group or attribute is unknown/unsupported for this device
|
||||||
or hardware support is missing.
|
or hardware support is missing.
|
||||||
-EFAULT: Invalid user pointer for attr->addr.
|
-EFAULT Invalid user pointer for attr->addr.
|
||||||
|
======= =============================================================
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_GRP_DIST_REGS
|
KVM_DEV_ARM_VGIC_GRP_DIST_REGS
|
||||||
Attributes:
|
Attributes:
|
||||||
The attr field of kvm_device_attr encodes two values:
|
|
||||||
bits: | 63 .... 40 | 39 .. 32 | 31 .... 0 |
|
The attr field of kvm_device_attr encodes two values::
|
||||||
values: | reserved | vcpu_index | offset |
|
|
||||||
|
bits: | 63 .... 40 | 39 .. 32 | 31 .... 0 |
|
||||||
|
values: | reserved | vcpu_index | offset |
|
||||||
|
|
||||||
All distributor regs are (rw, 32-bit)
|
All distributor regs are (rw, 32-bit)
|
||||||
|
|
||||||
@ -58,16 +69,22 @@ Groups:
|
|||||||
KVM_DEV_ARM_VGIC_GRP_DIST_REGS and KVM_DEV_ARM_VGIC_GRP_CPU_REGS) to ensure
|
KVM_DEV_ARM_VGIC_GRP_DIST_REGS and KVM_DEV_ARM_VGIC_GRP_CPU_REGS) to ensure
|
||||||
the expected behavior. Unless GICD_IIDR has been set from userspace, writes
|
the expected behavior. Unless GICD_IIDR has been set from userspace, writes
|
||||||
to the interrupt group registers (GICD_IGROUPR) are ignored.
|
to the interrupt group registers (GICD_IGROUPR) are ignored.
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-ENXIO: Getting or setting this register is not yet supported
|
|
||||||
-EBUSY: One or more VCPUs are running
|
======= =====================================================
|
||||||
-EINVAL: Invalid vcpu_index supplied
|
-ENXIO Getting or setting this register is not yet supported
|
||||||
|
-EBUSY One or more VCPUs are running
|
||||||
|
-EINVAL Invalid vcpu_index supplied
|
||||||
|
======= =====================================================
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_GRP_CPU_REGS
|
KVM_DEV_ARM_VGIC_GRP_CPU_REGS
|
||||||
Attributes:
|
Attributes:
|
||||||
The attr field of kvm_device_attr encodes two values:
|
|
||||||
bits: | 63 .... 40 | 39 .. 32 | 31 .... 0 |
|
The attr field of kvm_device_attr encodes two values::
|
||||||
values: | reserved | vcpu_index | offset |
|
|
||||||
|
bits: | 63 .... 40 | 39 .. 32 | 31 .... 0 |
|
||||||
|
values: | reserved | vcpu_index | offset |
|
||||||
|
|
||||||
All CPU interface regs are (rw, 32-bit)
|
All CPU interface regs are (rw, 32-bit)
|
||||||
|
|
||||||
@ -101,27 +118,39 @@ Groups:
|
|||||||
value left by 3 places to obtain the actual priority mask level.
|
value left by 3 places to obtain the actual priority mask level.
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-ENXIO: Getting or setting this register is not yet supported
|
|
||||||
-EBUSY: One or more VCPUs are running
|
======= =====================================================
|
||||||
-EINVAL: Invalid vcpu_index supplied
|
-ENXIO Getting or setting this register is not yet supported
|
||||||
|
-EBUSY One or more VCPUs are running
|
||||||
|
-EINVAL Invalid vcpu_index supplied
|
||||||
|
======= =====================================================
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_GRP_NR_IRQS
|
KVM_DEV_ARM_VGIC_GRP_NR_IRQS
|
||||||
Attributes:
|
Attributes:
|
||||||
|
|
||||||
A value describing the number of interrupts (SGI, PPI and SPI) for
|
A value describing the number of interrupts (SGI, PPI and SPI) for
|
||||||
this GIC instance, ranging from 64 to 1024, in increments of 32.
|
this GIC instance, ranging from 64 to 1024, in increments of 32.
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-EINVAL: Value set is out of the expected range
|
|
||||||
-EBUSY: Value has already be set, or GIC has already been initialized
|
======= =============================================================
|
||||||
with default values.
|
-EINVAL Value set is out of the expected range
|
||||||
|
-EBUSY Value has already be set, or GIC has already been initialized
|
||||||
|
with default values.
|
||||||
|
======= =============================================================
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_GRP_CTRL
|
KVM_DEV_ARM_VGIC_GRP_CTRL
|
||||||
Attributes:
|
Attributes:
|
||||||
|
|
||||||
KVM_DEV_ARM_VGIC_CTRL_INIT
|
KVM_DEV_ARM_VGIC_CTRL_INIT
|
||||||
request the initialization of the VGIC or ITS, no additional parameter
|
request the initialization of the VGIC or ITS, no additional parameter
|
||||||
in kvm_device_attr.addr.
|
in kvm_device_attr.addr.
|
||||||
|
|
||||||
Errors:
|
Errors:
|
||||||
-ENXIO: VGIC not properly configured as required prior to calling
|
|
||||||
this attribute
|
======= =========================================================
|
||||||
-ENODEV: no online VCPU
|
-ENXIO VGIC not properly configured as required prior to calling
|
||||||
-ENOMEM: memory shortage when allocating vgic internal data
|
this attribute
|
||||||
|
-ENODEV no online VCPU
|
||||||
|
-ENOMEM memory shortage when allocating vgic internal data
|
||||||
|
======= =========================================================
|
19
Documentation/virt/kvm/devices/index.rst
Normal file
19
Documentation/virt/kvm/devices/index.rst
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
=======
|
||||||
|
Devices
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
arm-vgic-its
|
||||||
|
arm-vgic
|
||||||
|
arm-vgic-v3
|
||||||
|
mpic
|
||||||
|
s390_flic
|
||||||
|
vcpu
|
||||||
|
vfio
|
||||||
|
vm
|
||||||
|
xics
|
||||||
|
xive
|
@ -1,9 +1,13 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
=========================
|
||||||
MPIC interrupt controller
|
MPIC interrupt controller
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
Device types supported:
|
Device types supported:
|
||||||
KVM_DEV_TYPE_FSL_MPIC_20 Freescale MPIC v2.0
|
|
||||||
KVM_DEV_TYPE_FSL_MPIC_42 Freescale MPIC v4.2
|
- KVM_DEV_TYPE_FSL_MPIC_20 Freescale MPIC v2.0
|
||||||
|
- KVM_DEV_TYPE_FSL_MPIC_42 Freescale MPIC v4.2
|
||||||
|
|
||||||
Only one MPIC instance, of any type, may be instantiated. The created
|
Only one MPIC instance, of any type, may be instantiated. The created
|
||||||
MPIC will act as the system interrupt controller, connecting to each
|
MPIC will act as the system interrupt controller, connecting to each
|
||||||
@ -11,7 +15,8 @@ vcpu's interrupt inputs.
|
|||||||
|
|
||||||
Groups:
|
Groups:
|
||||||
KVM_DEV_MPIC_GRP_MISC
|
KVM_DEV_MPIC_GRP_MISC
|
||||||
Attributes:
|
Attributes:
|
||||||
|
|
||||||
KVM_DEV_MPIC_BASE_ADDR (rw, 64-bit)
|
KVM_DEV_MPIC_BASE_ADDR (rw, 64-bit)
|
||||||
Base address of the 256 KiB MPIC register space. Must be
|
Base address of the 256 KiB MPIC register space. Must be
|
||||||
naturally aligned. A value of zero disables the mapping.
|
naturally aligned. A value of zero disables the mapping.
|
@ -1,3 +1,6 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
====================================
|
||||||
FLIC (floating interrupt controller)
|
FLIC (floating interrupt controller)
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
@ -31,8 +34,10 @@ Groups:
|
|||||||
Copies all floating interrupts into a buffer provided by userspace.
|
Copies all floating interrupts into a buffer provided by userspace.
|
||||||
When the buffer is too small it returns -ENOMEM, which is the indication
|
When the buffer is too small it returns -ENOMEM, which is the indication
|
||||||
for userspace to try again with a bigger buffer.
|
for userspace to try again with a bigger buffer.
|
||||||
|
|
||||||
-ENOBUFS is returned when the allocation of a kernelspace buffer has
|
-ENOBUFS is returned when the allocation of a kernelspace buffer has
|
||||||
failed.
|
failed.
|
||||||
|
|
||||||
-EFAULT is returned when copying data to userspace failed.
|
-EFAULT is returned when copying data to userspace failed.
|
||||||
All interrupts remain pending, i.e. are not deleted from the list of
|
All interrupts remain pending, i.e. are not deleted from the list of
|
||||||
currently pending interrupts.
|
currently pending interrupts.
|
||||||
@ -60,38 +65,41 @@ Groups:
|
|||||||
|
|
||||||
KVM_DEV_FLIC_ADAPTER_REGISTER
|
KVM_DEV_FLIC_ADAPTER_REGISTER
|
||||||
Register an I/O adapter interrupt source. Takes a kvm_s390_io_adapter
|
Register an I/O adapter interrupt source. Takes a kvm_s390_io_adapter
|
||||||
describing the adapter to register:
|
describing the adapter to register::
|
||||||
|
|
||||||
struct kvm_s390_io_adapter {
|
struct kvm_s390_io_adapter {
|
||||||
__u32 id;
|
__u32 id;
|
||||||
__u8 isc;
|
__u8 isc;
|
||||||
__u8 maskable;
|
__u8 maskable;
|
||||||
__u8 swap;
|
__u8 swap;
|
||||||
__u8 flags;
|
__u8 flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
id contains the unique id for the adapter, isc the I/O interruption subclass
|
id contains the unique id for the adapter, isc the I/O interruption subclass
|
||||||
to use, maskable whether this adapter may be masked (interrupts turned off),
|
to use, maskable whether this adapter may be masked (interrupts turned off),
|
||||||
swap whether the indicators need to be byte swapped, and flags contains
|
swap whether the indicators need to be byte swapped, and flags contains
|
||||||
further characteristics of the adapter.
|
further characteristics of the adapter.
|
||||||
|
|
||||||
Currently defined values for 'flags' are:
|
Currently defined values for 'flags' are:
|
||||||
|
|
||||||
- KVM_S390_ADAPTER_SUPPRESSIBLE: adapter is subject to AIS
|
- KVM_S390_ADAPTER_SUPPRESSIBLE: adapter is subject to AIS
|
||||||
(adapter-interrupt-suppression) facility. This flag only has an effect if
|
(adapter-interrupt-suppression) facility. This flag only has an effect if
|
||||||
the AIS capability is enabled.
|
the AIS capability is enabled.
|
||||||
|
|
||||||
Unknown flag values are ignored.
|
Unknown flag values are ignored.
|
||||||
|
|
||||||
|
|
||||||
KVM_DEV_FLIC_ADAPTER_MODIFY
|
KVM_DEV_FLIC_ADAPTER_MODIFY
|
||||||
Modifies attributes of an existing I/O adapter interrupt source. Takes
|
Modifies attributes of an existing I/O adapter interrupt source. Takes
|
||||||
a kvm_s390_io_adapter_req specifying the adapter and the operation:
|
a kvm_s390_io_adapter_req specifying the adapter and the operation::
|
||||||
|
|
||||||
struct kvm_s390_io_adapter_req {
|
struct kvm_s390_io_adapter_req {
|
||||||
__u32 id;
|
__u32 id;
|
||||||
__u8 type;
|
__u8 type;
|
||||||
__u8 mask;
|
__u8 mask;
|
||||||
__u16 pad0;
|
__u16 pad0;
|
||||||
__u64 addr;
|
__u64 addr;
|
||||||
};
|
};
|
||||||
|
|
||||||
id specifies the adapter and type the operation. The supported operations
|
id specifies the adapter and type the operation. The supported operations
|
||||||
are:
|
are:
|
||||||
@ -103,8 +111,9 @@ struct kvm_s390_io_adapter_req {
|
|||||||
perform a gmap translation for the guest address provided in addr,
|
perform a gmap translation for the guest address provided in addr,
|
||||||
pin a userspace page for the translated address and add it to the
|
pin a userspace page for the translated address and add it to the
|
||||||
list of mappings
|
list of mappings
|
||||||
Note: A new mapping will be created unconditionally; therefore,
|
|
||||||
the calling code should avoid making duplicate mappings.
|
.. note:: A new mapping will be created unconditionally; therefore,
|
||||||
|
the calling code should avoid making duplicate mappings.
|
||||||
|
|
||||||
KVM_S390_IO_ADAPTER_UNMAP
|
KVM_S390_IO_ADAPTER_UNMAP
|
||||||
release a userspace page for the translated address specified in addr
|
release a userspace page for the translated address specified in addr
|
||||||
@ -112,16 +121,17 @@ struct kvm_s390_io_adapter_req {
|
|||||||
|
|
||||||
KVM_DEV_FLIC_AISM
|
KVM_DEV_FLIC_AISM
|
||||||
modify the adapter-interruption-suppression mode for a given isc if the
|
modify the adapter-interruption-suppression mode for a given isc if the
|
||||||
AIS capability is enabled. Takes a kvm_s390_ais_req describing:
|
AIS capability is enabled. Takes a kvm_s390_ais_req describing::
|
||||||
|
|
||||||
struct kvm_s390_ais_req {
|
struct kvm_s390_ais_req {
|
||||||
__u8 isc;
|
__u8 isc;
|
||||||
__u16 mode;
|
__u16 mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
isc contains the target I/O interruption subclass, mode the target
|
isc contains the target I/O interruption subclass, mode the target
|
||||||
adapter-interruption-suppression mode. The following modes are
|
adapter-interruption-suppression mode. The following modes are
|
||||||
currently supported:
|
currently supported:
|
||||||
|
|
||||||
- KVM_S390_AIS_MODE_ALL: ALL-Interruptions Mode, i.e. airq injection
|
- KVM_S390_AIS_MODE_ALL: ALL-Interruptions Mode, i.e. airq injection
|
||||||
is always allowed;
|
is always allowed;
|
||||||
- KVM_S390_AIS_MODE_SINGLE: SINGLE-Interruption Mode, i.e. airq
|
- KVM_S390_AIS_MODE_SINGLE: SINGLE-Interruption Mode, i.e. airq
|
||||||
@ -139,12 +149,12 @@ struct kvm_s390_ais_req {
|
|||||||
|
|
||||||
KVM_DEV_FLIC_AISM_ALL
|
KVM_DEV_FLIC_AISM_ALL
|
||||||
Gets or sets the adapter-interruption-suppression mode for all ISCs. Takes
|
Gets or sets the adapter-interruption-suppression mode for all ISCs. Takes
|
||||||
a kvm_s390_ais_all describing:
|
a kvm_s390_ais_all describing::
|
||||||
|
|
||||||
struct kvm_s390_ais_all {
|
struct kvm_s390_ais_all {
|
||||||
__u8 simm; /* Single-Interruption-Mode mask */
|
__u8 simm; /* Single-Interruption-Mode mask */
|
||||||
__u8 nimm; /* No-Interruption-Mode mask *
|
__u8 nimm; /* No-Interruption-Mode mask *
|
||||||
};
|
};
|
||||||
|
|
||||||
simm contains Single-Interruption-Mode mask for all ISCs, nimm contains
|
simm contains Single-Interruption-Mode mask for all ISCs, nimm contains
|
||||||
No-Interruption-Mode mask for all ISCs. Each bit in simm and nimm corresponds
|
No-Interruption-Mode mask for all ISCs. Each bit in simm and nimm corresponds
|
||||||
@ -159,5 +169,5 @@ ENXIO, as specified in the API documentation). It is not possible to conclude
|
|||||||
that a FLIC operation is unavailable based on the error code resulting from a
|
that a FLIC operation is unavailable based on the error code resulting from a
|
||||||
usage attempt.
|
usage attempt.
|
||||||
|
|
||||||
Note: The KVM_DEV_FLIC_CLEAR_IO_IRQ ioctl will return EINVAL in case a zero
|
.. note:: The KVM_DEV_FLIC_CLEAR_IO_IRQ ioctl will return EINVAL in case a
|
||||||
schid is specified.
|
zero schid is specified.
|
114
Documentation/virt/kvm/devices/vcpu.rst
Normal file
114
Documentation/virt/kvm/devices/vcpu.rst
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
======================
|
||||||
|
Generic vcpu interface
|
||||||
|
======================
|
||||||
|
|
||||||
|
The virtual cpu "device" also accepts the ioctls KVM_SET_DEVICE_ATTR,
|
||||||
|
KVM_GET_DEVICE_ATTR, and KVM_HAS_DEVICE_ATTR. The interface uses the same struct
|
||||||
|
kvm_device_attr as other devices, but targets VCPU-wide settings and controls.
|
||||||
|
|
||||||
|
The groups and attributes per virtual cpu, if any, are architecture specific.
|
||||||
|
|
||||||
|
1. GROUP: KVM_ARM_VCPU_PMU_V3_CTRL
|
||||||
|
==================================
|
||||||
|
|
||||||
|
:Architectures: ARM64
|
||||||
|
|
||||||
|
1.1. ATTRIBUTE: KVM_ARM_VCPU_PMU_V3_IRQ
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
:Parameters: in kvm_device_attr.addr the address for PMU overflow interrupt is a
|
||||||
|
pointer to an int
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
======= ========================================================
|
||||||
|
-EBUSY The PMU overflow interrupt is already set
|
||||||
|
-ENXIO The overflow interrupt not set when attempting to get it
|
||||||
|
-ENODEV PMUv3 not supported
|
||||||
|
-EINVAL Invalid PMU overflow interrupt number supplied or
|
||||||
|
trying to set the IRQ number without using an in-kernel
|
||||||
|
irqchip.
|
||||||
|
======= ========================================================
|
||||||
|
|
||||||
|
A value describing the PMUv3 (Performance Monitor Unit v3) overflow interrupt
|
||||||
|
number for this vcpu. This interrupt could be a PPI or SPI, but the interrupt
|
||||||
|
type must be same for each vcpu. As a PPI, the interrupt number is the same for
|
||||||
|
all vcpus, while as an SPI it must be a separate number per vcpu.
|
||||||
|
|
||||||
|
1.2 ATTRIBUTE: KVM_ARM_VCPU_PMU_V3_INIT
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
:Parameters: no additional parameter in kvm_device_attr.addr
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
======= ======================================================
|
||||||
|
-ENODEV PMUv3 not supported or GIC not initialized
|
||||||
|
-ENXIO PMUv3 not properly configured or in-kernel irqchip not
|
||||||
|
configured as required prior to calling this attribute
|
||||||
|
-EBUSY PMUv3 already initialized
|
||||||
|
======= ======================================================
|
||||||
|
|
||||||
|
Request the initialization of the PMUv3. If using the PMUv3 with an in-kernel
|
||||||
|
virtual GIC implementation, this must be done after initializing the in-kernel
|
||||||
|
irqchip.
|
||||||
|
|
||||||
|
|
||||||
|
2. GROUP: KVM_ARM_VCPU_TIMER_CTRL
|
||||||
|
=================================
|
||||||
|
|
||||||
|
:Architectures: ARM, ARM64
|
||||||
|
|
||||||
|
2.1. ATTRIBUTES: KVM_ARM_VCPU_TIMER_IRQ_VTIMER, KVM_ARM_VCPU_TIMER_IRQ_PTIMER
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
:Parameters: in kvm_device_attr.addr the address for the timer interrupt is a
|
||||||
|
pointer to an int
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
======= =================================
|
||||||
|
-EINVAL Invalid timer interrupt number
|
||||||
|
-EBUSY One or more VCPUs has already run
|
||||||
|
======= =================================
|
||||||
|
|
||||||
|
A value describing the architected timer interrupt number when connected to an
|
||||||
|
in-kernel virtual GIC. These must be a PPI (16 <= intid < 32). Setting the
|
||||||
|
attribute overrides the default values (see below).
|
||||||
|
|
||||||
|
============================= ==========================================
|
||||||
|
KVM_ARM_VCPU_TIMER_IRQ_VTIMER The EL1 virtual timer intid (default: 27)
|
||||||
|
KVM_ARM_VCPU_TIMER_IRQ_PTIMER The EL1 physical timer intid (default: 30)
|
||||||
|
============================= ==========================================
|
||||||
|
|
||||||
|
Setting the same PPI for different timers will prevent the VCPUs from running.
|
||||||
|
Setting the interrupt number on a VCPU configures all VCPUs created at that
|
||||||
|
time to use the number provided for a given timer, overwriting any previously
|
||||||
|
configured values on other VCPUs. Userspace should configure the interrupt
|
||||||
|
numbers on at least one VCPU after creating all VCPUs and before running any
|
||||||
|
VCPUs.
|
||||||
|
|
||||||
|
3. GROUP: KVM_ARM_VCPU_PVTIME_CTRL
|
||||||
|
==================================
|
||||||
|
|
||||||
|
:Architectures: ARM64
|
||||||
|
|
||||||
|
3.1 ATTRIBUTE: KVM_ARM_VCPU_PVTIME_IPA
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
:Parameters: 64-bit base address
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
======= ======================================
|
||||||
|
-ENXIO Stolen time not implemented
|
||||||
|
-EEXIST Base address already set for this VCPU
|
||||||
|
-EINVAL Base address not 64 byte aligned
|
||||||
|
======= ======================================
|
||||||
|
|
||||||
|
Specifies the base address of the stolen time structure for this VCPU. The
|
||||||
|
base address must be 64 byte aligned and exist within a valid guest memory
|
||||||
|
region. See Documentation/virt/kvm/arm/pvtime.txt for more information
|
||||||
|
including the layout of the stolen time structure.
|
@ -1,76 +0,0 @@
|
|||||||
Generic vcpu interface
|
|
||||||
====================================
|
|
||||||
|
|
||||||
The virtual cpu "device" also accepts the ioctls KVM_SET_DEVICE_ATTR,
|
|
||||||
KVM_GET_DEVICE_ATTR, and KVM_HAS_DEVICE_ATTR. The interface uses the same struct
|
|
||||||
kvm_device_attr as other devices, but targets VCPU-wide settings and controls.
|
|
||||||
|
|
||||||
The groups and attributes per virtual cpu, if any, are architecture specific.
|
|
||||||
|
|
||||||
1. GROUP: KVM_ARM_VCPU_PMU_V3_CTRL
|
|
||||||
Architectures: ARM64
|
|
||||||
|
|
||||||
1.1. ATTRIBUTE: KVM_ARM_VCPU_PMU_V3_IRQ
|
|
||||||
Parameters: in kvm_device_attr.addr the address for PMU overflow interrupt is a
|
|
||||||
pointer to an int
|
|
||||||
Returns: -EBUSY: The PMU overflow interrupt is already set
|
|
||||||
-ENXIO: The overflow interrupt not set when attempting to get it
|
|
||||||
-ENODEV: PMUv3 not supported
|
|
||||||
-EINVAL: Invalid PMU overflow interrupt number supplied or
|
|
||||||
trying to set the IRQ number without using an in-kernel
|
|
||||||
irqchip.
|
|
||||||
|
|
||||||
A value describing the PMUv3 (Performance Monitor Unit v3) overflow interrupt
|
|
||||||
number for this vcpu. This interrupt could be a PPI or SPI, but the interrupt
|
|
||||||
type must be same for each vcpu. As a PPI, the interrupt number is the same for
|
|
||||||
all vcpus, while as an SPI it must be a separate number per vcpu.
|
|
||||||
|
|
||||||
1.2 ATTRIBUTE: KVM_ARM_VCPU_PMU_V3_INIT
|
|
||||||
Parameters: no additional parameter in kvm_device_attr.addr
|
|
||||||
Returns: -ENODEV: PMUv3 not supported or GIC not initialized
|
|
||||||
-ENXIO: PMUv3 not properly configured or in-kernel irqchip not
|
|
||||||
configured as required prior to calling this attribute
|
|
||||||
-EBUSY: PMUv3 already initialized
|
|
||||||
|
|
||||||
Request the initialization of the PMUv3. If using the PMUv3 with an in-kernel
|
|
||||||
virtual GIC implementation, this must be done after initializing the in-kernel
|
|
||||||
irqchip.
|
|
||||||
|
|
||||||
|
|
||||||
2. GROUP: KVM_ARM_VCPU_TIMER_CTRL
|
|
||||||
Architectures: ARM,ARM64
|
|
||||||
|
|
||||||
2.1. ATTRIBUTE: KVM_ARM_VCPU_TIMER_IRQ_VTIMER
|
|
||||||
2.2. ATTRIBUTE: KVM_ARM_VCPU_TIMER_IRQ_PTIMER
|
|
||||||
Parameters: in kvm_device_attr.addr the address for the timer interrupt is a
|
|
||||||
pointer to an int
|
|
||||||
Returns: -EINVAL: Invalid timer interrupt number
|
|
||||||
-EBUSY: One or more VCPUs has already run
|
|
||||||
|
|
||||||
A value describing the architected timer interrupt number when connected to an
|
|
||||||
in-kernel virtual GIC. These must be a PPI (16 <= intid < 32). Setting the
|
|
||||||
attribute overrides the default values (see below).
|
|
||||||
|
|
||||||
KVM_ARM_VCPU_TIMER_IRQ_VTIMER: The EL1 virtual timer intid (default: 27)
|
|
||||||
KVM_ARM_VCPU_TIMER_IRQ_PTIMER: The EL1 physical timer intid (default: 30)
|
|
||||||
|
|
||||||
Setting the same PPI for different timers will prevent the VCPUs from running.
|
|
||||||
Setting the interrupt number on a VCPU configures all VCPUs created at that
|
|
||||||
time to use the number provided for a given timer, overwriting any previously
|
|
||||||
configured values on other VCPUs. Userspace should configure the interrupt
|
|
||||||
numbers on at least one VCPU after creating all VCPUs and before running any
|
|
||||||
VCPUs.
|
|
||||||
|
|
||||||
3. GROUP: KVM_ARM_VCPU_PVTIME_CTRL
|
|
||||||
Architectures: ARM64
|
|
||||||
|
|
||||||
3.1 ATTRIBUTE: KVM_ARM_VCPU_PVTIME_IPA
|
|
||||||
Parameters: 64-bit base address
|
|
||||||
Returns: -ENXIO: Stolen time not implemented
|
|
||||||
-EEXIST: Base address already set for this VCPU
|
|
||||||
-EINVAL: Base address not 64 byte aligned
|
|
||||||
|
|
||||||
Specifies the base address of the stolen time structure for this VCPU. The
|
|
||||||
base address must be 64 byte aligned and exist within a valid guest memory
|
|
||||||
region. See Documentation/virt/kvm/arm/pvtime.txt for more information
|
|
||||||
including the layout of the stolen time structure.
|
|
@ -1,8 +1,12 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
===================
|
||||||
VFIO virtual device
|
VFIO virtual device
|
||||||
===================
|
===================
|
||||||
|
|
||||||
Device types supported:
|
Device types supported:
|
||||||
KVM_DEV_TYPE_VFIO
|
|
||||||
|
- KVM_DEV_TYPE_VFIO
|
||||||
|
|
||||||
Only one VFIO instance may be created per VM. The created device
|
Only one VFIO instance may be created per VM. The created device
|
||||||
tracks VFIO groups in use by the VM and features of those groups
|
tracks VFIO groups in use by the VM and features of those groups
|
||||||
@ -23,14 +27,15 @@ KVM_DEV_VFIO_GROUP attributes:
|
|||||||
for the VFIO group.
|
for the VFIO group.
|
||||||
KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: attaches a guest visible TCE table
|
KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: attaches a guest visible TCE table
|
||||||
allocated by sPAPR KVM.
|
allocated by sPAPR KVM.
|
||||||
kvm_device_attr.addr points to a struct:
|
kvm_device_attr.addr points to a struct::
|
||||||
|
|
||||||
struct kvm_vfio_spapr_tce {
|
struct kvm_vfio_spapr_tce {
|
||||||
__s32 groupfd;
|
__s32 groupfd;
|
||||||
__s32 tablefd;
|
__s32 tablefd;
|
||||||
};
|
};
|
||||||
|
|
||||||
where
|
where:
|
||||||
@groupfd is a file descriptor for a VFIO group;
|
|
||||||
@tablefd is a file descriptor for a TCE table allocated via
|
- @groupfd is a file descriptor for a VFIO group;
|
||||||
KVM_CREATE_SPAPR_TCE.
|
- @tablefd is a file descriptor for a TCE table allocated via
|
||||||
|
KVM_CREATE_SPAPR_TCE.
|
@ -1,5 +1,8 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
====================
|
||||||
Generic vm interface
|
Generic vm interface
|
||||||
====================================
|
====================
|
||||||
|
|
||||||
The virtual machine "device" also accepts the ioctls KVM_SET_DEVICE_ATTR,
|
The virtual machine "device" also accepts the ioctls KVM_SET_DEVICE_ATTR,
|
||||||
KVM_GET_DEVICE_ATTR, and KVM_HAS_DEVICE_ATTR. The interface uses the same
|
KVM_GET_DEVICE_ATTR, and KVM_HAS_DEVICE_ATTR. The interface uses the same
|
||||||
@ -10,30 +13,38 @@ The groups and attributes per virtual machine, if any, are architecture
|
|||||||
specific.
|
specific.
|
||||||
|
|
||||||
1. GROUP: KVM_S390_VM_MEM_CTRL
|
1. GROUP: KVM_S390_VM_MEM_CTRL
|
||||||
Architectures: s390
|
==============================
|
||||||
|
|
||||||
|
:Architectures: s390
|
||||||
|
|
||||||
1.1. ATTRIBUTE: KVM_S390_VM_MEM_ENABLE_CMMA
|
1.1. ATTRIBUTE: KVM_S390_VM_MEM_ENABLE_CMMA
|
||||||
Parameters: none
|
-------------------------------------------
|
||||||
Returns: -EBUSY if a vcpu is already defined, otherwise 0
|
|
||||||
|
:Parameters: none
|
||||||
|
:Returns: -EBUSY if a vcpu is already defined, otherwise 0
|
||||||
|
|
||||||
Enables Collaborative Memory Management Assist (CMMA) for the virtual machine.
|
Enables Collaborative Memory Management Assist (CMMA) for the virtual machine.
|
||||||
|
|
||||||
1.2. ATTRIBUTE: KVM_S390_VM_MEM_CLR_CMMA
|
1.2. ATTRIBUTE: KVM_S390_VM_MEM_CLR_CMMA
|
||||||
Parameters: none
|
----------------------------------------
|
||||||
Returns: -EINVAL if CMMA was not enabled
|
|
||||||
0 otherwise
|
:Parameters: none
|
||||||
|
:Returns: -EINVAL if CMMA was not enabled;
|
||||||
|
0 otherwise
|
||||||
|
|
||||||
Clear the CMMA status for all guest pages, so any pages the guest marked
|
Clear the CMMA status for all guest pages, so any pages the guest marked
|
||||||
as unused are again used any may not be reclaimed by the host.
|
as unused are again used any may not be reclaimed by the host.
|
||||||
|
|
||||||
1.3. ATTRIBUTE KVM_S390_VM_MEM_LIMIT_SIZE
|
1.3. ATTRIBUTE KVM_S390_VM_MEM_LIMIT_SIZE
|
||||||
Parameters: in attr->addr the address for the new limit of guest memory
|
-----------------------------------------
|
||||||
Returns: -EFAULT if the given address is not accessible
|
|
||||||
-EINVAL if the virtual machine is of type UCONTROL
|
:Parameters: in attr->addr the address for the new limit of guest memory
|
||||||
-E2BIG if the given guest memory is to big for that machine
|
:Returns: -EFAULT if the given address is not accessible;
|
||||||
-EBUSY if a vcpu is already defined
|
-EINVAL if the virtual machine is of type UCONTROL;
|
||||||
-ENOMEM if not enough memory is available for a new shadow guest mapping
|
-E2BIG if the given guest memory is to big for that machine;
|
||||||
0 otherwise
|
-EBUSY if a vcpu is already defined;
|
||||||
|
-ENOMEM if not enough memory is available for a new shadow guest mapping;
|
||||||
|
0 otherwise.
|
||||||
|
|
||||||
Allows userspace to query the actual limit and set a new limit for
|
Allows userspace to query the actual limit and set a new limit for
|
||||||
the maximum guest memory size. The limit will be rounded up to
|
the maximum guest memory size. The limit will be rounded up to
|
||||||
@ -42,78 +53,92 @@ the number of page table levels. In the case that there is no limit we will set
|
|||||||
the limit to KVM_S390_NO_MEM_LIMIT (U64_MAX).
|
the limit to KVM_S390_NO_MEM_LIMIT (U64_MAX).
|
||||||
|
|
||||||
2. GROUP: KVM_S390_VM_CPU_MODEL
|
2. GROUP: KVM_S390_VM_CPU_MODEL
|
||||||
Architectures: s390
|
===============================
|
||||||
|
|
||||||
|
:Architectures: s390
|
||||||
|
|
||||||
2.1. ATTRIBUTE: KVM_S390_VM_CPU_MACHINE (r/o)
|
2.1. ATTRIBUTE: KVM_S390_VM_CPU_MACHINE (r/o)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
Allows user space to retrieve machine and kvm specific cpu related information:
|
Allows user space to retrieve machine and kvm specific cpu related information::
|
||||||
|
|
||||||
struct kvm_s390_vm_cpu_machine {
|
struct kvm_s390_vm_cpu_machine {
|
||||||
__u64 cpuid; # CPUID of host
|
__u64 cpuid; # CPUID of host
|
||||||
__u32 ibc; # IBC level range offered by host
|
__u32 ibc; # IBC level range offered by host
|
||||||
__u8 pad[4];
|
__u8 pad[4];
|
||||||
__u64 fac_mask[256]; # set of cpu facilities enabled by KVM
|
__u64 fac_mask[256]; # set of cpu facilities enabled by KVM
|
||||||
__u64 fac_list[256]; # set of cpu facilities offered by host
|
__u64 fac_list[256]; # set of cpu facilities offered by host
|
||||||
}
|
}
|
||||||
|
|
||||||
Parameters: address of buffer to store the machine related cpu data
|
:Parameters: address of buffer to store the machine related cpu data
|
||||||
of type struct kvm_s390_vm_cpu_machine*
|
of type struct kvm_s390_vm_cpu_machine*
|
||||||
Returns: -EFAULT if the given address is not accessible from kernel space
|
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
||||||
-ENOMEM if not enough memory is available to process the ioctl
|
-ENOMEM if not enough memory is available to process the ioctl;
|
||||||
0 in case of success
|
0 in case of success.
|
||||||
|
|
||||||
2.2. ATTRIBUTE: KVM_S390_VM_CPU_PROCESSOR (r/w)
|
2.2. ATTRIBUTE: KVM_S390_VM_CPU_PROCESSOR (r/w)
|
||||||
|
===============================================
|
||||||
|
|
||||||
Allows user space to retrieve or request to change cpu related information for a vcpu:
|
Allows user space to retrieve or request to change cpu related information for a vcpu::
|
||||||
|
|
||||||
struct kvm_s390_vm_cpu_processor {
|
struct kvm_s390_vm_cpu_processor {
|
||||||
__u64 cpuid; # CPUID currently (to be) used by this vcpu
|
__u64 cpuid; # CPUID currently (to be) used by this vcpu
|
||||||
__u16 ibc; # IBC level currently (to be) used by this vcpu
|
__u16 ibc; # IBC level currently (to be) used by this vcpu
|
||||||
__u8 pad[6];
|
__u8 pad[6];
|
||||||
__u64 fac_list[256]; # set of cpu facilities currently (to be) used
|
__u64 fac_list[256]; # set of cpu facilities currently (to be) used
|
||||||
# by this vcpu
|
# by this vcpu
|
||||||
}
|
}
|
||||||
|
|
||||||
KVM does not enforce or limit the cpu model data in any form. Take the information
|
KVM does not enforce or limit the cpu model data in any form. Take the information
|
||||||
retrieved by means of KVM_S390_VM_CPU_MACHINE as hint for reasonable configuration
|
retrieved by means of KVM_S390_VM_CPU_MACHINE as hint for reasonable configuration
|
||||||
setups. Instruction interceptions triggered by additionally set facility bits that
|
setups. Instruction interceptions triggered by additionally set facility bits that
|
||||||
are not handled by KVM need to by imlemented in the VM driver code.
|
are not handled by KVM need to by imlemented in the VM driver code.
|
||||||
|
|
||||||
Parameters: address of buffer to store/set the processor related cpu
|
:Parameters: address of buffer to store/set the processor related cpu
|
||||||
data of type struct kvm_s390_vm_cpu_processor*.
|
data of type struct kvm_s390_vm_cpu_processor*.
|
||||||
Returns: -EBUSY in case 1 or more vcpus are already activated (only in write case)
|
:Returns: -EBUSY in case 1 or more vcpus are already activated (only in write case);
|
||||||
-EFAULT if the given address is not accessible from kernel space
|
-EFAULT if the given address is not accessible from kernel space;
|
||||||
-ENOMEM if not enough memory is available to process the ioctl
|
-ENOMEM if not enough memory is available to process the ioctl;
|
||||||
0 in case of success
|
0 in case of success.
|
||||||
|
|
||||||
|
.. _KVM_S390_VM_CPU_MACHINE_FEAT:
|
||||||
|
|
||||||
2.3. ATTRIBUTE: KVM_S390_VM_CPU_MACHINE_FEAT (r/o)
|
2.3. ATTRIBUTE: KVM_S390_VM_CPU_MACHINE_FEAT (r/o)
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
Allows user space to retrieve available cpu features. A feature is available if
|
Allows user space to retrieve available cpu features. A feature is available if
|
||||||
provided by the hardware and supported by kvm. In theory, cpu features could
|
provided by the hardware and supported by kvm. In theory, cpu features could
|
||||||
even be completely emulated by kvm.
|
even be completely emulated by kvm.
|
||||||
|
|
||||||
struct kvm_s390_vm_cpu_feat {
|
::
|
||||||
__u64 feat[16]; # Bitmap (1 = feature available), MSB 0 bit numbering
|
|
||||||
};
|
|
||||||
|
|
||||||
Parameters: address of a buffer to load the feature list from.
|
struct kvm_s390_vm_cpu_feat {
|
||||||
Returns: -EFAULT if the given address is not accessible from kernel space.
|
__u64 feat[16]; # Bitmap (1 = feature available), MSB 0 bit numbering
|
||||||
0 in case of success.
|
};
|
||||||
|
|
||||||
|
:Parameters: address of a buffer to load the feature list from.
|
||||||
|
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
||||||
|
0 in case of success.
|
||||||
|
|
||||||
2.4. ATTRIBUTE: KVM_S390_VM_CPU_PROCESSOR_FEAT (r/w)
|
2.4. ATTRIBUTE: KVM_S390_VM_CPU_PROCESSOR_FEAT (r/w)
|
||||||
|
----------------------------------------------------
|
||||||
|
|
||||||
Allows user space to retrieve or change enabled cpu features for all VCPUs of a
|
Allows user space to retrieve or change enabled cpu features for all VCPUs of a
|
||||||
VM. Features that are not available cannot be enabled.
|
VM. Features that are not available cannot be enabled.
|
||||||
|
|
||||||
See 2.3. for a description of the parameter struct.
|
See :ref:`KVM_S390_VM_CPU_MACHINE_FEAT` for
|
||||||
|
a description of the parameter struct.
|
||||||
|
|
||||||
Parameters: address of a buffer to store/load the feature list from.
|
:Parameters: address of a buffer to store/load the feature list from.
|
||||||
Returns: -EFAULT if the given address is not accessible from kernel space.
|
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
||||||
-EINVAL if a cpu feature that is not available is to be enabled.
|
-EINVAL if a cpu feature that is not available is to be enabled;
|
||||||
-EBUSY if at least one VCPU has already been defined.
|
-EBUSY if at least one VCPU has already been defined;
|
||||||
0 in case of success.
|
0 in case of success.
|
||||||
|
|
||||||
|
.. _KVM_S390_VM_CPU_MACHINE_SUBFUNC:
|
||||||
|
|
||||||
2.5. ATTRIBUTE: KVM_S390_VM_CPU_MACHINE_SUBFUNC (r/o)
|
2.5. ATTRIBUTE: KVM_S390_VM_CPU_MACHINE_SUBFUNC (r/o)
|
||||||
|
-----------------------------------------------------
|
||||||
|
|
||||||
Allows user space to retrieve available cpu subfunctions without any filtering
|
Allows user space to retrieve available cpu subfunctions without any filtering
|
||||||
done by a set IBC. These subfunctions are indicated to the guest VCPU via
|
done by a set IBC. These subfunctions are indicated to the guest VCPU via
|
||||||
@ -126,7 +151,9 @@ contained in the returned struct. If the affected instruction
|
|||||||
indicates subfunctions via a "test bit" mechanism, the subfunction codes are
|
indicates subfunctions via a "test bit" mechanism, the subfunction codes are
|
||||||
contained in the returned struct in MSB 0 bit numbering.
|
contained in the returned struct in MSB 0 bit numbering.
|
||||||
|
|
||||||
struct kvm_s390_vm_cpu_subfunc {
|
::
|
||||||
|
|
||||||
|
struct kvm_s390_vm_cpu_subfunc {
|
||||||
u8 plo[32]; # always valid (ESA/390 feature)
|
u8 plo[32]; # always valid (ESA/390 feature)
|
||||||
u8 ptff[16]; # valid with TOD-clock steering
|
u8 ptff[16]; # valid with TOD-clock steering
|
||||||
u8 kmac[16]; # valid with Message-Security-Assist
|
u8 kmac[16]; # valid with Message-Security-Assist
|
||||||
@ -143,13 +170,14 @@ struct kvm_s390_vm_cpu_subfunc {
|
|||||||
u8 kma[16]; # valid with Message-Security-Assist-Extension 8
|
u8 kma[16]; # valid with Message-Security-Assist-Extension 8
|
||||||
u8 kdsa[16]; # valid with Message-Security-Assist-Extension 9
|
u8 kdsa[16]; # valid with Message-Security-Assist-Extension 9
|
||||||
u8 reserved[1792]; # reserved for future instructions
|
u8 reserved[1792]; # reserved for future instructions
|
||||||
};
|
};
|
||||||
|
|
||||||
Parameters: address of a buffer to load the subfunction blocks from.
|
:Parameters: address of a buffer to load the subfunction blocks from.
|
||||||
Returns: -EFAULT if the given address is not accessible from kernel space.
|
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
||||||
0 in case of success.
|
0 in case of success.
|
||||||
|
|
||||||
2.6. ATTRIBUTE: KVM_S390_VM_CPU_PROCESSOR_SUBFUNC (r/w)
|
2.6. ATTRIBUTE: KVM_S390_VM_CPU_PROCESSOR_SUBFUNC (r/w)
|
||||||
|
-------------------------------------------------------
|
||||||
|
|
||||||
Allows user space to retrieve or change cpu subfunctions to be indicated for
|
Allows user space to retrieve or change cpu subfunctions to be indicated for
|
||||||
all VCPUs of a VM. This attribute will only be available if kernel and
|
all VCPUs of a VM. This attribute will only be available if kernel and
|
||||||
@ -164,107 +192,125 @@ As long as no data has been written, a read will fail. The IBC will be used
|
|||||||
to determine available subfunctions in this case, this will guarantee backward
|
to determine available subfunctions in this case, this will guarantee backward
|
||||||
compatibility.
|
compatibility.
|
||||||
|
|
||||||
See 2.5. for a description of the parameter struct.
|
See :ref:`KVM_S390_VM_CPU_MACHINE_SUBFUNC` for a
|
||||||
|
description of the parameter struct.
|
||||||
|
|
||||||
Parameters: address of a buffer to store/load the subfunction blocks from.
|
:Parameters: address of a buffer to store/load the subfunction blocks from.
|
||||||
Returns: -EFAULT if the given address is not accessible from kernel space.
|
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
||||||
-EINVAL when reading, if there was no write yet.
|
-EINVAL when reading, if there was no write yet;
|
||||||
-EBUSY if at least one VCPU has already been defined.
|
-EBUSY if at least one VCPU has already been defined;
|
||||||
0 in case of success.
|
0 in case of success.
|
||||||
|
|
||||||
3. GROUP: KVM_S390_VM_TOD
|
3. GROUP: KVM_S390_VM_TOD
|
||||||
Architectures: s390
|
=========================
|
||||||
|
|
||||||
|
:Architectures: s390
|
||||||
|
|
||||||
3.1. ATTRIBUTE: KVM_S390_VM_TOD_HIGH
|
3.1. ATTRIBUTE: KVM_S390_VM_TOD_HIGH
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
Allows user space to set/get the TOD clock extension (u8) (superseded by
|
Allows user space to set/get the TOD clock extension (u8) (superseded by
|
||||||
KVM_S390_VM_TOD_EXT).
|
KVM_S390_VM_TOD_EXT).
|
||||||
|
|
||||||
Parameters: address of a buffer in user space to store the data (u8) to
|
:Parameters: address of a buffer in user space to store the data (u8) to
|
||||||
Returns: -EFAULT if the given address is not accessible from kernel space
|
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
||||||
-EINVAL if setting the TOD clock extension to != 0 is not supported
|
-EINVAL if setting the TOD clock extension to != 0 is not supported
|
||||||
|
|
||||||
3.2. ATTRIBUTE: KVM_S390_VM_TOD_LOW
|
3.2. ATTRIBUTE: KVM_S390_VM_TOD_LOW
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
Allows user space to set/get bits 0-63 of the TOD clock register as defined in
|
Allows user space to set/get bits 0-63 of the TOD clock register as defined in
|
||||||
the POP (u64).
|
the POP (u64).
|
||||||
|
|
||||||
Parameters: address of a buffer in user space to store the data (u64) to
|
:Parameters: address of a buffer in user space to store the data (u64) to
|
||||||
Returns: -EFAULT if the given address is not accessible from kernel space
|
:Returns: -EFAULT if the given address is not accessible from kernel space
|
||||||
|
|
||||||
3.3. ATTRIBUTE: KVM_S390_VM_TOD_EXT
|
3.3. ATTRIBUTE: KVM_S390_VM_TOD_EXT
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
Allows user space to set/get bits 0-63 of the TOD clock register as defined in
|
Allows user space to set/get bits 0-63 of the TOD clock register as defined in
|
||||||
the POP (u64). If the guest CPU model supports the TOD clock extension (u8), it
|
the POP (u64). If the guest CPU model supports the TOD clock extension (u8), it
|
||||||
also allows user space to get/set it. If the guest CPU model does not support
|
also allows user space to get/set it. If the guest CPU model does not support
|
||||||
it, it is stored as 0 and not allowed to be set to a value != 0.
|
it, it is stored as 0 and not allowed to be set to a value != 0.
|
||||||
|
|
||||||
Parameters: address of a buffer in user space to store the data
|
:Parameters: address of a buffer in user space to store the data
|
||||||
(kvm_s390_vm_tod_clock) to
|
(kvm_s390_vm_tod_clock) to
|
||||||
Returns: -EFAULT if the given address is not accessible from kernel space
|
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
||||||
-EINVAL if setting the TOD clock extension to != 0 is not supported
|
-EINVAL if setting the TOD clock extension to != 0 is not supported
|
||||||
|
|
||||||
4. GROUP: KVM_S390_VM_CRYPTO
|
4. GROUP: KVM_S390_VM_CRYPTO
|
||||||
Architectures: s390
|
============================
|
||||||
|
|
||||||
|
:Architectures: s390
|
||||||
|
|
||||||
4.1. ATTRIBUTE: KVM_S390_VM_CRYPTO_ENABLE_AES_KW (w/o)
|
4.1. ATTRIBUTE: KVM_S390_VM_CRYPTO_ENABLE_AES_KW (w/o)
|
||||||
|
------------------------------------------------------
|
||||||
|
|
||||||
Allows user space to enable aes key wrapping, including generating a new
|
Allows user space to enable aes key wrapping, including generating a new
|
||||||
wrapping key.
|
wrapping key.
|
||||||
|
|
||||||
Parameters: none
|
:Parameters: none
|
||||||
Returns: 0
|
:Returns: 0
|
||||||
|
|
||||||
4.2. ATTRIBUTE: KVM_S390_VM_CRYPTO_ENABLE_DEA_KW (w/o)
|
4.2. ATTRIBUTE: KVM_S390_VM_CRYPTO_ENABLE_DEA_KW (w/o)
|
||||||
|
------------------------------------------------------
|
||||||
|
|
||||||
Allows user space to enable dea key wrapping, including generating a new
|
Allows user space to enable dea key wrapping, including generating a new
|
||||||
wrapping key.
|
wrapping key.
|
||||||
|
|
||||||
Parameters: none
|
:Parameters: none
|
||||||
Returns: 0
|
:Returns: 0
|
||||||
|
|
||||||
4.3. ATTRIBUTE: KVM_S390_VM_CRYPTO_DISABLE_AES_KW (w/o)
|
4.3. ATTRIBUTE: KVM_S390_VM_CRYPTO_DISABLE_AES_KW (w/o)
|
||||||
|
-------------------------------------------------------
|
||||||
|
|
||||||
Allows user space to disable aes key wrapping, clearing the wrapping key.
|
Allows user space to disable aes key wrapping, clearing the wrapping key.
|
||||||
|
|
||||||
Parameters: none
|
:Parameters: none
|
||||||
Returns: 0
|
:Returns: 0
|
||||||
|
|
||||||
4.4. ATTRIBUTE: KVM_S390_VM_CRYPTO_DISABLE_DEA_KW (w/o)
|
4.4. ATTRIBUTE: KVM_S390_VM_CRYPTO_DISABLE_DEA_KW (w/o)
|
||||||
|
-------------------------------------------------------
|
||||||
|
|
||||||
Allows user space to disable dea key wrapping, clearing the wrapping key.
|
Allows user space to disable dea key wrapping, clearing the wrapping key.
|
||||||
|
|
||||||
Parameters: none
|
:Parameters: none
|
||||||
Returns: 0
|
:Returns: 0
|
||||||
|
|
||||||
5. GROUP: KVM_S390_VM_MIGRATION
|
5. GROUP: KVM_S390_VM_MIGRATION
|
||||||
Architectures: s390
|
===============================
|
||||||
|
|
||||||
|
:Architectures: s390
|
||||||
|
|
||||||
5.1. ATTRIBUTE: KVM_S390_VM_MIGRATION_STOP (w/o)
|
5.1. ATTRIBUTE: KVM_S390_VM_MIGRATION_STOP (w/o)
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
Allows userspace to stop migration mode, needed for PGSTE migration.
|
Allows userspace to stop migration mode, needed for PGSTE migration.
|
||||||
Setting this attribute when migration mode is not active will have no
|
Setting this attribute when migration mode is not active will have no
|
||||||
effects.
|
effects.
|
||||||
|
|
||||||
Parameters: none
|
:Parameters: none
|
||||||
Returns: 0
|
:Returns: 0
|
||||||
|
|
||||||
5.2. ATTRIBUTE: KVM_S390_VM_MIGRATION_START (w/o)
|
5.2. ATTRIBUTE: KVM_S390_VM_MIGRATION_START (w/o)
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
Allows userspace to start migration mode, needed for PGSTE migration.
|
Allows userspace to start migration mode, needed for PGSTE migration.
|
||||||
Setting this attribute when migration mode is already active will have
|
Setting this attribute when migration mode is already active will have
|
||||||
no effects.
|
no effects.
|
||||||
|
|
||||||
Parameters: none
|
:Parameters: none
|
||||||
Returns: -ENOMEM if there is not enough free memory to start migration mode
|
:Returns: -ENOMEM if there is not enough free memory to start migration mode;
|
||||||
-EINVAL if the state of the VM is invalid (e.g. no memory defined)
|
-EINVAL if the state of the VM is invalid (e.g. no memory defined);
|
||||||
0 in case of success.
|
0 in case of success.
|
||||||
|
|
||||||
5.3. ATTRIBUTE: KVM_S390_VM_MIGRATION_STATUS (r/o)
|
5.3. ATTRIBUTE: KVM_S390_VM_MIGRATION_STATUS (r/o)
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
Allows userspace to query the status of migration mode.
|
Allows userspace to query the status of migration mode.
|
||||||
|
|
||||||
Parameters: address of a buffer in user space to store the data (u64) to;
|
:Parameters: address of a buffer in user space to store the data (u64) to;
|
||||||
the data itself is either 0 if migration mode is disabled or 1
|
the data itself is either 0 if migration mode is disabled or 1
|
||||||
if it is enabled
|
if it is enabled
|
||||||
Returns: -EFAULT if the given address is not accessible from kernel space
|
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
||||||
0 in case of success.
|
0 in case of success.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user