diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2014-05-27 09:58:14 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2014-05-27 09:58:14 -0400 |
commit | 04092204bb66c4f8e17465eeee64357dd2ad2585 (patch) | |
tree | 16e62ff55ac394af5d2e6adb4950533578a20ce1 /Documentation | |
parent | 9b88ae99d2fe11e359b3b3992aff953e28b0b43a (diff) | |
parent | 1252b3313642c3d0dff5b951b625468bf0dcd059 (diff) |
Merge tag 'kvm-arm-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into kvm-next
Changed for the 3.16 merge window.
This includes KVM support for PSCI v0.2 and also includes generic Linux
support for PSCI v0.2 (on hosts that advertise that feature via their
DT), since the latter depends on headers introduced by the former.
Finally there's a small patch from Marc that enables Cortex-A53 support.
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/devicetree/bindings/arm/psci.txt | 37 | ||||
-rw-r--r-- | Documentation/virtual/kvm/api.txt | 17 |
2 files changed, 53 insertions, 1 deletions
diff --git a/Documentation/devicetree/bindings/arm/psci.txt b/Documentation/devicetree/bindings/arm/psci.txt index 433afe9cb590..b4a58f39223c 100644 --- a/Documentation/devicetree/bindings/arm/psci.txt +++ b/Documentation/devicetree/bindings/arm/psci.txt | |||
@@ -21,7 +21,15 @@ to #0. | |||
21 | 21 | ||
22 | Main node required properties: | 22 | Main node required properties: |
23 | 23 | ||
24 | - compatible : Must be "arm,psci" | 24 | - compatible : should contain at least one of: |
25 | |||
26 | * "arm,psci" : for implementations complying to PSCI versions prior to | ||
27 | 0.2. For these cases function IDs must be provided. | ||
28 | |||
29 | * "arm,psci-0.2" : for implementations complying to PSCI 0.2. Function | ||
30 | IDs are not required and should be ignored by an OS with PSCI 0.2 | ||
31 | support, but are permitted to be present for compatibility with | ||
32 | existing software when "arm,psci" is later in the compatible list. | ||
25 | 33 | ||
26 | - method : The method of calling the PSCI firmware. Permitted | 34 | - method : The method of calling the PSCI firmware. Permitted |
27 | values are: | 35 | values are: |
@@ -45,6 +53,8 @@ Main node optional properties: | |||
45 | 53 | ||
46 | Example: | 54 | Example: |
47 | 55 | ||
56 | Case 1: PSCI v0.1 only. | ||
57 | |||
48 | psci { | 58 | psci { |
49 | compatible = "arm,psci"; | 59 | compatible = "arm,psci"; |
50 | method = "smc"; | 60 | method = "smc"; |
@@ -53,3 +63,28 @@ Example: | |||
53 | cpu_on = <0x95c10002>; | 63 | cpu_on = <0x95c10002>; |
54 | migrate = <0x95c10003>; | 64 | migrate = <0x95c10003>; |
55 | }; | 65 | }; |
66 | |||
67 | |||
68 | Case 2: PSCI v0.2 only | ||
69 | |||
70 | psci { | ||
71 | compatible = "arm,psci-0.2"; | ||
72 | method = "smc"; | ||
73 | }; | ||
74 | |||
75 | Case 3: PSCI v0.2 and PSCI v0.1. | ||
76 | |||
77 | A DTB may provide IDs for use by kernels without PSCI 0.2 support, | ||
78 | enabling firmware and hypervisors to support existing and new kernels. | ||
79 | These IDs will be ignored by kernels with PSCI 0.2 support, which will | ||
80 | use the standard PSCI 0.2 IDs exclusively. | ||
81 | |||
82 | psci { | ||
83 | compatible = "arm,psci-0.2", "arm,psci"; | ||
84 | method = "hvc"; | ||
85 | |||
86 | cpu_on = < arbitrary value >; | ||
87 | cpu_off = < arbitrary value >; | ||
88 | |||
89 | ... | ||
90 | }; | ||
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index 0581f6c40f2b..cac0ba127576 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt | |||
@@ -2378,6 +2378,8 @@ Possible features: | |||
2378 | Depends on KVM_CAP_ARM_PSCI. | 2378 | Depends on KVM_CAP_ARM_PSCI. |
2379 | - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode. | 2379 | - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode. |
2380 | Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only). | 2380 | Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only). |
2381 | - KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 for the CPU. | ||
2382 | Depends on KVM_CAP_ARM_PSCI_0_2. | ||
2381 | 2383 | ||
2382 | 2384 | ||
2383 | 4.83 KVM_ARM_PREFERRED_TARGET | 2385 | 4.83 KVM_ARM_PREFERRED_TARGET |
@@ -2740,6 +2742,21 @@ It gets triggered whenever both KVM_CAP_PPC_EPR are enabled and an | |||
2740 | external interrupt has just been delivered into the guest. User space | 2742 | external interrupt has just been delivered into the guest. User space |
2741 | should put the acknowledged interrupt vector into the 'epr' field. | 2743 | should put the acknowledged interrupt vector into the 'epr' field. |
2742 | 2744 | ||
2745 | /* KVM_EXIT_SYSTEM_EVENT */ | ||
2746 | struct { | ||
2747 | #define KVM_SYSTEM_EVENT_SHUTDOWN 1 | ||
2748 | #define KVM_SYSTEM_EVENT_RESET 2 | ||
2749 | __u32 type; | ||
2750 | __u64 flags; | ||
2751 | } system_event; | ||
2752 | |||
2753 | If exit_reason is KVM_EXIT_SYSTEM_EVENT then the vcpu has triggered | ||
2754 | a system-level event using some architecture specific mechanism (hypercall | ||
2755 | or some special instruction). In case of ARM/ARM64, this is triggered using | ||
2756 | HVC instruction based PSCI call from the vcpu. The 'type' field describes | ||
2757 | the system-level event type. The 'flags' field describes architecture | ||
2758 | specific flags for the system-level event. | ||
2759 | |||
2743 | /* Fix the size of the union. */ | 2760 | /* Fix the size of the union. */ |
2744 | char padding[256]; | 2761 | char padding[256]; |
2745 | }; | 2762 | }; |