@@ -410,24 +410,6 @@ void __init arch_init_memory(void)
BUG_ON(IS_ERR(dom_cow));
}
-void __cpuinit setup_virt_paging(void)
-{
- /* Setup Stage 2 address translation */
- /* SH0=11 (Inner-shareable)
- * ORGN0=IRGN0=01 (Normal memory, Write-Back Write-Allocate Cacheable)
- * SL0=01 (Level-1)
- * ARVv7: T0SZ=(1)1000 = -8 (32-(-8) = 40 bit physical addresses)
- * ARMv8: T0SZ=01 1000 = 24 (64-24 = 40 bit physical addresses)
- * PS=010 == 40 bits
- */
-#ifdef CONFIG_ARM_32
- WRITE_SYSREG32(0x80003558, VTCR_EL2);
-#else
- WRITE_SYSREG32(0x80023558, VTCR_EL2);
-#endif
- isb();
-}
-
static inline lpae_t pte_of_xenaddr(vaddr_t va)
{
paddr_t ma = va + phys_offset;
@@ -1112,6 +1112,24 @@ err:
return page;
}
+void __cpuinit setup_virt_paging(void)
+{
+ /* Setup Stage 2 address translation */
+ /* SH0=11 (Inner-shareable)
+ * ORGN0=IRGN0=01 (Normal memory, Write-Back Write-Allocate Cacheable)
+ * SL0=01 (Level-1)
+ * ARVv7: T0SZ=(1)1000 = -8 (32-(-8) = 40 bit physical addresses)
+ * ARMv8: T0SZ=01 1000 = 24 (64-24 = 40 bit physical addresses)
+ * PS=010 == 40 bits
+ */
+#ifdef CONFIG_ARM_32
+ WRITE_SYSREG32(0x80003558, VTCR_EL2);
+#else
+ WRITE_SYSREG32(0x80023558, VTCR_EL2);
+#endif
+ isb();
+}
+
/*
* Local variables:
* mode: C
@@ -155,8 +155,6 @@ extern void remove_early_mappings(void);
extern int __cpuinit init_secondary_pagetables(int cpu);
/* Switch secondary CPUS to its own pagetables and finalise MMU setup */
extern void __cpuinit mmu_init_secondary_cpu(void);
-/* Second stage paging setup, to be called on all CPUs */
-extern void __cpuinit setup_virt_paging(void);
/* Set up the xenheap: up to 1GB of contiguous, always-mapped memory.
* Base must be 32MB aligned and size a multiple of 32MB. */
extern void setup_xenheap_mappings(unsigned long base_mfn, unsigned long nr_mfns);
@@ -72,6 +72,9 @@ typedef enum {
/* Initialise vmid allocator */
void p2m_vmid_allocator_init(void);
+/* Second stage paging setup, to be called on all CPUs */
+void __cpuinit setup_virt_paging(void);
+
/* Init the datastructures for later use by the p2m code */
int p2m_init(struct domain *d);