]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/powerpc/kvm/book3s_hv_builtin.c
Merge tag 'drm-intel-fixes-2017-03-22' of git://anongit.freedesktop.org/git/drm-intel...
[karo-tx-linux.git] / arch / powerpc / kvm / book3s_hv_builtin.c
index 5bb24be0b346c0d39560b16722002e6e6cbb85a3..4d6c64b3041c3aa4f58d1a504ad868c27b6924df 100644 (file)
@@ -52,19 +52,20 @@ static int __init early_parse_kvm_cma_resv(char *p)
 }
 early_param("kvm_cma_resv_ratio", early_parse_kvm_cma_resv);
 
-struct page *kvm_alloc_hpt(unsigned long nr_pages)
+struct page *kvm_alloc_hpt_cma(unsigned long nr_pages)
 {
        VM_BUG_ON(order_base_2(nr_pages) < KVM_CMA_CHUNK_ORDER - PAGE_SHIFT);
 
-       return cma_alloc(kvm_cma, nr_pages, order_base_2(HPT_ALIGN_PAGES));
+       return cma_alloc(kvm_cma, nr_pages, order_base_2(HPT_ALIGN_PAGES),
+                        GFP_KERNEL);
 }
-EXPORT_SYMBOL_GPL(kvm_alloc_hpt);
+EXPORT_SYMBOL_GPL(kvm_alloc_hpt_cma);
 
-void kvm_release_hpt(struct page *page, unsigned long nr_pages)
+void kvm_free_hpt_cma(struct page *page, unsigned long nr_pages)
 {
        cma_release(kvm_cma, page, nr_pages);
 }
-EXPORT_SYMBOL_GPL(kvm_release_hpt);
+EXPORT_SYMBOL_GPL(kvm_free_hpt_cma);
 
 /**
  * kvm_cma_reserve() - reserve area for kvm hash pagetable
@@ -200,7 +201,6 @@ static inline void rm_writeb(unsigned long paddr, u8 val)
 
 /*
  * Send an interrupt or message to another CPU.
- * This can only be called in real mode.
  * The caller needs to include any barrier needed to order writes
  * to memory vs. the IPI/message.
  */
@@ -229,8 +229,7 @@ void kvmhv_rm_send_ipi(int cpu)
        if (xics_phys)
                rm_writeb(xics_phys + XICS_MFRR, IPI_PRIORITY);
        else
-               opal_rm_int_set_mfrr(get_hard_smp_processor_id(cpu),
-                                    IPI_PRIORITY);
+               opal_int_set_mfrr(get_hard_smp_processor_id(cpu), IPI_PRIORITY);
 }
 
 /*
@@ -412,14 +411,13 @@ static long kvmppc_read_one_intr(bool *again)
 
        /* Now read the interrupt from the ICP */
        xics_phys = local_paca->kvm_hstate.xics_phys;
-       if (!xics_phys) {
-               /* Use OPAL to read the XIRR */
-               rc = opal_rm_int_get_xirr(&xirr, false);
-               if (rc < 0)
-                       return 1;
-       } else {
+       rc = 0;
+       if (!xics_phys)
+               rc = opal_int_get_xirr(&xirr, false);
+       else
                xirr = _lwzcix(xics_phys + XICS_XIRR);
-       }
+       if (rc < 0)
+               return 1;
 
        /*
         * Save XIRR for later. Since we get control in reverse endian
@@ -445,15 +443,16 @@ static long kvmppc_read_one_intr(bool *again)
         * If it is an IPI, clear the MFRR and EOI it.
         */
        if (xisr == XICS_IPI) {
+               rc = 0;
                if (xics_phys) {
                        _stbcix(xics_phys + XICS_MFRR, 0xff);
                        _stwcix(xics_phys + XICS_XIRR, xirr);
                } else {
-                       opal_rm_int_set_mfrr(hard_smp_processor_id(), 0xff);
-                       rc = opal_rm_int_eoi(h_xirr);
-                       /* If rc > 0, there is another interrupt pending */
-                       *again = rc > 0;
+                       opal_int_set_mfrr(hard_smp_processor_id(), 0xff);
+                       rc = opal_int_eoi(h_xirr);
                }
+               /* If rc > 0, there is another interrupt pending */
+               *again = rc > 0;
 
                /*
                 * Need to ensure side effects of above stores
@@ -474,8 +473,8 @@ static long kvmppc_read_one_intr(bool *again)
                        if (xics_phys)
                                _stbcix(xics_phys + XICS_MFRR, IPI_PRIORITY);
                        else
-                               opal_rm_int_set_mfrr(hard_smp_processor_id(),
-                                                    IPI_PRIORITY);
+                               opal_int_set_mfrr(hard_smp_processor_id(),
+                                                 IPI_PRIORITY);
                        /* Let side effects complete */
                        smp_mb();
                        return 1;