diff --git a/inc/hf/mm.h b/inc/hf/mm.h
index 69fa78a..1a0bfd6 100644
--- a/inc/hf/mm.h
+++ b/inc/hf/mm.h
@@ -108,11 +108,11 @@
 bool mm_vm_init(struct mm_ptable *t, struct mpool *ppool);
 void mm_vm_fini(struct mm_ptable *t, struct mpool *ppool);
 bool mm_vm_identity_map(struct mm_ptable *t, paddr_t begin, paddr_t end,
-			uint32_t mode, ipaddr_t *ipa, struct mpool *ppool);
+			uint32_t mode, struct mpool *ppool, ipaddr_t *ipa);
 bool mm_vm_identity_prepare(struct mm_ptable *t, paddr_t begin, paddr_t end,
 			    uint32_t mode, struct mpool *ppool);
 void mm_vm_identity_commit(struct mm_ptable *t, paddr_t begin, paddr_t end,
-			   uint32_t mode, ipaddr_t *ipa, struct mpool *ppool);
+			   uint32_t mode, struct mpool *ppool, ipaddr_t *ipa);
 bool mm_vm_unmap(struct mm_ptable *t, paddr_t begin, paddr_t end,
 		 struct mpool *ppool);
 bool mm_vm_unmap_hypervisor(struct mm_ptable *t, struct mpool *ppool);
diff --git a/src/api.c b/src/api.c
index 19cbbd1..163f3dd 100644
--- a/src/api.c
+++ b/src/api.c
@@ -717,14 +717,14 @@
 	if (!mm_vm_identity_map(
 		    &vm_locked.vm->ptable, pa_send_begin, pa_send_end,
 		    MM_MODE_UNOWNED | MM_MODE_SHARED | MM_MODE_R | MM_MODE_W,
-		    NULL, &local_page_pool)) {
+		    &local_page_pool, NULL)) {
 		goto fail;
 	}
 
 	if (!mm_vm_identity_map(&vm_locked.vm->ptable, pa_recv_begin,
 				pa_recv_end,
 				MM_MODE_UNOWNED | MM_MODE_SHARED | MM_MODE_R,
-				NULL, &local_page_pool)) {
+				&local_page_pool, NULL)) {
 		/* TODO: partial defrag of failed range. */
 		/* Recover any memory consumed in failed mapping. */
 		mm_vm_defrag(&vm_locked.vm->ptable, &local_page_pool);
@@ -746,13 +746,13 @@
 	 */
 fail_undo_send_and_recv:
 	CHECK(mm_vm_identity_map(&vm_locked.vm->ptable, pa_recv_begin,
-				 pa_recv_end, orig_recv_mode, NULL,
-				 &local_page_pool));
+				 pa_recv_end, orig_recv_mode, &local_page_pool,
+				 NULL));
 
 fail_undo_send:
 	CHECK(mm_vm_identity_map(&vm_locked.vm->ptable, pa_send_begin,
-				 pa_send_end, orig_send_mode, NULL,
-				 &local_page_pool));
+				 pa_send_end, orig_send_mode, &local_page_pool,
+				 NULL));
 
 fail:
 	ret = false;
@@ -1539,7 +1539,7 @@
 	 * the recipient.
 	 */
 	if (!mm_vm_identity_map(&from->ptable, pa_begin, pa_end, from_mode,
-				NULL, &local_page_pool)) {
+				&local_page_pool, NULL)) {
 		ret = spci_error(SPCI_NO_MEMORY);
 		goto out;
 	}
@@ -1551,15 +1551,15 @@
 
 		/* Return memory to the sender. */
 		CHECK(mm_vm_identity_map(&from->ptable, pa_begin, pa_end,
-					 orig_from_mode, NULL,
-					 &local_page_pool));
+					 orig_from_mode, &local_page_pool,
+					 NULL));
 
 		goto out;
 	}
 
 	/* Complete the transfer by mapping the memory into the recipient. */
-	if (!mm_vm_identity_map(&to->ptable, pa_begin, pa_end, to_mode, NULL,
-				&local_page_pool)) {
+	if (!mm_vm_identity_map(&to->ptable, pa_begin, pa_end, to_mode,
+				&local_page_pool, NULL)) {
 		/* TODO: partial defrag of failed range. */
 		/* Recover any memory consumed in failed mapping. */
 		mm_vm_defrag(&from->ptable, &local_page_pool);
@@ -1567,8 +1567,8 @@
 		ret = spci_error(SPCI_NO_MEMORY);
 
 		CHECK(mm_vm_identity_map(&from->ptable, pa_begin, pa_end,
-					 orig_from_mode, NULL,
-					 &local_page_pool));
+					 orig_from_mode, &local_page_pool,
+					 NULL));
 
 		goto out;
 	}
