VHE: Update VM loading code to load and map EL0 partitions

Updated load_secondary function to account for EL0 partitions. The main
change is that all the EL0 partitions mappings need to be marked as user
only and non-global. Also the hypervisor is mapped into the partitions
page tables but unprivileged access is disabled to those mappings. This
is required when crossing the boundary from EL0 to the hypervisor.
Note that the amount of hypervisor memory mapped into the EL0 partitions
page tables can be minimized to only contain the exception vectors but
that is left as a future exercise.

Change-Id: Ie4960c1e78855fd6e4e44565137238092dc173e8
Signed-off-by: Raghu Krishnamurthy <raghu.ncstate@gmail.com>
diff --git a/src/mm.c b/src/mm.c
index 113263c..00b1d14 100644
--- a/src/mm.c
+++ b/src/mm.c
@@ -1005,6 +1005,11 @@
 	return (struct mm_stage1_locked){.ptable = &ptable};
 }
 
+struct mm_stage1_locked mm_lock_ptable_unsafe(struct mm_ptable *ptable)
+{
+	return (struct mm_stage1_locked){.ptable = ptable};
+}
+
 struct mm_stage1_locked mm_lock_stage1(void)
 {
 	sl_lock(&ptable_lock);