arm/mpu: Create the skeleton for MPU compilation

This commit introduces the skeleton for the MPU memory management
subsystem that allows the compilation on Arm64.

Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
This commit is contained in:
Luca Fancellu authored and Michal Orzel committed 2025-04-02 11:15:10 +02:00
1 parent 2705f1adb9
commit 5d9610f914
10 files changed
+247 -1

No files matched your search

+2
View File
@@ -1 +1,3 @@
obj-y += head.o
obj-y += p2m.o
obj-y += smpboot.o
+19
View File
@@ -0,0 +1,19 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <xen/bug.h>
#include <xen/init.h>
#include <asm/p2m.h>
void __init setup_virt_paging(void)
{
BUG_ON("unimplemented");
}
/*
* Local variables:
* mode: C
* c-file-style: "BSD"
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*/
+26
View File
@@ -0,0 +1,26 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <xen/bug.h>
#include <xen/errno.h>
#include <xen/mm.h>
#include <xen/stdbool.h>
int prepare_secondary_mm(int cpu)
{
BUG_ON("unimplemented");
return -EINVAL;
}
void update_boot_mapping(bool enable)
{
BUG_ON("unimplemented");
}
/*
* Local variables:
* mode: C
* c-file-style: "BSD"
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*/
+21
View File
@@ -0,0 +1,21 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __ARM_MPU_P2M_H__
#define __ARM_MPU_P2M_H__
struct p2m_domain;
static inline void p2m_clear_root_pages(struct p2m_domain *p2m) {}
static inline void p2m_tlb_flush_sync(struct p2m_domain *p2m) {}
#endif /* __ARM_MPU_P2M_H__ */
/*
* Local variables:
* mode: C
* c-file-style: "BSD"
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*/
+1 -1
View File
@@ -168,7 +168,7 @@ typedef enum {
#if defined(CONFIG_MMU)
# include <asm/mmu/p2m.h>
#else
# error "Unknown memory management layout"
# include <asm/mpu/p2m.h>
#endif
static inline bool arch_acquire_resource_check(struct domain *d)
+3
View File
@@ -1 +1,4 @@
obj-y += mm.o
obj-y += p2m.o
obj-y += setup.init.o
obj-y += vmap.o
+25
View File
@@ -1,9 +1,12 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <xen/bug.h>
#include <xen/errno.h>
#include <xen/init.h>
#include <xen/lib.h>
#include <xen/mm.h>
#include <xen/sizes.h>
#include <xen/types.h>
struct page_info *frame_table;
@@ -17,6 +20,28 @@ static void __init __maybe_unused build_assertions(void)
BUILD_BUG_ON(PAGE_SIZE != SZ_4K);
}
void __init setup_mm(void)
{
BUG_ON("unimplemented");
}
int modify_xen_mappings(unsigned long s, unsigned long e, unsigned int nf)
{
BUG_ON("unimplemented");
return -EINVAL;
}
void dump_hyp_walk(vaddr_t addr)
{
BUG_ON("unimplemented");
}
/* Release all __init and __initdata ranges to be reused */
void free_init_memory(void)
{
BUG_ON("unimplemented");
}
void __iomem *ioremap_attr(paddr_t start, size_t len, unsigned int flags)
{
BUG_ON("unimplemented");
+84
View File
@@ -0,0 +1,84 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <xen/bug.h>
#include <xen/domain.h>
#include <xen/errno.h>
#include <xen/mm-frame.h>
#include <xen/sched.h>
#include <xen/types.h>
#include <asm/p2m.h>
int p2m_set_entry(struct p2m_domain *p2m, gfn_t sgfn, unsigned long nr,
mfn_t smfn, p2m_type_t t, p2m_access_t a)
{
BUG_ON("unimplemented");
return -EINVAL;
}
mfn_t p2m_get_entry(struct p2m_domain *p2m, gfn_t gfn, p2m_type_t *t,
p2m_access_t *a, unsigned int *page_order, bool *valid)
{
BUG_ON("unimplemented");
return INVALID_MFN;
}
void p2m_dump_info(struct domain *d)
{
BUG_ON("unimplemented");
}
int p2m_init(struct domain *d)
{
BUG_ON("unimplemented");
return -EINVAL;
}
void p2m_save_state(struct vcpu *p)
{
BUG_ON("unimplemented");
}
void p2m_restore_state(struct vcpu *n)
{
BUG_ON("unimplemented");
}
void p2m_final_teardown(struct domain *d)
{
BUG_ON("unimplemented");
}
bool p2m_resolve_translation_fault(struct domain *d, gfn_t gfn)
{
BUG_ON("unimplemented");
return false;
}
void p2m_flush_vm(struct vcpu *v) {}
int relinquish_p2m_mapping(struct domain *d)
{
return 0;
}
void p2m_domain_creation_finished(struct domain *d) {}
int p2m_teardown(struct domain *d)
{
return 0;
}
int p2m_teardown_allocation(struct domain *d)
{
return 0;
}
/*
* Local variables:
* mode: C
* c-file-style: "BSD"
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*/
+40
View File
@@ -0,0 +1,40 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <xen/bug.h>
#include <xen/init.h>
#include <xen/mm.h>
#include <xen/types.h>
#include <asm/setup.h>
void __init setup_pagetables(void) {}
void * __init early_fdt_map(paddr_t fdt_paddr)
{
BUG_ON("unimplemented");
return NULL;
}
/*
* copy_from_paddr - copy data from a physical address
* @dst: destination virtual address
* @paddr: source physical address
* @len: length to copy
*/
void __init copy_from_paddr(void *dst, paddr_t paddr, unsigned long len)
{
BUG_ON("unimplemented");
}
void __init remove_early_mappings(void)
{
BUG_ON("unimplemented");
}
/*
* Local variables:
* mode: C
* c-file-style: "BSD"
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*/
+26
View File
@@ -0,0 +1,26 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <xen/bug.h>
#include <xen/mm-frame.h>
#include <xen/types.h>
#include <xen/vmap.h>
void *vmap_contig(mfn_t mfn, unsigned int nr)
{
BUG_ON("unimplemented");
return NULL;
}
void vunmap(const void *va)
{
BUG_ON("unimplemented");
}
/*
* Local variables:
* mode: C
* c-file-style: "BSD"
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*/
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.