diff options
| author | Laurent Vivier <Laurent.Vivier@bull.net> | 2007-07-30 06:41:19 -0400 |
|---|---|---|
| committer | Avi Kivity <avi@qumranet.com> | 2007-10-13 04:18:21 -0400 |
| commit | e7d5d76cae970117affe07f809faf0f18bbac675 (patch) | |
| tree | 3410ce6d12e1095affcd4e6f7fd36716587916c6 /drivers/kvm/kvm_main.c | |
| parent | cebff02b11b02a81d21b6cc8390938dc9bdf0a12 (diff) | |
KVM: Remove kvm_{read,write}_guest()
... in favor of the more general emulator_{read,write}_*.
Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm/kvm_main.c')
| -rw-r--r-- | drivers/kvm/kvm_main.c | 74 |
1 files changed, 4 insertions, 70 deletions
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c index a65a145f3050..4bbd89e03324 100644 --- a/drivers/kvm/kvm_main.c +++ b/drivers/kvm/kvm_main.c | |||
| @@ -146,74 +146,6 @@ static inline int valid_vcpu(int n) | |||
| 146 | return likely(n >= 0 && n < KVM_MAX_VCPUS); | 146 | return likely(n >= 0 && n < KVM_MAX_VCPUS); |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | int kvm_read_guest(struct kvm_vcpu *vcpu, gva_t addr, unsigned long size, | ||
| 150 | void *dest) | ||
| 151 | { | ||
| 152 | unsigned char *host_buf = dest; | ||
| 153 | unsigned long req_size = size; | ||
| 154 | |||
| 155 | while (size) { | ||
| 156 | hpa_t paddr; | ||
| 157 | unsigned now; | ||
| 158 | unsigned offset; | ||
| 159 | hva_t guest_buf; | ||
| 160 | |||
| 161 | paddr = gva_to_hpa(vcpu, addr); | ||
| 162 | |||
| 163 | if (is_error_hpa(paddr)) | ||
| 164 | break; | ||
| 165 | |||
| 166 | guest_buf = (hva_t)kmap_atomic( | ||
| 167 | pfn_to_page(paddr >> PAGE_SHIFT), | ||
| 168 | KM_USER0); | ||
| 169 | offset = addr & ~PAGE_MASK; | ||
| 170 | guest_buf |= offset; | ||
| 171 | now = min(size, PAGE_SIZE - offset); | ||
| 172 | memcpy(host_buf, (void*)guest_buf, now); | ||
| 173 | host_buf += now; | ||
| 174 | addr += now; | ||
| 175 | size -= now; | ||
| 176 | kunmap_atomic((void *)(guest_buf & PAGE_MASK), KM_USER0); | ||
| 177 | } | ||
| 178 | return req_size - size; | ||
| 179 | } | ||
| 180 | EXPORT_SYMBOL_GPL(kvm_read_guest); | ||
| 181 | |||
| 182 | int kvm_write_guest(struct kvm_vcpu *vcpu, gva_t addr, unsigned long size, | ||
| 183 | void *data) | ||
| 184 | { | ||
| 185 | unsigned char *host_buf = data; | ||
| 186 | unsigned long req_size = size; | ||
| 187 | |||
| 188 | while (size) { | ||
| 189 | hpa_t paddr; | ||
| 190 | unsigned now; | ||
| 191 | unsigned offset; | ||
| 192 | hva_t guest_buf; | ||
| 193 | gfn_t gfn; | ||
| 194 | |||
| 195 | paddr = gva_to_hpa(vcpu, addr); | ||
| 196 | |||
| 197 | if (is_error_hpa(paddr)) | ||
| 198 | break; | ||
| 199 | |||
| 200 | gfn = vcpu->mmu.gva_to_gpa(vcpu, addr) >> PAGE_SHIFT; | ||
| 201 | mark_page_dirty(vcpu->kvm, gfn); | ||
| 202 | guest_buf = (hva_t)kmap_atomic( | ||
| 203 | pfn_to_page(paddr >> PAGE_SHIFT), KM_USER0); | ||
| 204 | offset = addr & ~PAGE_MASK; | ||
| 205 | guest_buf |= offset; | ||
| 206 | now = min(size, PAGE_SIZE - offset); | ||
| 207 | memcpy((void*)guest_buf, host_buf, now); | ||
| 208 | host_buf += now; | ||
| 209 | addr += now; | ||
| 210 | size -= now; | ||
| 211 | kunmap_atomic((void *)(guest_buf & PAGE_MASK), KM_USER0); | ||
| 212 | } | ||
| 213 | return req_size - size; | ||
| 214 | } | ||
| 215 | EXPORT_SYMBOL_GPL(kvm_write_guest); | ||
| 216 | |||
| 217 | void kvm_load_guest_fpu(struct kvm_vcpu *vcpu) | 149 | void kvm_load_guest_fpu(struct kvm_vcpu *vcpu) |
| 218 | { | 150 | { |
| 219 | if (!vcpu->fpu_active || vcpu->guest_fpu_loaded) | 151 | if (!vcpu->fpu_active || vcpu->guest_fpu_loaded) |
| @@ -1017,7 +949,7 @@ void mark_page_dirty(struct kvm *kvm, gfn_t gfn) | |||
| 1017 | } | 949 | } |
| 1018 | } | 950 | } |
| 1019 | 951 | ||
| 1020 | static int emulator_read_std(unsigned long addr, | 952 | int emulator_read_std(unsigned long addr, |
| 1021 | void *val, | 953 | void *val, |
| 1022 | unsigned int bytes, | 954 | unsigned int bytes, |
| 1023 | struct kvm_vcpu *vcpu) | 955 | struct kvm_vcpu *vcpu) |
| @@ -1051,6 +983,7 @@ static int emulator_read_std(unsigned long addr, | |||
| 1051 | 983 | ||
| 1052 | return X86EMUL_CONTINUE; | 984 | return X86EMUL_CONTINUE; |
| 1053 | } | 985 | } |
| 986 | EXPORT_SYMBOL_GPL(emulator_read_std); | ||
| 1054 | 987 | ||
| 1055 | static int emulator_write_std(unsigned long addr, | 988 | static int emulator_write_std(unsigned long addr, |
| 1056 | const void *val, | 989 | const void *val, |
| @@ -1169,7 +1102,7 @@ static int emulator_write_emulated_onepage(unsigned long addr, | |||
| 1169 | return X86EMUL_CONTINUE; | 1102 | return X86EMUL_CONTINUE; |
| 1170 | } | 1103 | } |
| 1171 | 1104 | ||
| 1172 | static int emulator_write_emulated(unsigned long addr, | 1105 | int emulator_write_emulated(unsigned long addr, |
| 1173 | const void *val, | 1106 | const void *val, |
| 1174 | unsigned int bytes, | 1107 | unsigned int bytes, |
| 1175 | struct kvm_vcpu *vcpu) | 1108 | struct kvm_vcpu *vcpu) |
| @@ -1188,6 +1121,7 @@ static int emulator_write_emulated(unsigned long addr, | |||
| 1188 | } | 1121 | } |
| 1189 | return emulator_write_emulated_onepage(addr, val, bytes, vcpu); | 1122 | return emulator_write_emulated_onepage(addr, val, bytes, vcpu); |
| 1190 | } | 1123 | } |
| 1124 | EXPORT_SYMBOL_GPL(emulator_write_emulated); | ||
| 1191 | 1125 | ||
| 1192 | static int emulator_cmpxchg_emulated(unsigned long addr, | 1126 | static int emulator_cmpxchg_emulated(unsigned long addr, |
| 1193 | const void *old, | 1127 | const void *old, |
