diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/s390/kvm/kvm_virtio.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c index bbef3764fbf8..47a7e6200b26 100644 --- a/drivers/s390/kvm/kvm_virtio.c +++ b/drivers/s390/kvm/kvm_virtio.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <linux/virtio_config.h> | 17 | #include <linux/virtio_config.h> |
| 18 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
| 19 | #include <linux/virtio_ring.h> | 19 | #include <linux/virtio_ring.h> |
| 20 | #include <linux/pfn.h> | ||
| 20 | #include <asm/io.h> | 21 | #include <asm/io.h> |
| 21 | #include <asm/kvm_para.h> | 22 | #include <asm/kvm_para.h> |
| 22 | #include <asm/kvm_virtio.h> | 23 | #include <asm/kvm_virtio.h> |
| @@ -180,11 +181,10 @@ static struct virtqueue *kvm_find_vq(struct virtio_device *vdev, | |||
| 180 | 181 | ||
| 181 | config = kvm_vq_config(kdev->desc)+index; | 182 | config = kvm_vq_config(kdev->desc)+index; |
| 182 | 183 | ||
| 183 | if (add_shared_memory(config->address, | 184 | err = vmem_add_mapping(config->address, |
| 184 | vring_size(config->num, PAGE_SIZE))) { | 185 | vring_size(config->num, PAGE_SIZE)); |
| 185 | err = -ENOMEM; | 186 | if (err) |
| 186 | goto out; | 187 | goto out; |
| 187 | } | ||
| 188 | 188 | ||
| 189 | vq = vring_new_virtqueue(config->num, vdev, (void *) config->address, | 189 | vq = vring_new_virtqueue(config->num, vdev, (void *) config->address, |
| 190 | kvm_notify, callback); | 190 | kvm_notify, callback); |
| @@ -202,8 +202,8 @@ static struct virtqueue *kvm_find_vq(struct virtio_device *vdev, | |||
| 202 | vq->priv = config; | 202 | vq->priv = config; |
| 203 | return vq; | 203 | return vq; |
| 204 | unmap: | 204 | unmap: |
| 205 | remove_shared_memory(config->address, vring_size(config->num, | 205 | vmem_remove_mapping(config->address, |
| 206 | PAGE_SIZE)); | 206 | vring_size(config->num, PAGE_SIZE)); |
| 207 | out: | 207 | out: |
| 208 | return ERR_PTR(err); | 208 | return ERR_PTR(err); |
| 209 | } | 209 | } |
| @@ -213,8 +213,8 @@ static void kvm_del_vq(struct virtqueue *vq) | |||
| 213 | struct kvm_vqconfig *config = vq->priv; | 213 | struct kvm_vqconfig *config = vq->priv; |
| 214 | 214 | ||
| 215 | vring_del_virtqueue(vq); | 215 | vring_del_virtqueue(vq); |
| 216 | remove_shared_memory(config->address, | 216 | vmem_remove_mapping(config->address, |
| 217 | vring_size(config->num, PAGE_SIZE)); | 217 | vring_size(config->num, PAGE_SIZE)); |
| 218 | } | 218 | } |
| 219 | 219 | ||
| 220 | /* | 220 | /* |
| @@ -318,12 +318,13 @@ static int __init kvm_devices_init(void) | |||
| 318 | return rc; | 318 | return rc; |
| 319 | } | 319 | } |
| 320 | 320 | ||
| 321 | if (add_shared_memory((max_pfn) << PAGE_SHIFT, PAGE_SIZE)) { | 321 | rc = vmem_add_mapping(PFN_PHYS(max_pfn), PAGE_SIZE); |
| 322 | if (rc) { | ||
| 322 | device_unregister(&kvm_root); | 323 | device_unregister(&kvm_root); |
| 323 | return -ENOMEM; | 324 | return rc; |
| 324 | } | 325 | } |
| 325 | 326 | ||
| 326 | kvm_devices = (void *) (max_pfn << PAGE_SHIFT); | 327 | kvm_devices = (void *) PFN_PHYS(max_pfn); |
| 327 | 328 | ||
| 328 | ctl_set_bit(0, 9); | 329 | ctl_set_bit(0, 9); |
| 329 | register_external_interrupt(0x2603, kvm_extint_handler); | 330 | register_external_interrupt(0x2603, kvm_extint_handler); |
