*/
        BUG_ON(first_memblock_base != 0);
 
-       /* On LPAR systems, the first entry is our RMA region,
-        * non-LPAR 64-bit hash MMU systems don't have a limitation
-        * on real mode access, but using the first entry works well
-        * enough. We also clamp it to 1G to avoid some funky things
+       /*
+        * On virtualized systems the first entry is our RMA region aka VRMA,
+        * non-virtualized 64-bit hash MMU systems don't have a limitation
+        * on real mode access.
+        *
+        * We also clamp it to 1G to avoid some funky things
         * such as RTAS bugs etc...
         */
-       ppc64_rma_size = min_t(u64, first_memblock_size, 0x40000000);
+       if (!early_cpu_has_feature(CPU_FTR_HVMODE)) {
+               ppc64_rma_size = min_t(u64, first_memblock_size, 0x40000000);
 
-       /* Finally limit subsequent allocations */
-       memblock_set_current_limit(ppc64_rma_size);
+               /* Finally limit subsequent allocations */
+               memblock_set_current_limit(ppc64_rma_size);
+       } else {
+               ppc64_rma_size = ULONG_MAX;
+       }
 }
 
 #ifdef CONFIG_DEBUG_FS
 
         * physical on those processors
         */
        BUG_ON(first_memblock_base != 0);
-       /*
-        * We limit the allocation that depend on ppc64_rma_size
-        * to first_memblock_size. We also clamp it to 1GB to
-        * avoid some funky things such as RTAS bugs.
-        *
-        * On radix config we really don't have a limitation
-        * on real mode access. But keeping it as above works
-        * well enough.
-        */
-       ppc64_rma_size = min_t(u64, first_memblock_size, 0x40000000);
-       /*
-        * Finally limit subsequent allocations. We really don't want
-        * to limit the memblock allocations to rma_size. FIXME!! should
-        * we even limit at all ?
-        */
-       memblock_set_current_limit(first_memblock_base + first_memblock_size);
+
+       if (!early_cpu_has_feature(CPU_FTR_HVMODE)) {
+               /*
+                * We limit the allocation that depend on ppc64_rma_size
+                * to first_memblock_size. We also clamp it to 1GB to
+                * avoid some funky things such as RTAS bugs.
+                *
+                * On radix config we really don't have a limitation
+                * on real mode access. But keeping it as above works
+                * well enough.
+                */
+               ppc64_rma_size = min_t(u64, first_memblock_size, 0x40000000);
+               /*
+                * Finally limit subsequent allocations. We really don't want
+                * to limit the memblock allocations to rma_size. FIXME!! should
+                * we even limit at all ?
+                */
+               memblock_set_current_limit(first_memblock_base + first_memblock_size);
+       } else {
+               ppc64_rma_size = ULONG_MAX;
+       }
 }
 
 #ifdef CONFIG_MEMORY_HOTPLUG