mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/virtual-region: Drop setup_virtual_regions()
All other actions it used to perform have been converted to build-time initialisation. The extable setup can done at build time too. This is one fewer setup step required to get exceptions working. Take the opportunity to move 'core' into read_mostly, where it probably should have lived all along. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com> Tested-by: Luca Fancellu <luca.fancellu@arm.com>
This commit is contained in:
1 parent
038ba305fd
commit
d37c184236
4 files changed
+13
-13
No files matched your search
@@ -719,7 +719,6 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
|
||||
percpu_init_areas();
|
||||
set_processor_id(0); /* needed early, for smp_processor_id() */
|
||||
|
||||
setup_virtual_regions(NULL, NULL);
|
||||
/* Initialize traps early allow us to get backtrace when an error occurred */
|
||||
init_traps();
|
||||
|
||||
|
||||
@@ -1014,8 +1014,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
|
||||
smp_prepare_boot_cpu();
|
||||
sort_exception_tables();
|
||||
|
||||
setup_virtual_regions(__start___ex_table, __stop___ex_table);
|
||||
|
||||
/* Full exception support from here on in. */
|
||||
|
||||
rdmsrl(MSR_EFER, this_cpu(efer));
|
||||
|
||||
@@ -26,7 +26,7 @@ static struct virtual_region core, core_init;
|
||||
#define LIST_ENTRY_CORE() { .next = &core_init.list, .prev = &virtual_region_list }
|
||||
#define LIST_ENTRY_INIT() { .next = &virtual_region_list, .prev = &core.list }
|
||||
|
||||
static struct virtual_region core = {
|
||||
static struct virtual_region core __read_mostly = {
|
||||
.list = LIST_ENTRY_CORE(),
|
||||
.text_start = _stext,
|
||||
.text_end = _etext,
|
||||
@@ -39,6 +39,11 @@ static struct virtual_region core = {
|
||||
{ __start_bug_frames_2, __stop_bug_frames_2 },
|
||||
{ __start_bug_frames_3, __stop_bug_frames_3 },
|
||||
},
|
||||
|
||||
#ifdef CONFIG_HAS_EX_TABLE
|
||||
.ex = __start___ex_table,
|
||||
.ex_end = __stop___ex_table,
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Becomes irrelevant when __init sections are cleared. */
|
||||
@@ -53,6 +58,11 @@ static struct virtual_region core_init __initdata = {
|
||||
{ __start_bug_frames_2, __stop_bug_frames_2 },
|
||||
{ __start_bug_frames_3, __stop_bug_frames_3 },
|
||||
},
|
||||
|
||||
#ifdef CONFIG_HAS_EX_TABLE
|
||||
.ex = __start___ex_table,
|
||||
.ex_end = __stop___ex_table,
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -161,13 +171,6 @@ void __init unregister_init_virtual_region(void)
|
||||
remove_virtual_region(&core_init);
|
||||
}
|
||||
|
||||
void __init setup_virtual_regions(const struct exception_table_entry *start,
|
||||
const struct exception_table_entry *end)
|
||||
{
|
||||
core_init.ex = core.ex = start;
|
||||
core_init.ex_end = core.ex_end = end;
|
||||
}
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* mode: C
|
||||
|
||||
@@ -32,13 +32,13 @@ struct virtual_region
|
||||
const struct bug_frame *start, *stop; /* Pointers to array of bug frames. */
|
||||
} frame[BUGFRAME_NR];
|
||||
|
||||
#ifdef CONFIG_HAS_EX_TABLE
|
||||
const struct exception_table_entry *ex;
|
||||
const struct exception_table_entry *ex_end;
|
||||
#endif
|
||||
};
|
||||
|
||||
const struct virtual_region *find_text_region(unsigned long addr);
|
||||
void setup_virtual_regions(const struct exception_table_entry *start,
|
||||
const struct exception_table_entry *end);
|
||||
void unregister_init_virtual_region(void);
|
||||
void register_virtual_region(struct virtual_region *r);
|
||||
void unregister_virtual_region(struct virtual_region *r);
|
||||
|
||||