diff --git a/src/load.c b/src/load.c
index 5c7fa2a..bd4879d 100644
--- a/src/load.c
+++ b/src/load.c
@@ -149,8 +149,8 @@
 	 */
 	if (!mm_vm_identity_map(&vm->ptable, pa_init(0),
 				pa_init(UINT64_C(1024) * 1024 * 1024 * 1024),
-				MM_MODE_R | MM_MODE_W | MM_MODE_D, NULL,
-				ppool)) {
+				MM_MODE_R | MM_MODE_W | MM_MODE_D, ppool,
+				NULL)) {
 		dlog("Unable to initialise address space for primary vm\n");
 		return false;
 	}
@@ -160,7 +160,7 @@
 		if (!mm_vm_identity_map(
 			    &vm->ptable, params->mem_ranges[i].begin,
 			    params->mem_ranges[i].end,
-			    MM_MODE_R | MM_MODE_W | MM_MODE_X, NULL, ppool)) {
+			    MM_MODE_R | MM_MODE_W | MM_MODE_X, ppool, NULL)) {
 			dlog("Unable to initialise memory for primary vm\n");
 			return false;
 		}
@@ -207,8 +207,8 @@
 
 	/* Grant the VM access to the memory. */
 	if (!mm_vm_identity_map(&vm->ptable, mem_begin, mem_end,
-				MM_MODE_R | MM_MODE_W | MM_MODE_X,
-				&secondary_entry, ppool)) {
+				MM_MODE_R | MM_MODE_W | MM_MODE_X, ppool,
+				&secondary_entry)) {
 		dlog("Unable to initialise memory.\n");
 		return false;
 	}
diff --git a/src/mm.c b/src/mm.c
index 30f4ca7..7fd2151 100644
--- a/src/mm.c
+++ b/src/mm.c
@@ -851,6 +851,8 @@
  * See `mm_ptable_identity_prepare`.
  *
  * This must be called before `mm_vm_identity_commit` for the same mapping.
+ *
+ * Returns true on success, or false if the update would fail.
  */
 bool mm_vm_identity_prepare(struct mm_ptable *t, paddr_t begin, paddr_t end,
 			    uint32_t mode, struct mpool *ppool)
@@ -868,7 +870,7 @@
  * `mm_vm_identity_prepare` must be called before this for the same mapping.
  */
 void mm_vm_identity_commit(struct mm_ptable *t, paddr_t begin, paddr_t end,
-			   uint32_t mode, ipaddr_t *ipa, struct mpool *ppool)
+			   uint32_t mode, struct mpool *ppool, ipaddr_t *ipa)
 {
 	int flags = mm_mode_to_flags(mode);
 
@@ -885,9 +887,17 @@
  * Updates a VM's page table such that the given physical address range is
  * mapped in the address space at the corresponding address range in the
  * architecture-agnostic mode provided.
+ *
+ * mm_vm_defrag should always be called after a series of page table updates,
+ * whether they succeed or fail. This is because on failure extra page table
+ * entries may have been allocated and then not used, while on success it may be
+ * possible to compact the page table by merging several entries into a block.
+ *
+ * Returns true on success, or false if the update failed and no changes were
+ * made.
  */
 bool mm_vm_identity_map(struct mm_ptable *t, paddr_t begin, paddr_t end,
-			uint32_t mode, ipaddr_t *ipa, struct mpool *ppool)
+			uint32_t mode, struct mpool *ppool, ipaddr_t *ipa)
 {
 	int flags = mm_mode_to_flags(mode);
 	bool success = mm_ptable_identity_update(
@@ -910,7 +920,7 @@
 {
 	uint32_t mode = MM_MODE_UNMAPPED_MASK;
 
-	return mm_vm_identity_map(t, begin, end, mode, NULL, ppool);
+	return mm_vm_identity_map(t, begin, end, mode, ppool, NULL);
 }
 
 /**
diff --git a/src/mm_test.cc b/src/mm_test.cc
index 5989dfc..839a6e7 100644
--- a/src/mm_test.cc
+++ b/src/mm_test.cc
@@ -144,7 +144,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, page_begin, page_end, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 
 	auto tables = get_ptable(ptable);
 	EXPECT_THAT(tables, SizeIs(4));
@@ -187,8 +187,8 @@
 	ipaddr_t ipa = ipa_init(-1);
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
-	ASSERT_TRUE(mm_vm_identity_map(&ptable, map_begin, map_end, mode, &ipa,
-				       &ppool));
+	ASSERT_TRUE(mm_vm_identity_map(&ptable, map_begin, map_end, mode,
+				       &ppool, &ipa));
 	EXPECT_THAT(ipa_addr(ipa), Eq(pa_addr(map_begin)));
 
 	auto tables = get_ptable(ptable);
@@ -233,7 +233,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, map_begin, map_end, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 
 	auto tables = get_ptable(ptable);
 	EXPECT_THAT(tables, SizeIs(4));
@@ -294,7 +294,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	auto tables = get_ptable(ptable);
 	EXPECT_THAT(
 		tables,
@@ -323,9 +323,9 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), pa_init(PAGE_SIZE),
-				       mode, &ipa, &ppool));
+				       mode, &ppool, &ipa));
 	EXPECT_THAT(ipa_addr(ipa), Eq(0));
 	EXPECT_THAT(
 		get_ptable(ptable),
@@ -345,7 +345,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0x1234'5678),
-				       pa_init(0x5000), mode, &ipa, &ppool));
+				       pa_init(0x5000), mode, &ppool, &ipa));
 	EXPECT_THAT(ipa_addr(ipa), Eq(0x1234'5678));
 	EXPECT_THAT(
 		get_ptable(ptable),
@@ -367,7 +367,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(20), pa_init(10), mode,
-				       &ipa, &ppool));
+				       &ppool, &ipa));
 	EXPECT_THAT(ipa_addr(ipa), Eq(20));
 	EXPECT_TRUE(mm_vm_is_mapped(&ptable, ipa));
 	mm_vm_fini(&ptable, &ppool);
@@ -388,8 +388,8 @@
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(
 		&ptable, pa_init(0),
-		pa_init(std::numeric_limits<uintpaddr_t>::max()), mode, &ipa,
-		&ppool));
+		pa_init(std::numeric_limits<uintpaddr_t>::max()), mode, &ppool,
+		&ipa));
 	EXPECT_THAT(ipa_addr(ipa), Eq(0));
 	EXPECT_THAT(
 		get_ptable(ptable),
@@ -408,7 +408,7 @@
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0),
 				       pa_init(0xf32'0000'0000'0000), mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	EXPECT_THAT(
 		get_ptable(ptable),
 		AllOf(SizeIs(4), Each(Each(Truly(std::bind(arch_mm_pte_is_block,
@@ -427,8 +427,8 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, VM_MEM_END,
-				       pa_init(0xf0'0000'0000'0000), mode, &ipa,
-				       &ppool));
+				       pa_init(0xf0'0000'0000'0000), mode,
+				       &ppool, &ipa));
 	EXPECT_THAT(ipa_addr(ipa), Eq(pa_addr(VM_MEM_END)));
 	EXPECT_THAT(
 		get_ptable(ptable),
@@ -448,9 +448,9 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, page_begin, page_end, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	EXPECT_THAT(
 		get_ptable(ptable),
 		AllOf(SizeIs(4), Each(Each(Truly(std::bind(arch_mm_pte_is_block,
@@ -470,10 +470,10 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	ASSERT_TRUE(mm_vm_unmap(&ptable, page_begin, page_end, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, page_begin, page_end, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	EXPECT_THAT(get_ptable(ptable),
 		    AllOf(SizeIs(4),
 			  Each(Each(Truly(std::bind(arch_mm_pte_is_present, _1,
@@ -498,12 +498,12 @@
 	const paddr_t l1_end = pa_add(l1_begin, 5 * mm_entry_size(1));
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
-	ASSERT_TRUE(mm_vm_identity_map(&ptable, l0_begin, l0_end, mode, nullptr,
-				       &ppool));
-	ASSERT_TRUE(mm_vm_identity_map(&ptable, l1_begin, l1_end, mode, nullptr,
-				       &ppool));
+	ASSERT_TRUE(mm_vm_identity_map(&ptable, l0_begin, l0_end, mode, &ppool,
+				       nullptr));
+	ASSERT_TRUE(mm_vm_identity_map(&ptable, l1_begin, l1_end, mode, &ppool,
+				       nullptr));
 	EXPECT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END,
-				       MM_MODE_UNMAPPED_MASK, nullptr, &ppool));
+				       MM_MODE_UNMAPPED_MASK, &ppool, nullptr));
 	EXPECT_THAT(
 		get_ptable(ptable),
 		AllOf(SizeIs(4), Each(Each(arch_mm_absent_pte(TOP_LEVEL)))));
@@ -522,8 +522,8 @@
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_prepare(&ptable, page_begin, page_end, mode,
 					   &ppool));
-	mm_vm_identity_commit(&ptable, page_begin, page_end, mode, nullptr,
-			      &ppool);
+	mm_vm_identity_commit(&ptable, page_begin, page_end, mode, &ppool,
+			      nullptr);
 
 	auto tables = get_ptable(ptable);
 	EXPECT_THAT(tables, SizeIs(4));
@@ -570,10 +570,10 @@
 					   mode, &ppool));
 	ASSERT_TRUE(mm_vm_identity_prepare(&ptable, last_begin, last_end, mode,
 					   &ppool));
-	mm_vm_identity_commit(&ptable, first_begin, first_end, mode, nullptr,
-			      &ppool);
-	mm_vm_identity_commit(&ptable, last_begin, last_end, mode, nullptr,
-			      &ppool);
+	mm_vm_identity_commit(&ptable, first_begin, first_end, mode, &ppool,
+			      nullptr);
+	mm_vm_identity_commit(&ptable, last_begin, last_end, mode, &ppool,
+			      nullptr);
 
 	auto tables = get_ptable(ptable);
 	EXPECT_THAT(tables, SizeIs(4));
@@ -642,10 +642,10 @@
 					   &ppool));
 	ASSERT_TRUE(mm_vm_identity_prepare(&ptable, low_begin, map_end, mode,
 					   &ppool));
-	mm_vm_identity_commit(&ptable, high_begin, map_end, mode, nullptr,
-			      &ppool);
-	mm_vm_identity_commit(&ptable, low_begin, map_end, mode, nullptr,
-			      &ppool);
+	mm_vm_identity_commit(&ptable, high_begin, map_end, mode, &ppool,
+			      nullptr);
+	mm_vm_identity_commit(&ptable, low_begin, map_end, mode, &ppool,
+			      nullptr);
 
 	auto tables = get_ptable(ptable);
 	EXPECT_THAT(tables, SizeIs(4));
@@ -738,10 +738,10 @@
 	const paddr_t l1_end = pa_add(l1_begin, 5 * mm_entry_size(1));
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
-	ASSERT_TRUE(mm_vm_identity_map(&ptable, l0_begin, l0_end, mode, nullptr,
-				       &ppool));
-	ASSERT_TRUE(mm_vm_identity_map(&ptable, l1_begin, l1_end, mode, nullptr,
-				       &ppool));
+	ASSERT_TRUE(mm_vm_identity_map(&ptable, l0_begin, l0_end, mode, &ppool,
+				       nullptr));
+	ASSERT_TRUE(mm_vm_identity_map(&ptable, l1_begin, l1_end, mode, &ppool,
+				       nullptr));
 	EXPECT_TRUE(mm_vm_unmap(&ptable, pa_init(0), VM_MEM_END, &ppool));
 	EXPECT_THAT(
 		get_ptable(ptable),
@@ -761,7 +761,7 @@
 
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, map_begin, map_end, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	ASSERT_TRUE(mm_vm_unmap(&ptable, pa_add(map_begin, 93),
 				pa_add(map_begin, 99), &ppool));
 
@@ -808,7 +808,7 @@
 
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, map_begin, map_end, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	ASSERT_TRUE(mm_vm_unmap(&ptable, map_begin, map_end, &ppool));
 
 	auto tables = get_ptable(ptable);
@@ -860,7 +860,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	ASSERT_TRUE(mm_vm_unmap(&ptable, VM_MEM_END, pa_init(0x4000'0000'0000),
 				&ppool));
 	EXPECT_THAT(
@@ -880,7 +880,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	ASSERT_TRUE(mm_vm_unmap(&ptable, pa_init(0x80'a000'0000), pa_init(27),
 				&ppool));
 	EXPECT_THAT(
@@ -905,7 +905,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, page_begin, page_end, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	ASSERT_TRUE(mm_vm_unmap(&ptable, pa_add(page_begin, 100),
 				pa_add(page_begin, 50), &ppool));
 
@@ -947,7 +947,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	ASSERT_TRUE(mm_vm_unmap(
 		&ptable, pa_init(0),
 		pa_init(std::numeric_limits<uintpaddr_t>::max()), &ppool));
@@ -970,10 +970,10 @@
 	const paddr_t l1_end = pa_add(l1_begin, 5 * mm_entry_size(1));
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
-	ASSERT_TRUE(mm_vm_identity_map(&ptable, l0_begin, l0_end, mode, nullptr,
-				       &ppool));
-	ASSERT_TRUE(mm_vm_identity_map(&ptable, l1_begin, l1_end, mode, nullptr,
-				       &ppool));
+	ASSERT_TRUE(mm_vm_identity_map(&ptable, l0_begin, l0_end, mode, &ppool,
+				       nullptr));
+	ASSERT_TRUE(mm_vm_identity_map(&ptable, l1_begin, l1_end, mode, &ppool,
+				       nullptr));
 	ASSERT_TRUE(mm_vm_unmap(&ptable, l0_begin, l0_end, &ppool));
 	ASSERT_TRUE(mm_vm_unmap(&ptable, l1_begin, l1_end, &ppool));
 	EXPECT_THAT(get_ptable(ptable),
@@ -1004,7 +1004,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	EXPECT_TRUE(mm_vm_is_mapped(&ptable, ipa_init(0)));
 	EXPECT_TRUE(mm_vm_is_mapped(&ptable, ipa_init(0xf247'a7b3)));
 	EXPECT_TRUE(mm_vm_is_mapped(&ptable, ipa_init(0x1ff'7bfa'983b)));
@@ -1022,7 +1022,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, page_begin, page_end, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	EXPECT_TRUE(mm_vm_is_mapped(&ptable, ipa_from_pa(page_begin)));
 	EXPECT_TRUE(
 		mm_vm_is_mapped(&ptable, ipa_from_pa(pa_add(page_begin, 127))));
@@ -1039,7 +1039,7 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	EXPECT_FALSE(mm_vm_is_mapped(&ptable, ipa_from_pa(VM_MEM_END)));
 	EXPECT_FALSE(mm_vm_is_mapped(&ptable, ipa_init(0x1000'adb7'8123)));
 	EXPECT_FALSE(mm_vm_is_mapped(
@@ -1090,7 +1090,7 @@
 	uint32_t read_mode;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, map_begin, map_end, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 
 	read_mode = 0;
 	EXPECT_TRUE(mm_vm_get_mode(&ptable, ipa_from_pa(map_begin),
@@ -1119,7 +1119,7 @@
 	uint32_t read_mode;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	EXPECT_FALSE(mm_vm_get_mode(&ptable, ipa_init(0),
 				    ipa_from_pa(pa_add(VM_MEM_END, 1)),
 				    &read_mode));
@@ -1158,10 +1158,10 @@
 	const paddr_t l1_end = pa_add(l1_begin, 5 * mm_entry_size(1));
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
-	ASSERT_TRUE(mm_vm_identity_map(&ptable, l0_begin, l0_end, mode, nullptr,
-				       &ppool));
-	ASSERT_TRUE(mm_vm_identity_map(&ptable, l1_begin, l1_end, mode, nullptr,
-				       &ppool));
+	ASSERT_TRUE(mm_vm_identity_map(&ptable, l0_begin, l0_end, mode, &ppool,
+				       nullptr));
+	ASSERT_TRUE(mm_vm_identity_map(&ptable, l1_begin, l1_end, mode, &ppool,
+				       nullptr));
 	ASSERT_TRUE(mm_vm_unmap(&ptable, l0_begin, l0_end, &ppool));
 	ASSERT_TRUE(mm_vm_unmap(&ptable, l1_begin, l1_end, &ppool));
 	mm_vm_defrag(&ptable, &ppool);
@@ -1184,12 +1184,12 @@
 	struct mm_ptable ptable;
 	ASSERT_TRUE(mm_vm_init(&ptable, &ppool));
 	ASSERT_TRUE(mm_vm_identity_map(&ptable, pa_init(0), VM_MEM_END, mode,
-				       nullptr, &ppool));
+				       &ppool, nullptr));
 	ASSERT_TRUE(mm_vm_unmap(&ptable, begin, end, &ppool));
-	ASSERT_TRUE(mm_vm_identity_map(&ptable, begin, middle, mode, nullptr,
-				       &ppool));
-	ASSERT_TRUE(mm_vm_identity_map(&ptable, middle, end, mode, nullptr,
-				       &ppool));
+	ASSERT_TRUE(mm_vm_identity_map(&ptable, begin, middle, mode, &ppool,
+				       nullptr));
+	ASSERT_TRUE(mm_vm_identity_map(&ptable, middle, end, mode, &ppool,
+				       nullptr));
 	mm_vm_defrag(&ptable, &ppool);
 	EXPECT_THAT(
 		get_ptable(ptable),
