mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
x86/boot: Drop xen_virt_end
The calculation in __start_xen() for xen_virt_end is an opencoding of
ROUNDUP(_end, 2M). This is __2M_rwdata_end as provided by the linker script.
This corrects the bound calculations in arch_livepatch_init() and
update_xen_mappings() to not enforce 2M alignment when Xen is not compiled
with CONFIG_XEN_ALIGN_2M.
Furthermore, since 52975142d1 ("x86/boot: Create the l2_xenmap[] mappings
dynamically"), there have not been extraneous mappings to delete, meaning that
the call to destroy_xen_mappings() has been a no-op.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
ffa5d037c7
commit
c182e89d0b
4 files changed
+4
-10
No files matched your search
@@ -17,6 +17,7 @@
|
||||
#include <asm/fixmap.h>
|
||||
#include <asm/nmi.h>
|
||||
#include <asm/livepatch.h>
|
||||
#include <asm/setup.h>
|
||||
|
||||
static bool has_active_waitqueue(const struct vm_event_domain *ved)
|
||||
{
|
||||
@@ -343,7 +344,7 @@ void __init arch_livepatch_init(void)
|
||||
{
|
||||
void *start, *end;
|
||||
|
||||
start = (void *)xen_virt_end;
|
||||
start = (void *)__2M_rwdata_end;
|
||||
end = (void *)(XEN_VIRT_END - FIXADDR_X_SIZE - NR_CPUS * PAGE_SIZE);
|
||||
|
||||
BUG_ON(end <= start);
|
||||
|
||||
+2
-1
@@ -787,7 +787,8 @@ static int update_xen_mappings(unsigned long mfn, unsigned int cacheattr)
|
||||
{
|
||||
int err = 0;
|
||||
bool alias = mfn >= PFN_DOWN(xen_phys_start) &&
|
||||
mfn < PFN_UP(xen_phys_start + xen_virt_end - XEN_VIRT_START);
|
||||
mfn < PFN_UP(xen_phys_start + (unsigned long)__2M_rwdata_end -
|
||||
XEN_VIRT_START);
|
||||
unsigned long xen_va =
|
||||
XEN_VIRT_START + ((mfn - PFN_DOWN(xen_phys_start)) << PAGE_SHIFT);
|
||||
|
||||
|
||||
@@ -136,8 +136,6 @@ cpumask_t __read_mostly cpu_present_map;
|
||||
|
||||
unsigned long __read_mostly xen_phys_start;
|
||||
|
||||
unsigned long __read_mostly xen_virt_end;
|
||||
|
||||
char __section(".bss.stack_aligned") __aligned(STACK_SIZE)
|
||||
cpu0_stack[STACK_SIZE];
|
||||
|
||||
@@ -1573,10 +1571,6 @@ void __init noreturn __start_xen(unsigned long mbi_p)
|
||||
}
|
||||
#endif
|
||||
|
||||
xen_virt_end = ((unsigned long)_end + (1UL << L2_PAGETABLE_SHIFT) - 1) &
|
||||
~((1UL << L2_PAGETABLE_SHIFT) - 1);
|
||||
destroy_xen_mappings(xen_virt_end, XEN_VIRT_START + BOOTSTRAP_MAP_BASE);
|
||||
|
||||
/*
|
||||
* If not using 2M mappings to gain suitable pagetable permissions
|
||||
* directly from the relocation above, remap the code/data
|
||||
|
||||
@@ -23,8 +23,6 @@ static inline unsigned long canonicalise_addr(unsigned long addr)
|
||||
|
||||
#include <xen/pdx.h>
|
||||
|
||||
extern unsigned long xen_virt_end;
|
||||
|
||||
/*
|
||||
* Note: These are solely for the use by page_{get,set}_owner(), and
|
||||
* therefore don't need to handle the XEN_VIRT_{START,END} range.
|
||||
|
||||