mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen: arm: Add a new helper update_boot_mapping()
update_boot_mapping() invokes update_identity_mapping() for the MMU specific
code.
Later when the MPU code is added, update_boot_mapping() will invoke the
equivalent.
The common code now invokes update_boot_mapping() instead of
update_identity_mapping(). So, that there is clear abstraction between the
common and MMU/MPU specific logic.
This is in continuation to commit
f661a20aa8: "Extract MMU-specific MM code".
update_identity_mapping() is now marked as static as it is called from
xen/arch/arm/arm64/mmu/mm.c only. Also, amend the prototype to
update_boot_mapping() which is now invoked from other files.
Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
This commit is contained in:
1 parent
be9b405aef
commit
6df7c21b63
3 files changed
+17
-12
No files matched your search
@@ -111,7 +111,14 @@ void __init arch_setup_page_tables(void)
|
||||
prepare_runtime_identity_mapping();
|
||||
}
|
||||
|
||||
void update_identity_mapping(bool enable)
|
||||
/*
|
||||
* Enable/disable the identity mapping in the live page-tables (i.e.
|
||||
* the one pointed by TTBR_EL2).
|
||||
*
|
||||
* Note that nested call (e.g. enable=true, enable=true) is not
|
||||
* supported.
|
||||
*/
|
||||
static void update_identity_mapping(bool enable)
|
||||
{
|
||||
paddr_t id_addr = virt_to_maddr(_start);
|
||||
int rc;
|
||||
@@ -125,6 +132,11 @@ void update_identity_mapping(bool enable)
|
||||
BUG_ON(rc);
|
||||
}
|
||||
|
||||
void update_boot_mapping(bool enable)
|
||||
{
|
||||
update_identity_mapping(enable);
|
||||
}
|
||||
|
||||
extern void switch_ttbr_id(uint64_t ttbr);
|
||||
|
||||
typedef void (switch_ttbr_fn)(uint64_t ttbr);
|
||||
|
||||
@@ -112,18 +112,18 @@ int arch_cpu_up(int cpu)
|
||||
if ( !smp_enable_ops[cpu].prepare_cpu )
|
||||
return -ENODEV;
|
||||
|
||||
update_identity_mapping(true);
|
||||
update_boot_mapping(true);
|
||||
|
||||
rc = smp_enable_ops[cpu].prepare_cpu(cpu);
|
||||
if ( rc )
|
||||
update_identity_mapping(false);
|
||||
update_boot_mapping(false);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
void arch_cpu_up_finish(void)
|
||||
{
|
||||
update_identity_mapping(false);
|
||||
update_boot_mapping(false);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -14,14 +14,7 @@ static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
|
||||
|
||||
void arch_setup_page_tables(void);
|
||||
|
||||
/*
|
||||
* Enable/disable the identity mapping in the live page-tables (i.e.
|
||||
* the one pointed by TTBR_EL2).
|
||||
*
|
||||
* Note that nested call (e.g. enable=true, enable=true) is not
|
||||
* supported.
|
||||
*/
|
||||
void update_identity_mapping(bool enable);
|
||||
void update_boot_mapping(bool enable);
|
||||
|
||||
#endif /* __ARM_ARM64_MM_H__ */
|
||||
|
||||
|
||||