aboutsummaryrefslogtreecommitdiffstats
path: root/virt/kvm/kvm_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'virt/kvm/kvm_main.c')
-rw-r--r--virt/kvm/kvm_main.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index ce7888a15128..efe59ae64dc3 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -16,7 +16,7 @@
16 * 16 *
17 */ 17 */
18 18
19#include "iodev.h" 19#include <kvm/iodev.h>
20 20
21#include <linux/kvm_host.h> 21#include <linux/kvm_host.h>
22#include <linux/kvm.h> 22#include <linux/kvm.h>
@@ -2994,7 +2994,7 @@ static int kvm_io_bus_get_first_dev(struct kvm_io_bus *bus,
2994 return off; 2994 return off;
2995} 2995}
2996 2996
2997static int __kvm_io_bus_write(struct kvm_io_bus *bus, 2997static int __kvm_io_bus_write(struct kvm_vcpu *vcpu, struct kvm_io_bus *bus,
2998 struct kvm_io_range *range, const void *val) 2998 struct kvm_io_range *range, const void *val)
2999{ 2999{
3000 int idx; 3000 int idx;
@@ -3005,7 +3005,7 @@ static int __kvm_io_bus_write(struct kvm_io_bus *bus,
3005 3005
3006 while (idx < bus->dev_count && 3006 while (idx < bus->dev_count &&
3007 kvm_io_bus_cmp(range, &bus->range[idx]) == 0) { 3007 kvm_io_bus_cmp(range, &bus->range[idx]) == 0) {
3008 if (!kvm_iodevice_write(bus->range[idx].dev, range->addr, 3008 if (!kvm_iodevice_write(vcpu, bus->range[idx].dev, range->addr,
3009 range->len, val)) 3009 range->len, val))
3010 return idx; 3010 return idx;
3011 idx++; 3011 idx++;
@@ -3015,7 +3015,7 @@ static int __kvm_io_bus_write(struct kvm_io_bus *bus,
3015} 3015}
3016 3016
3017/* kvm_io_bus_write - called under kvm->slots_lock */ 3017/* kvm_io_bus_write - called under kvm->slots_lock */
3018int kvm_io_bus_write(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, 3018int kvm_io_bus_write(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, gpa_t addr,
3019 int len, const void *val) 3019 int len, const void *val)
3020{ 3020{
3021 struct kvm_io_bus *bus; 3021 struct kvm_io_bus *bus;
@@ -3027,14 +3027,14 @@ int kvm_io_bus_write(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr,
3027 .len = len, 3027 .len = len,
3028 }; 3028 };
3029 3029
3030 bus = srcu_dereference(kvm->buses[bus_idx], &kvm->srcu); 3030 bus = srcu_dereference(vcpu->kvm->buses[bus_idx], &vcpu->kvm->srcu);
3031 r = __kvm_io_bus_write(bus, &range, val); 3031 r = __kvm_io_bus_write(vcpu, bus, &range, val);
3032 return r < 0 ? r : 0; 3032 return r < 0 ? r : 0;
3033} 3033}
3034 3034
3035/* kvm_io_bus_write_cookie - called under kvm->slots_lock */ 3035/* kvm_io_bus_write_cookie - called under kvm->slots_lock */
3036int kvm_io_bus_write_cookie(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, 3036int kvm_io_bus_write_cookie(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx,
3037 int len, const void *val, long cookie) 3037 gpa_t addr, int len, const void *val, long cookie)
3038{ 3038{
3039 struct kvm_io_bus *bus; 3039 struct kvm_io_bus *bus;
3040 struct kvm_io_range range; 3040 struct kvm_io_range range;
@@ -3044,12 +3044,12 @@ int kvm_io_bus_write_cookie(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr,
3044 .len = len, 3044 .len = len,
3045 }; 3045 };
3046 3046
3047 bus = srcu_dereference(kvm->buses[bus_idx], &kvm->srcu); 3047 bus = srcu_dereference(vcpu->kvm->buses[bus_idx], &vcpu->kvm->srcu);
3048 3048
3049 /* First try the device referenced by cookie. */ 3049 /* First try the device referenced by cookie. */
3050 if ((cookie >= 0) && (cookie < bus->dev_count) && 3050 if ((cookie >= 0) && (cookie < bus->dev_count) &&
3051 (kvm_io_bus_cmp(&range, &bus->range[cookie]) == 0)) 3051 (kvm_io_bus_cmp(&range, &bus->range[cookie]) == 0))
3052 if (!kvm_iodevice_write(bus->range[cookie].dev, addr, len, 3052 if (!kvm_iodevice_write(vcpu, bus->range[cookie].dev, addr, len,
3053 val)) 3053 val))
3054 return cookie; 3054 return cookie;
3055 3055
@@ -3057,11 +3057,11 @@ int kvm_io_bus_write_cookie(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr,
3057 * cookie contained garbage; fall back to search and return the 3057 * cookie contained garbage; fall back to search and return the
3058 * correct cookie value. 3058 * correct cookie value.
3059 */ 3059 */
3060 return __kvm_io_bus_write(bus, &range, val); 3060 return __kvm_io_bus_write(vcpu, bus, &range, val);
3061} 3061}
3062 3062
3063static int __kvm_io_bus_read(struct kvm_io_bus *bus, struct kvm_io_range *range, 3063static int __kvm_io_bus_read(struct kvm_vcpu *vcpu, struct kvm_io_bus *bus,
3064 void *val) 3064 struct kvm_io_range *range, void *val)
3065{ 3065{
3066 int idx; 3066 int idx;
3067 3067
@@ -3071,7 +3071,7 @@ static int __kvm_io_bus_read(struct kvm_io_bus *bus, struct kvm_io_range *range,
3071 3071
3072 while (idx < bus->dev_count && 3072 while (idx < bus->dev_count &&
3073 kvm_io_bus_cmp(range, &bus->range[idx]) == 0) { 3073 kvm_io_bus_cmp(range, &bus->range[idx]) == 0) {
3074 if (!kvm_iodevice_read(bus->range[idx].dev, range->addr, 3074 if (!kvm_iodevice_read(vcpu, bus->range[idx].dev, range->addr,
3075 range->len, val)) 3075 range->len, val))
3076 return idx; 3076 return idx;
3077 idx++; 3077 idx++;
@@ -3082,7 +3082,7 @@ static int __kvm_io_bus_read(struct kvm_io_bus *bus, struct kvm_io_range *range,
3082EXPORT_SYMBOL_GPL(kvm_io_bus_write); 3082EXPORT_SYMBOL_GPL(kvm_io_bus_write);
3083 3083
3084/* kvm_io_bus_read - called under kvm->slots_lock */ 3084/* kvm_io_bus_read - called under kvm->slots_lock */
3085int kvm_io_bus_read(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, 3085int kvm_io_bus_read(struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, gpa_t addr,
3086 int len, void *val) 3086 int len, void *val)
3087{ 3087{
3088 struct kvm_io_bus *bus; 3088 struct kvm_io_bus *bus;
@@ -3094,8 +3094,8 @@ int kvm_io_bus_read(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr,
3094 .len = len, 3094 .len = len,
3095 }; 3095 };
3096 3096
3097 bus = srcu_dereference(kvm->buses[bus_idx], &kvm->srcu); 3097 bus = srcu_dereference(vcpu->kvm->buses[bus_idx], &vcpu->kvm->srcu);
3098 r = __kvm_io_bus_read(bus, &range, val); 3098 r = __kvm_io_bus_read(vcpu, bus, &range, val);
3099 return r < 0 ? r : 0; 3099 return r < 0 ? r : 0;
3100} 3100}
3101 3101