Set primary kernel in manifest and allow preloading.

The primary kernel was previously hard-coded as `vmlinuz` but the
manifest allows more flexibility. If the kernel file for any VM is not
specified, it is assumed that the image has been preloaded into memory.

The loading of the primary and secondaries are becoming increasingly
similar and will continue to do so.

Change-Id: I34f134d8a4d32e8ac92e142d3636902d52ad86ec
diff --git a/inc/hf/load.h b/inc/hf/load.h
index d7ccd71..b76dc1d 100644
--- a/inc/hf/load.h
+++ b/inc/hf/load.h
@@ -26,10 +26,7 @@
 #include "hf/mm.h"
 #include "hf/mpool.h"
 
-bool load_primary(struct mm_stage1_locked stage1_locked,
-		  const struct memiter *cpio, uintreg_t kernel_arg,
-		  struct memiter *initrd, struct mpool *ppool);
-bool load_secondary(struct mm_stage1_locked stage1_locked,
-		    const struct manifest *manifest, const struct memiter *cpio,
-		    const struct boot_params *params,
-		    struct boot_params_update *update, struct mpool *ppool);
+bool load_vms(struct mm_stage1_locked stage1_locked,
+	      const struct manifest *manifest, const struct memiter *cpio,
+	      const struct boot_params *params,
+	      struct boot_params_update *update, struct mpool *ppool);
diff --git a/inc/hf/manifest.h b/inc/hf/manifest.h
index 57657c7..cdbdd39 100644
--- a/inc/hf/manifest.h
+++ b/inc/hf/manifest.h
@@ -31,10 +31,10 @@
 struct manifest_vm {
 	/* Properties defined for both primary and secondary VMs. */
 	char debug_name[MANIFEST_MAX_STRING_LENGTH];
+	char kernel_filename[MANIFEST_MAX_STRING_LENGTH];
 
 	/* Properties specific to secondary VMs. */
 	struct {
-		char kernel_filename[MANIFEST_MAX_STRING_LENGTH];
 		uint64_t mem_size;
 		spci_vcpu_count_t vcpu_count;
 	} secondary;