diff options
Diffstat (limited to 'virt/kvm/kvm_main.c')
-rw-r--r-- | virt/kvm/kvm_main.c | 34 |
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 | ||
2997 | static int __kvm_io_bus_write(struct kvm_io_bus *bus, | 2997 | static 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 */ |
3018 | int kvm_io_bus_write(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, | 3018 | int 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 */ |
3036 | int kvm_io_bus_write_cookie(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, | 3036 | int 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 | ||
3063 | static int __kvm_io_bus_read(struct kvm_io_bus *bus, struct kvm_io_range *range, | 3063 | static 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, | |||
3082 | EXPORT_SYMBOL_GPL(kvm_io_bus_write); | 3082 | EXPORT_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 */ |
3085 | int kvm_io_bus_read(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, | 3085 | int 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 | ||