[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 04/16] livepatch: Initial ARM64 support.
Hi Konrad, On 16/09/2016 18:38, Konrad Rzeszutek Wilk wrote: diff --git a/xen/arch/arm/arm64/livepatch.c b/xen/arch/arm/arm64/livepatch.c new file mode 100644 index 0000000..49eb69b --- /dev/null +++ b/xen/arch/arm/arm64/livepatch.c [...] +int arch_livepatch_perform_rela(struct livepatch_elf *elf, + const struct livepatch_elf_sec *base, + const struct livepatch_elf_sec *rela) +{ [...] + + /* MOVW instruction relocations. */ + case R_AARCH64_MOVW_UABS_G0_NC: + overflow_check = false; Can you add a comment here to mention the fall-through? + + case R_AARCH64_MOVW_UABS_G0: + ovf = reloc_insn_movw(RELOC_OP_ABS, dest, val, 0, + AARCH64_INSN_IMM_MOVKZ); + break; + + case R_AARCH64_MOVW_UABS_G1_NC: + overflow_check = false; Ditto. + + case R_AARCH64_MOVW_UABS_G1: + ovf = reloc_insn_movw(RELOC_OP_ABS, dest, val, 16, + AARCH64_INSN_IMM_MOVKZ); + break; + + case R_AARCH64_MOVW_UABS_G2_NC: + overflow_check = false; Ditto. + + case R_AARCH64_MOVW_UABS_G2: + ovf = reloc_insn_movw(RELOC_OP_ABS, dest, val, 32, + AARCH64_INSN_IMM_MOVKZ); + break; [...] + /* Instructions. */ + case R_AARCH64_ADR_PREL_LO21: + ovf = reloc_insn_imm(RELOC_OP_PREL, dest, val, 0, 21, + AARCH64_INSN_IMM_ADR); + break; + + case R_AARCH64_ADR_PREL_PG_HI21_NC: + overflow_check = false; Ditto. + case R_AARCH64_ADR_PREL_PG_HI21: + ovf = reloc_insn_imm(RELOC_OP_PAGE, dest, val, 12, 21, + AARCH64_INSN_IMM_ADR); + break; [...] diff --git a/xen/arch/arm/livepatch.c b/xen/arch/arm/livepatch.c index 755f596..b4b4b6c 100644 --- a/xen/arch/arm/livepatch.c +++ b/xen/arch/arm/livepatch.c [...] void arch_livepatch_revive(void) { + /* + * Nuke the instruction cache. Data cache has been cleaned before in + * arch_livepatch_apply_jmp. I think you forgot to clean text region from the payload. Without that, you may receive a crash if you have a separate cache for data and instruction. + */ + invalidate_icache(); + + if ( vmap_of_xen_text ) + vunmap(vmap_of_xen_text); + + vmap_of_xen_text = NULL; } Regards, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |