86
86
static long kvm_vcpu_ioctl(struct file *file, unsigned int ioctl,
87
87
unsigned long arg);
89
static bool kvm_rebooting;
88
static int hardware_enable_all(void);
89
static void hardware_disable_all(void);
91
static void kvm_io_bus_destroy(struct kvm_io_bus *bus);
94
EXPORT_SYMBOL_GPL(kvm_rebooting);
91
96
static bool largepages_enabled = true;
93
#ifdef KVM_CAP_DEVICE_ASSIGNMENT
94
static struct kvm_assigned_dev_kernel *kvm_find_assigned_dev(struct list_head *head,
97
struct list_head *ptr;
98
struct kvm_assigned_dev_kernel *match;
100
list_for_each(ptr, head) {
101
match = list_entry(ptr, struct kvm_assigned_dev_kernel, list);
102
if (match->assigned_dev_id == assigned_dev_id)
108
static int find_index_from_host_irq(struct kvm_assigned_dev_kernel
109
*assigned_dev, int irq)
112
struct msix_entry *host_msix_entries;
114
host_msix_entries = assigned_dev->host_msix_entries;
117
for (i = 0; i < assigned_dev->entries_nr; i++)
118
if (irq == host_msix_entries[i].vector) {
123
printk(KERN_WARNING "Fail to find correlated MSI-X entry!\n");
130
static void kvm_assigned_dev_interrupt_work_handler(struct work_struct *work)
132
struct kvm_assigned_dev_kernel *assigned_dev;
136
assigned_dev = container_of(work, struct kvm_assigned_dev_kernel,
138
kvm = assigned_dev->kvm;
140
mutex_lock(&kvm->irq_lock);
141
spin_lock_irq(&assigned_dev->assigned_dev_lock);
142
if (assigned_dev->irq_requested_type & KVM_DEV_IRQ_HOST_MSIX) {
143
struct kvm_guest_msix_entry *guest_entries =
144
assigned_dev->guest_msix_entries;
145
for (i = 0; i < assigned_dev->entries_nr; i++) {
146
if (!(guest_entries[i].flags &
147
KVM_ASSIGNED_MSIX_PENDING))
149
guest_entries[i].flags &= ~KVM_ASSIGNED_MSIX_PENDING;
150
kvm_set_irq(assigned_dev->kvm,
151
assigned_dev->irq_source_id,
152
guest_entries[i].vector, 1);
155
kvm_set_irq(assigned_dev->kvm, assigned_dev->irq_source_id,
156
assigned_dev->guest_irq, 1);
158
spin_unlock_irq(&assigned_dev->assigned_dev_lock);
159
mutex_unlock(&assigned_dev->kvm->irq_lock);
162
static irqreturn_t kvm_assigned_dev_intr(int irq, void *dev_id)
165
struct kvm_assigned_dev_kernel *assigned_dev =
166
(struct kvm_assigned_dev_kernel *) dev_id;
168
spin_lock_irqsave(&assigned_dev->assigned_dev_lock, flags);
169
if (assigned_dev->irq_requested_type & KVM_DEV_IRQ_HOST_MSIX) {
170
int index = find_index_from_host_irq(assigned_dev, irq);
173
assigned_dev->guest_msix_entries[index].flags |=
174
KVM_ASSIGNED_MSIX_PENDING;
177
schedule_work(&assigned_dev->interrupt_work);
179
if (assigned_dev->irq_requested_type & KVM_DEV_IRQ_GUEST_INTX) {
180
disable_irq_nosync(irq);
181
assigned_dev->host_irq_disabled = true;
185
spin_unlock_irqrestore(&assigned_dev->assigned_dev_lock, flags);
189
/* Ack the irq line for an assigned device */
190
static void kvm_assigned_dev_ack_irq(struct kvm_irq_ack_notifier *kian)
192
struct kvm_assigned_dev_kernel *dev;
198
dev = container_of(kian, struct kvm_assigned_dev_kernel,
201
kvm_set_irq(dev->kvm, dev->irq_source_id, dev->guest_irq, 0);
203
/* The guest irq may be shared so this ack may be
204
* from another device.
206
spin_lock_irqsave(&dev->assigned_dev_lock, flags);
207
if (dev->host_irq_disabled) {
208
enable_irq(dev->host_irq);
209
dev->host_irq_disabled = false;
211
spin_unlock_irqrestore(&dev->assigned_dev_lock, flags);
214
static void deassign_guest_irq(struct kvm *kvm,
215
struct kvm_assigned_dev_kernel *assigned_dev)
217
kvm_unregister_irq_ack_notifier(kvm, &assigned_dev->ack_notifier);
218
assigned_dev->ack_notifier.gsi = -1;
220
if (assigned_dev->irq_source_id != -1)
221
kvm_free_irq_source_id(kvm, assigned_dev->irq_source_id);
222
assigned_dev->irq_source_id = -1;
223
assigned_dev->irq_requested_type &= ~(KVM_DEV_IRQ_GUEST_MASK);
226
/* The function implicit hold kvm->lock mutex due to cancel_work_sync() */
227
static void deassign_host_irq(struct kvm *kvm,
228
struct kvm_assigned_dev_kernel *assigned_dev)
231
* In kvm_free_device_irq, cancel_work_sync return true if:
232
* 1. work is scheduled, and then cancelled.
233
* 2. work callback is executed.
235
* The first one ensured that the irq is disabled and no more events
236
* would happen. But for the second one, the irq may be enabled (e.g.
237
* for MSI). So we disable irq here to prevent further events.
239
* Notice this maybe result in nested disable if the interrupt type is
240
* INTx, but it's OK for we are going to free it.
242
* If this function is a part of VM destroy, please ensure that till
243
* now, the kvm state is still legal for probably we also have to wait
244
* interrupt_work done.
246
if (assigned_dev->irq_requested_type & KVM_DEV_IRQ_HOST_MSIX) {
248
for (i = 0; i < assigned_dev->entries_nr; i++)
249
disable_irq_nosync(assigned_dev->
250
host_msix_entries[i].vector);
252
cancel_work_sync(&assigned_dev->interrupt_work);
254
for (i = 0; i < assigned_dev->entries_nr; i++)
255
free_irq(assigned_dev->host_msix_entries[i].vector,
256
(void *)assigned_dev);
258
assigned_dev->entries_nr = 0;
259
kfree(assigned_dev->host_msix_entries);
260
kfree(assigned_dev->guest_msix_entries);
261
pci_disable_msix(assigned_dev->dev);
263
/* Deal with MSI and INTx */
264
disable_irq_nosync(assigned_dev->host_irq);
265
cancel_work_sync(&assigned_dev->interrupt_work);
267
free_irq(assigned_dev->host_irq, (void *)assigned_dev);
269
if (assigned_dev->irq_requested_type & KVM_DEV_IRQ_HOST_MSI)
270
pci_disable_msi(assigned_dev->dev);
273
assigned_dev->irq_requested_type &= ~(KVM_DEV_IRQ_HOST_MASK);
276
static int kvm_deassign_irq(struct kvm *kvm,
277
struct kvm_assigned_dev_kernel *assigned_dev,
278
unsigned long irq_requested_type)
280
unsigned long guest_irq_type, host_irq_type;
282
if (!irqchip_in_kernel(kvm))
284
/* no irq assignment to deassign */
285
if (!assigned_dev->irq_requested_type)
288
host_irq_type = irq_requested_type & KVM_DEV_IRQ_HOST_MASK;
289
guest_irq_type = irq_requested_type & KVM_DEV_IRQ_GUEST_MASK;
292
deassign_host_irq(kvm, assigned_dev);
294
deassign_guest_irq(kvm, assigned_dev);
299
static void kvm_free_assigned_irq(struct kvm *kvm,
300
struct kvm_assigned_dev_kernel *assigned_dev)
302
kvm_deassign_irq(kvm, assigned_dev, assigned_dev->irq_requested_type);
305
static void kvm_free_assigned_device(struct kvm *kvm,
306
struct kvm_assigned_dev_kernel
309
kvm_free_assigned_irq(kvm, assigned_dev);
311
pci_reset_function(assigned_dev->dev);
313
pci_release_regions(assigned_dev->dev);
314
pci_disable_device(assigned_dev->dev);
315
pci_dev_put(assigned_dev->dev);
317
list_del(&assigned_dev->list);
321
void kvm_free_all_assigned_devices(struct kvm *kvm)
323
struct list_head *ptr, *ptr2;
324
struct kvm_assigned_dev_kernel *assigned_dev;
326
list_for_each_safe(ptr, ptr2, &kvm->arch.assigned_dev_head) {
327
assigned_dev = list_entry(ptr,
328
struct kvm_assigned_dev_kernel,
331
kvm_free_assigned_device(kvm, assigned_dev);
335
static int assigned_device_enable_host_intx(struct kvm *kvm,
336
struct kvm_assigned_dev_kernel *dev)
338
dev->host_irq = dev->dev->irq;
339
/* Even though this is PCI, we don't want to use shared
340
* interrupts. Sharing host devices with guest-assigned devices
341
* on the same interrupt line is not a happy situation: there
342
* are going to be long delays in accepting, acking, etc.
344
if (request_irq(dev->host_irq, kvm_assigned_dev_intr,
345
0, "kvm_assigned_intx_device", (void *)dev))
350
#ifdef __KVM_HAVE_MSI
351
static int assigned_device_enable_host_msi(struct kvm *kvm,
352
struct kvm_assigned_dev_kernel *dev)
356
if (!dev->dev->msi_enabled) {
357
r = pci_enable_msi(dev->dev);
362
dev->host_irq = dev->dev->irq;
363
if (request_irq(dev->host_irq, kvm_assigned_dev_intr, 0,
364
"kvm_assigned_msi_device", (void *)dev)) {
365
pci_disable_msi(dev->dev);
373
#ifdef __KVM_HAVE_MSIX
374
static int assigned_device_enable_host_msix(struct kvm *kvm,
375
struct kvm_assigned_dev_kernel *dev)
379
/* host_msix_entries and guest_msix_entries should have been
381
if (dev->entries_nr == 0)
384
r = pci_enable_msix(dev->dev, dev->host_msix_entries, dev->entries_nr);
388
for (i = 0; i < dev->entries_nr; i++) {
389
r = request_irq(dev->host_msix_entries[i].vector,
390
kvm_assigned_dev_intr, 0,
391
"kvm_assigned_msix_device",
393
/* FIXME: free requested_irq's on failure */
403
static int assigned_device_enable_guest_intx(struct kvm *kvm,
404
struct kvm_assigned_dev_kernel *dev,
405
struct kvm_assigned_irq *irq)
407
dev->guest_irq = irq->guest_irq;
408
dev->ack_notifier.gsi = irq->guest_irq;
412
#ifdef __KVM_HAVE_MSI
413
static int assigned_device_enable_guest_msi(struct kvm *kvm,
414
struct kvm_assigned_dev_kernel *dev,
415
struct kvm_assigned_irq *irq)
417
dev->guest_irq = irq->guest_irq;
418
dev->ack_notifier.gsi = -1;
419
dev->host_irq_disabled = false;
423
#ifdef __KVM_HAVE_MSIX
424
static int assigned_device_enable_guest_msix(struct kvm *kvm,
425
struct kvm_assigned_dev_kernel *dev,
426
struct kvm_assigned_irq *irq)
428
dev->guest_irq = irq->guest_irq;
429
dev->ack_notifier.gsi = -1;
430
dev->host_irq_disabled = false;
435
static int assign_host_irq(struct kvm *kvm,
436
struct kvm_assigned_dev_kernel *dev,
441
if (dev->irq_requested_type & KVM_DEV_IRQ_HOST_MASK)
444
switch (host_irq_type) {
445
case KVM_DEV_IRQ_HOST_INTX:
446
r = assigned_device_enable_host_intx(kvm, dev);
448
#ifdef __KVM_HAVE_MSI
449
case KVM_DEV_IRQ_HOST_MSI:
450
r = assigned_device_enable_host_msi(kvm, dev);
453
#ifdef __KVM_HAVE_MSIX
454
case KVM_DEV_IRQ_HOST_MSIX:
455
r = assigned_device_enable_host_msix(kvm, dev);
463
dev->irq_requested_type |= host_irq_type;
468
static int assign_guest_irq(struct kvm *kvm,
469
struct kvm_assigned_dev_kernel *dev,
470
struct kvm_assigned_irq *irq,
471
unsigned long guest_irq_type)
476
if (dev->irq_requested_type & KVM_DEV_IRQ_GUEST_MASK)
479
id = kvm_request_irq_source_id(kvm);
483
dev->irq_source_id = id;
485
switch (guest_irq_type) {
486
case KVM_DEV_IRQ_GUEST_INTX:
487
r = assigned_device_enable_guest_intx(kvm, dev, irq);
489
#ifdef __KVM_HAVE_MSI
490
case KVM_DEV_IRQ_GUEST_MSI:
491
r = assigned_device_enable_guest_msi(kvm, dev, irq);
494
#ifdef __KVM_HAVE_MSIX
495
case KVM_DEV_IRQ_GUEST_MSIX:
496
r = assigned_device_enable_guest_msix(kvm, dev, irq);
504
dev->irq_requested_type |= guest_irq_type;
505
kvm_register_irq_ack_notifier(kvm, &dev->ack_notifier);
507
kvm_free_irq_source_id(kvm, dev->irq_source_id);
512
/* TODO Deal with KVM_DEV_IRQ_ASSIGNED_MASK_MSIX */
513
static int kvm_vm_ioctl_assign_irq(struct kvm *kvm,
514
struct kvm_assigned_irq *assigned_irq)
517
struct kvm_assigned_dev_kernel *match;
518
unsigned long host_irq_type, guest_irq_type;
520
if (!capable(CAP_SYS_RAWIO))
523
if (!irqchip_in_kernel(kvm))
526
mutex_lock(&kvm->lock);
528
match = kvm_find_assigned_dev(&kvm->arch.assigned_dev_head,
529
assigned_irq->assigned_dev_id);
533
host_irq_type = (assigned_irq->flags & KVM_DEV_IRQ_HOST_MASK);
534
guest_irq_type = (assigned_irq->flags & KVM_DEV_IRQ_GUEST_MASK);
537
/* can only assign one type at a time */
538
if (hweight_long(host_irq_type) > 1)
540
if (hweight_long(guest_irq_type) > 1)
542
if (host_irq_type == 0 && guest_irq_type == 0)
547
r = assign_host_irq(kvm, match, host_irq_type);
552
r = assign_guest_irq(kvm, match, assigned_irq, guest_irq_type);
554
mutex_unlock(&kvm->lock);
558
static int kvm_vm_ioctl_deassign_dev_irq(struct kvm *kvm,
559
struct kvm_assigned_irq
563
struct kvm_assigned_dev_kernel *match;
565
mutex_lock(&kvm->lock);
567
match = kvm_find_assigned_dev(&kvm->arch.assigned_dev_head,
568
assigned_irq->assigned_dev_id);
572
r = kvm_deassign_irq(kvm, match, assigned_irq->flags);
574
mutex_unlock(&kvm->lock);
578
static int kvm_vm_ioctl_assign_device(struct kvm *kvm,
579
struct kvm_assigned_pci_dev *assigned_dev)
582
struct kvm_assigned_dev_kernel *match;
585
down_read(&kvm->slots_lock);
586
mutex_lock(&kvm->lock);
588
match = kvm_find_assigned_dev(&kvm->arch.assigned_dev_head,
589
assigned_dev->assigned_dev_id);
591
/* device already assigned */
596
match = kzalloc(sizeof(struct kvm_assigned_dev_kernel), GFP_KERNEL);
598
printk(KERN_INFO "%s: Couldn't allocate memory\n",
603
dev = pci_get_bus_and_slot(assigned_dev->busnr,
604
assigned_dev->devfn);
606
printk(KERN_INFO "%s: host device not found\n", __func__);
610
if (pci_enable_device(dev)) {
611
printk(KERN_INFO "%s: Could not enable PCI device\n", __func__);
615
r = pci_request_regions(dev, "kvm_assigned_device");
617
printk(KERN_INFO "%s: Could not get access to device regions\n",
622
pci_reset_function(dev);
624
match->assigned_dev_id = assigned_dev->assigned_dev_id;
625
match->host_busnr = assigned_dev->busnr;
626
match->host_devfn = assigned_dev->devfn;
627
match->flags = assigned_dev->flags;
629
spin_lock_init(&match->assigned_dev_lock);
630
match->irq_source_id = -1;
632
match->ack_notifier.irq_acked = kvm_assigned_dev_ack_irq;
633
INIT_WORK(&match->interrupt_work,
634
kvm_assigned_dev_interrupt_work_handler);
636
list_add(&match->list, &kvm->arch.assigned_dev_head);
638
if (assigned_dev->flags & KVM_DEV_ASSIGN_ENABLE_IOMMU) {
639
if (!kvm->arch.iommu_domain) {
640
r = kvm_iommu_map_guest(kvm);
644
r = kvm_assign_device(kvm, match);
650
mutex_unlock(&kvm->lock);
651
up_read(&kvm->slots_lock);
654
list_del(&match->list);
655
pci_release_regions(dev);
657
pci_disable_device(dev);
662
mutex_unlock(&kvm->lock);
663
up_read(&kvm->slots_lock);
668
#ifdef KVM_CAP_DEVICE_DEASSIGNMENT
669
static int kvm_vm_ioctl_deassign_device(struct kvm *kvm,
670
struct kvm_assigned_pci_dev *assigned_dev)
673
struct kvm_assigned_dev_kernel *match;
675
mutex_lock(&kvm->lock);
677
match = kvm_find_assigned_dev(&kvm->arch.assigned_dev_head,
678
assigned_dev->assigned_dev_id);
680
printk(KERN_INFO "%s: device hasn't been assigned before, "
681
"so cannot be deassigned\n", __func__);
686
if (match->flags & KVM_DEV_ASSIGN_ENABLE_IOMMU)
687
kvm_deassign_device(kvm, match);
689
kvm_free_assigned_device(kvm, match);
692
mutex_unlock(&kvm->lock);
98
static struct page *hwpoison_page;
99
static pfn_t hwpoison_pfn;
101
static struct page *fault_page;
102
static pfn_t fault_pfn;
697
104
inline int kvm_is_mmio_pfn(pfn_t pfn)
699
106
if (pfn_valid(pfn)) {
700
struct page *page = compound_head(pfn_to_page(pfn));
701
return PageReserved(page);
108
struct page *tail = pfn_to_page(pfn);
109
struct page *head = compound_trans_head(tail);
110
reserved = PageReserved(head);
113
* "head" is not a dangling pointer
114
* (compound_trans_head takes care of that)
115
* but the hugepage may have been splitted
116
* from under us (and we may not hold a
117
* reference count on the head page so it can
118
* be reused before we run PageReferenced), so
119
* we've to check PageTail before returning
126
return PageReserved(tail);
1405
965
EXPORT_SYMBOL_GPL(kvm_is_visible_gfn);
967
unsigned long kvm_host_page_size(struct kvm *kvm, gfn_t gfn)
969
struct vm_area_struct *vma;
970
unsigned long addr, size;
974
addr = gfn_to_hva(kvm, gfn);
975
if (kvm_is_error_hva(addr))
978
down_read(¤t->mm->mmap_sem);
979
vma = find_vma(current->mm, addr);
983
size = vma_kernel_pagesize(vma);
986
up_read(¤t->mm->mmap_sem);
991
int memslot_id(struct kvm *kvm, gfn_t gfn)
994
struct kvm_memslots *slots = kvm_memslots(kvm);
995
struct kvm_memory_slot *memslot = NULL;
997
for (i = 0; i < slots->nmemslots; ++i) {
998
memslot = &slots->memslots[i];
1000
if (gfn >= memslot->base_gfn
1001
&& gfn < memslot->base_gfn + memslot->npages)
1005
return memslot - slots->memslots;
1008
static unsigned long gfn_to_hva_many(struct kvm_memory_slot *slot, gfn_t gfn,
1011
if (!slot || slot->flags & KVM_MEMSLOT_INVALID)
1015
*nr_pages = slot->npages - (gfn - slot->base_gfn);
1017
return gfn_to_hva_memslot(slot, gfn);
1407
1020
unsigned long gfn_to_hva(struct kvm *kvm, gfn_t gfn)
1409
struct kvm_memory_slot *slot;
1411
gfn = unalias_gfn(kvm, gfn);
1412
slot = gfn_to_memslot_unaliased(kvm, gfn);
1415
return (slot->userspace_addr + (gfn - slot->base_gfn) * PAGE_SIZE);
1022
return gfn_to_hva_many(gfn_to_memslot(kvm, gfn), gfn, NULL);
1417
1024
EXPORT_SYMBOL_GPL(gfn_to_hva);
1419
pfn_t gfn_to_pfn(struct kvm *kvm, gfn_t gfn)
1026
static pfn_t get_fault_pfn(void)
1028
get_page(fault_page);
1032
static pfn_t hva_to_pfn(struct kvm *kvm, unsigned long addr, bool atomic,
1033
bool *async, bool write_fault, bool *writable)
1421
1035
struct page *page[1];
1428
addr = gfn_to_hva(kvm, gfn);
1429
if (kvm_is_error_hva(addr)) {
1431
return page_to_pfn(bad_page);
1039
/* we can do it either atomically or asynchronously, not both */
1040
BUG_ON(atomic && async);
1042
BUG_ON(!write_fault && !writable);
1047
if (atomic || async)
1048
npages = __get_user_pages_fast(addr, 1, 1, page);
1050
if (unlikely(npages != 1) && !atomic) {
1054
*writable = write_fault;
1056
npages = get_user_pages_fast(addr, 1, write_fault, page);
1058
/* map read fault as writable if possible */
1059
if (unlikely(!write_fault) && npages == 1) {
1060
struct page *wpage[1];
1062
npages = __get_user_pages_fast(addr, 1, 1, wpage);
1434
npages = get_user_pages_fast(addr, 1, 1, page);
1436
1072
if (unlikely(npages != 1)) {
1437
1073
struct vm_area_struct *vma;
1076
return get_fault_pfn();
1439
1078
down_read(¤t->mm->mmap_sem);
1440
vma = find_vma(current->mm, addr);
1442
if (vma == NULL || addr < vma->vm_start ||
1443
!(vma->vm_flags & VM_PFNMAP)) {
1079
if (is_hwpoison_address(addr)) {
1444
1080
up_read(¤t->mm->mmap_sem);
1446
return page_to_pfn(bad_page);
1449
pfn = ((addr - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff;
1081
get_page(hwpoison_page);
1082
return page_to_pfn(hwpoison_page);
1085
vma = find_vma_intersection(current->mm, addr, addr+1);
1088
pfn = get_fault_pfn();
1089
else if ((vma->vm_flags & VM_PFNMAP)) {
1090
pfn = ((addr - vma->vm_start) >> PAGE_SHIFT) +
1092
BUG_ON(!kvm_is_mmio_pfn(pfn));
1094
if (async && (vma->vm_flags & VM_WRITE))
1096
pfn = get_fault_pfn();
1450
1098
up_read(¤t->mm->mmap_sem);
1451
BUG_ON(!kvm_is_mmio_pfn(pfn));
1453
1100
pfn = page_to_pfn(page[0]);
1105
pfn_t hva_to_pfn_atomic(struct kvm *kvm, unsigned long addr)
1107
return hva_to_pfn(kvm, addr, true, NULL, true, NULL);
1109
EXPORT_SYMBOL_GPL(hva_to_pfn_atomic);
1111
static pfn_t __gfn_to_pfn(struct kvm *kvm, gfn_t gfn, bool atomic, bool *async,
1112
bool write_fault, bool *writable)
1119
addr = gfn_to_hva(kvm, gfn);
1120
if (kvm_is_error_hva(addr)) {
1122
return page_to_pfn(bad_page);
1125
return hva_to_pfn(kvm, addr, atomic, async, write_fault, writable);
1128
pfn_t gfn_to_pfn_atomic(struct kvm *kvm, gfn_t gfn)
1130
return __gfn_to_pfn(kvm, gfn, true, NULL, true, NULL);
1132
EXPORT_SYMBOL_GPL(gfn_to_pfn_atomic);
1134
pfn_t gfn_to_pfn_async(struct kvm *kvm, gfn_t gfn, bool *async,
1135
bool write_fault, bool *writable)
1137
return __gfn_to_pfn(kvm, gfn, false, async, write_fault, writable);
1139
EXPORT_SYMBOL_GPL(gfn_to_pfn_async);
1141
pfn_t gfn_to_pfn(struct kvm *kvm, gfn_t gfn)
1143
return __gfn_to_pfn(kvm, gfn, false, NULL, true, NULL);
1458
1145
EXPORT_SYMBOL_GPL(gfn_to_pfn);
1147
pfn_t gfn_to_pfn_prot(struct kvm *kvm, gfn_t gfn, bool write_fault,
1150
return __gfn_to_pfn(kvm, gfn, false, NULL, write_fault, writable);
1152
EXPORT_SYMBOL_GPL(gfn_to_pfn_prot);
1154
pfn_t gfn_to_pfn_memslot(struct kvm *kvm,
1155
struct kvm_memory_slot *slot, gfn_t gfn)
1157
unsigned long addr = gfn_to_hva_memslot(slot, gfn);
1158
return hva_to_pfn(kvm, addr, false, NULL, true, NULL);
1161
int gfn_to_page_many_atomic(struct kvm *kvm, gfn_t gfn, struct page **pages,
1167
addr = gfn_to_hva_many(gfn_to_memslot(kvm, gfn), gfn, &entry);
1168
if (kvm_is_error_hva(addr))
1171
if (entry < nr_pages)
1174
return __get_user_pages_fast(addr, nr_pages, 1, pages);
1176
EXPORT_SYMBOL_GPL(gfn_to_page_many_atomic);
1460
1178
struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn)
2547
2263
/* kvm_io_bus_read - called under kvm->slots_lock */
2548
int kvm_io_bus_read(struct kvm_io_bus *bus, gpa_t addr, int len, void *val)
2264
int kvm_io_bus_read(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr,
2268
struct kvm_io_bus *bus;
2270
bus = srcu_dereference(kvm->buses[bus_idx], &kvm->srcu);
2551
2271
for (i = 0; i < bus->dev_count; i++)
2552
2272
if (!kvm_iodevice_read(bus->devs[i], addr, len, val))
2554
2274
return -EOPNOTSUPP;
2557
int kvm_io_bus_register_dev(struct kvm *kvm, struct kvm_io_bus *bus,
2558
struct kvm_io_device *dev)
2562
down_write(&kvm->slots_lock);
2563
ret = __kvm_io_bus_register_dev(bus, dev);
2564
up_write(&kvm->slots_lock);
2569
/* An unlocked version. Caller must have write lock on slots_lock. */
2570
int __kvm_io_bus_register_dev(struct kvm_io_bus *bus,
2571
struct kvm_io_device *dev)
2277
/* Caller must hold slots_lock. */
2278
int kvm_io_bus_register_dev(struct kvm *kvm, enum kvm_bus bus_idx,
2279
struct kvm_io_device *dev)
2281
struct kvm_io_bus *new_bus, *bus;
2283
bus = kvm->buses[bus_idx];
2573
2284
if (bus->dev_count > NR_IOBUS_DEVS-1)
2574
2285
return -ENOSPC;
2576
bus->devs[bus->dev_count++] = dev;
2287
new_bus = kzalloc(sizeof(struct kvm_io_bus), GFP_KERNEL);
2290
memcpy(new_bus, bus, sizeof(struct kvm_io_bus));
2291
new_bus->devs[new_bus->dev_count++] = dev;
2292
rcu_assign_pointer(kvm->buses[bus_idx], new_bus);
2293
synchronize_srcu_expedited(&kvm->srcu);
2581
void kvm_io_bus_unregister_dev(struct kvm *kvm,
2582
struct kvm_io_bus *bus,
2583
struct kvm_io_device *dev)
2585
down_write(&kvm->slots_lock);
2586
__kvm_io_bus_unregister_dev(bus, dev);
2587
up_write(&kvm->slots_lock);
2590
/* An unlocked version. Caller must have write lock on slots_lock. */
2591
void __kvm_io_bus_unregister_dev(struct kvm_io_bus *bus,
2592
struct kvm_io_device *dev)
2596
for (i = 0; i < bus->dev_count; i++)
2597
if (bus->devs[i] == dev) {
2598
bus->devs[i] = bus->devs[--bus->dev_count];
2299
/* Caller must hold slots_lock. */
2300
int kvm_io_bus_unregister_dev(struct kvm *kvm, enum kvm_bus bus_idx,
2301
struct kvm_io_device *dev)
2304
struct kvm_io_bus *new_bus, *bus;
2306
new_bus = kzalloc(sizeof(struct kvm_io_bus), GFP_KERNEL);
2310
bus = kvm->buses[bus_idx];
2311
memcpy(new_bus, bus, sizeof(struct kvm_io_bus));
2314
for (i = 0; i < new_bus->dev_count; i++)
2315
if (new_bus->devs[i] == dev) {
2317
new_bus->devs[i] = new_bus->devs[--new_bus->dev_count];
2326
rcu_assign_pointer(kvm->buses[bus_idx], new_bus);
2327
synchronize_srcu_expedited(&kvm->srcu);
2603
2332
static struct notifier_block kvm_cpu_notifier = {
2604
2333
.notifier_call = kvm_cpu_hotplug,
2605
.priority = 20, /* must be > scheduler priority */
2608
2336
static int vm_stat_get(void *_offset, u64 *val)