[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3] Livepatching patch set for 4.10
Hey, As I was trying to port livepatch-build-tools.git to work under ARM32 and ARM64 (still ongoing, if somebody wants to help/take over would appreciate it) I found some inconsistencies compared to the x86 and test-cases: - The .livepatch.funcs in the test-cases are in RW section but the livepatch-build-tools puts them in the RO sections. That works on x86 as arch_livepatch_quiesce turns of WP globally during the livepatching. But not on ARM.. and to make it work there I ended up using the vmap functionality. Which then I made common on x86 as well (so no more CR4 mucking). This meant however meant mucking with x86 code page walker to have a do_page_walk functionality. - Cross compiling ARM32 introduces subtle alignment issues. Mainly both .altinstructions and .livepatch.depends end up with the wrong alingment and the hypervisor blows up. Both fixes are in the patchset. I am also including in this patchset: - Declare the livepatch supported on x86 (but not ARM). It has latest feedback from Andrew and George (I hope!) - Post the local/global symbol patchset functionality. Only Jan had commented and I would appreciate other folks feedback - perhaps folks have better ideas on this? Lastly, I tested this on ARM32 (Cubietruck), ARM64 (HiKey960) and on x86. All looked good until I enabled CONFIG_DEBUG_SCRUB - which is reported in: https://lists.xen.org/archives/html/xen-devel/2017-09/msg01147.html Patches are in git://xenbits.xen.org/people/konradwilk/xen.git staging-for-4.10.v3 docs/features/livepatch.pandoc | 106 ++++++++++++++++ docs/misc/livepatch.markdown | 4 + xen/arch/arm/arm32/livepatch.c | 33 ++++- xen/arch/arm/arm64/livepatch.c | 17 ++- xen/arch/arm/livepatch.c | 49 +------- xen/arch/arm/xen.lds.S | 2 - xen/arch/x86/livepatch.c | 36 ++++-- xen/arch/x86/x86_64/mm.c | 33 +++-- xen/arch/x86/xen.lds.S | 1 - xen/common/Kconfig | 4 +- xen/common/livepatch.c | 219 +++++++++++++++++++++++++-------- xen/common/livepatch_elf.c | 13 ++ xen/include/asm-arm/alternative.h | 4 + xen/include/asm-arm/livepatch.h | 6 - xen/include/asm-x86/alternative.h | 1 + xen/include/asm-x86/mm.h | 1 + xen/include/xen/elfstructs.h | 2 + xen/include/xen/livepatch.h | 23 +++- xen/include/xen/livepatch_elf.h | 7 ++ xen/test/livepatch/Makefile | 76 +++++++----- xen/test/livepatch/xen_bye_world.c | 1 + xen/test/livepatch/xen_hello_world.c | 1 + xen/test/livepatch/xen_local_symbols.c | 53 ++++++++ xen/test/livepatch/xen_nop.c | 1 + xen/test/livepatch/xen_replace_world.c | 1 + 25 files changed, 521 insertions(+), 173 deletions(-) Konrad Rzeszutek Wilk (16): livepatch: Expand check for safe_for_reapply if livepatch has only .rodata. livepatch: Tighten alignment checks. livepatch: Include sizes when an mismatch occurs xen/livepatch/ARM32: Don't load and crash on livepatches loaded with wrong text alignment. alternative/x86/arm32: Align altinstructions (and altinstr_replacement) sections. xen/livepatch/x86/arm32: Force .livepatch.depends section to be uint32_t aligned. livepatch/arm/x86: Strip note_depends symbol from test-cases. livepatch/tests: Make sure all .livepatch.funcs sections are read-only livepatch/arm[32,64]: Modify livepatch_funcs livepatch/x86/arm[32,64]: Use common vmap code for applying. livepatch/x86/arm[32,64]: Unify arch_livepatch_revert livepatch: Expand spin_debug_disable in [apply|revert]_payload livepatch/x86/arm: arch/x86/mm: generalize do_page_walk() and implement arch_livepatch_lookup_mfn livepatch/x86/arm: Utilize the arch_livepatch_lookup_mfn livepatch: Add local and global symbol resolution. livepatch: Add xen_local_symbols test-case Ross Lagerwall (1): livepatch: Declare live patching as a supported feature _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |