diff options
author | Hollis Blanchard <hollisb@us.ibm.com> | 2008-04-17 00:28:07 -0400 |
---|---|---|
committer | Avi Kivity <avi@qumranet.com> | 2008-04-27 11:21:37 -0400 |
commit | b2312f059c893833de58876c74290511846cd208 (patch) | |
tree | 6164572aeaf0761412af0ce860b031e126cebcba | |
parent | 4baacfb0de53b05428c87d377fc8a3def4dc10e7 (diff) |
KVM: ppc: Add DCR access information to struct kvm_run
Device Control Registers are essentially another address space found on PowerPC
4xx processors, analogous to PIO on x86. DCRs are always 32 bits, and can be
identified by a 32-bit number. We forward most DCR accesses to userspace for
emulation (with the exception of CPR0 registers, which can be read directly
for simplicity in timebase frequency determination).
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
-rw-r--r-- | include/linux/kvm.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/kvm.h b/include/linux/kvm.h index f8e211d8ce88..a281afeddfbb 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h | |||
@@ -82,6 +82,7 @@ struct kvm_irqchip { | |||
82 | #define KVM_EXIT_TPR_ACCESS 12 | 82 | #define KVM_EXIT_TPR_ACCESS 12 |
83 | #define KVM_EXIT_S390_SIEIC 13 | 83 | #define KVM_EXIT_S390_SIEIC 13 |
84 | #define KVM_EXIT_S390_RESET 14 | 84 | #define KVM_EXIT_S390_RESET 14 |
85 | #define KVM_EXIT_DCR 15 | ||
85 | 86 | ||
86 | /* for KVM_RUN, returned by mmap(vcpu_fd, offset=0) */ | 87 | /* for KVM_RUN, returned by mmap(vcpu_fd, offset=0) */ |
87 | struct kvm_run { | 88 | struct kvm_run { |
@@ -161,6 +162,12 @@ struct kvm_run { | |||
161 | #define KVM_S390_RESET_CPU_INIT 8 | 162 | #define KVM_S390_RESET_CPU_INIT 8 |
162 | #define KVM_S390_RESET_IPL 16 | 163 | #define KVM_S390_RESET_IPL 16 |
163 | __u64 s390_reset_flags; | 164 | __u64 s390_reset_flags; |
165 | /* KVM_EXIT_DCR */ | ||
166 | struct { | ||
167 | __u32 dcrn; | ||
168 | __u32 data; | ||
169 | __u8 is_write; | ||
170 | } dcr; | ||
164 | /* Fix the size of the union. */ | 171 | /* Fix the size of the union. */ |
165 | char padding[256]; | 172 | char padding[256]; |
166 | }; | 173 | }; |