From: Nathan Chancellor <natechancellor@gmail.com>
To: Julien Thierry <jthierry@redhat.com>
Cc: peterz@infradead.org, catalin.marinas@arm.com,
linux-kernel@vger.kernel.org, clang-built-linux@googlegroups.com,
raphael.gault@arm.com, jpoimboe@redhat.com, will@kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC v5 00/57] objtool: Add support for arm64
Date: Sun, 12 Jan 2020 01:42:58 -0700 [thread overview]
Message-ID: <20200112084258.GA44004@ubuntu-x2-xlarge-x86> (raw)
In-Reply-To: <20200109160300.26150-1-jthierry@redhat.com>
On Thu, Jan 09, 2020 at 04:02:03PM +0000, Julien Thierry wrote:
> Hi,
>
> This patch series is the continuation of Raphael's work [1]. All the
> patches can be retrieved from:
> git clone -b arm64-objtool-v5 https://github.com/julien-thierry/linux.git
>
> There still are some outstanding issues but the series is starting to
> get pretty big so it is probably good to start having some discussions
> on the current state of things.
>
> It felt necessary to split some of the patches (especially the arm64
> decoder). In order to give Raphael credit for his work I used the
> "Suggested-by" tag. If this is not the right way to give credit or if
> it should be present on more patches do let me know.
>
> There still are some shortcomings. On defconfig here are the remaining
> warnings:
> * arch/arm64/crypto/crct10dif-ce-core.o: warning: objtool: crc_t10dif_pmull_p8()+0xf0: unsupported intra-function call
> * arch/arm64/kernel/cpu_errata.o: warning: objtool: qcom_link_stack_sanitization()+0x4: unsupported intra-function call
> Objtool currently does not support bl from a procedure to itself. This
> is also an issue with retpolines. I need to investigate more to figure
> out whether something can be done for this or if this file should not be
> validated by objtool.
>
> * arch/arm64/kernel/efi-entry.o: warning: objtool: entry()+0xb0: sibling call from callable instruction with modified stack frame
> The EFI entry jumps to code mapped by EFI. Objtool cannot know statically where the code flow is going.
>
> * arch/arm64/kernel/entry.o: warning: objtool: .entry.tramp.text+0x404: unsupported intra-function call
> Need to figure out what is needed to handle aarch64 trampolines. x86
> explicitly annotates theirs with ANNOTATE_NOSPEC_ALTERNATIVE and
> patching them as alternatives.
>
> * arch/arm64/kernel/head.o: warning: objtool: .head.text+0x58: can't find jump dest instruction at .head.text+0x80884
> This is actually a constant that turns out to be a valid branch opcode.
> A possible solution could be to introduce a marco that explicitly
> annotates constants placed in code sections.
>
> * arch/arm64/kernel/hibernate-asm.o: warning: objtool: el1_sync()+0x4: unsupported instruction in callable function
> Symbols el<x>_* shouldn't be considered as callable functions. Should we
> use SYM_CODE_END instead of PROC_END?
>
> * arch/arm64/kvm/hyp/hyp-entry.o: warning: objtool: .hyp.text: empty alternative at end of section
> This is due to the arm64 alternative_cb. Currently, the feature
> corresponding to the alternative_cb is defined as the current number of
> features supported by the kernel, meaning the identifier is not fixed
> accross kernel versions. This makes it a bit hard to detect these
> alternative_cb for external tools.
>
> Would it be acceptable to set a fixed identifier for alternative_cb?
> (probably 0xFF so it is always higher than the number of real features)
>
> * drivers/ata/libata-scsi.o: warning: objtool: ata_sas_queuecmd() falls through to next function ata_scsi_scan_host()
> This is due to a limitation in the switch table metadata interpretation.
> The compiler might create a table of unsigned offsets and then
> compute the final offset as follows:
>
> ldrb offset_reg, [<offset_table>, <offset_idx>, uxtw]
> adr base_reg, <base_addr>
> add res_addr, base_reg, offset_reg, sxtb #2
>
> Effectively using the loaded offset as a signed value.
> I don't have a simple way to solve this at the moment, I'd like to
> avoid decoding the instructions to check which ones might sign extend
> the loaded offset.
>
> * kernel/bpf/core.o: warning: objtool: ___bpf_prog_run()+0x44: sibling call from callable instruction with modified stack frame
> This is because the function uses a C jump table which differ from
> basic jump tables. Also, the code generated for C jump tables on arm64
> does not follow the same form as the one for x86. So the existing x86 objtool
> code handling C jump tables can't be used.
>
> I'll focus on understanding the arm64 pattern so objtool can handle them.
>
>
> In the mean time, any feedback on the current state is appreciated.
>
> * Patches 1 to 18 adapts the current objtool code to make it easier to
> support new architectures.
> * Patches 19 to 45 add the support for arm64 architecture to objtool.
> * Patches 46 to 57 fix warnings reported by objtool on the existing
> arm64 code.
>
> Changes since RFCv4[1]:
> * Rebase on v5.5-rc5
> * Misc cleanup/bug fixes
> * Fix some new objtool warnings reported on arm64 objects
> * Make ORC subcommand optional since arm64 does not currently support it
> * Support branch instructions in alternative sections when they jump
> within the same set of alternative instructions
> * Replace the "extra" stack_op with a list of stack_op
> * Split the decoder into multiple patches to ease review
> * Mark constants generated by load literal instructions as bytes that
> should not be reached by execution flow
> * Rework the switch table handling
>
> [1] https://lkml.org/lkml/2019/8/16/400
>
> Thanks,
>
> Julien
>
> -->
>
> Julien Thierry (43):
> objtool: check: Remove redundant checks on operand type
> objtool: check: Clean instruction state before each function
> validation
> objtool: check: Use arch specific values in restore_reg()
> objtool: check: Ignore empty alternative groups
> objtool: Give ORC functions consistent name
> objtool: Make ORC support optional
> objtool: Split generic and arch specific CFI definitions
> objtool: Abstract alternative special case handling
> objtool: check: Allow jumps from an alternative group to itself
> objtool: Do not look for STT_NOTYPE symbols
> objtool: Support addition to set frame pointer
> objtool: Support restoring BP from the stack without POP
> objtool: Make stack validation more generic
> objtool: Support multiple stack_op per instruction
> objtool: arm64: Decode unknown instructions
> objtool: arm64: Decode simple data processing instructions
> objtool: arm64: Decode add/sub immediate instructions
> objtool: arm64: Decode logical data processing instructions
> objtool: arm64: Decode system instructions not affecting the flow
> objtool: arm64: Decode calls to higher EL
> objtool: arm64: Decode brk instruction
> objtool: arm64: Decode instruction triggering context switch
> objtool: arm64: Decode branch instructions with PC relative immediates
> objtool: arm64: Decode branch to register instruction
> objtool: arm64: Decode basic load/stores
> objtool: arm64: Decode load/store with register offset
> objtool: arm64: Decode load/store register pair instructions
> objtool: arm64: Decode FP/SIMD load/store instructions
> objtool: arm64: Decode load/store exclusive
> objtool: arm64: Decode atomic load/store
> objtool: arm64: Decode pointer auth load instructions
> objtool: arm64: Decode load acquire/store release
> objtool: arm64: Decode load/store with memory tag
> objtool: arm64: Decode load literal
> objtool: arm64: Decode register data processing instructions
> objtool: arm64: Decode FP/SIMD data processing instructions
> objtool: arm64: Decode SVE instructions
> objtool: arm64: Implement functions to add switch tables alternatives
> arm64: Generate no-ops to pad executable section
> arm64: Move constant to rodata
> arm64: Mark sigreturn32.o as containing non standard code
> arm64: entry: Avoid empty alternatives entries
> arm64: crypto: Remove redundant branch
>
> Raphael Gault (14):
> objtool: Add abstraction for computation of symbols offsets
> objtool: orc: Refactor ORC API for other architectures to implement.
> objtool: Move registers and control flow to arch-dependent code
> objtool: Refactor switch-tables code to support other architectures
> objtool: arm64: Add required implementation for supporting the aarch64
> architecture in objtool.
> gcc-plugins: objtool: Add plugin to detect switch table on arm64
> objtool: arm64: Enable stack validation for arm64
> arm64: alternative: Mark .altinstr_replacement as containing
> executable instructions
> arm64: assembler: Add macro to annotate asm function having non
> standard stack-frame.
> arm64: sleep: Prevent stack frame warnings from objtool
> arm64: kvm: Annotate non-standard stack frame functions
> arm64: kernel: Add exception on kuser32 to prevent stack analysis
> arm64: crypto: Add exceptions for crypto object to prevent stack
> analysis
> arm64: kernel: Annotate non-standard stack frame functions
>
> arch/arm64/Kconfig | 2 +
> arch/arm64/crypto/Makefile | 3 +
> arch/arm64/crypto/sha1-ce-core.S | 3 +-
> arch/arm64/crypto/sha2-ce-core.S | 3 +-
> arch/arm64/crypto/sha3-ce-core.S | 3 +-
> arch/arm64/crypto/sha512-ce-core.S | 3 +-
> arch/arm64/include/asm/alternative.h | 2 +-
> arch/arm64/kernel/Makefile | 4 +
> arch/arm64/kernel/entry.S | 4 +-
> arch/arm64/kernel/hyp-stub.S | 3 +
> arch/arm64/kernel/relocate_kernel.S | 5 +
> arch/arm64/kernel/sleep.S | 5 +
> arch/arm64/kvm/hyp-init.S | 3 +
> arch/arm64/kvm/hyp/entry.S | 3 +
> include/linux/frame.h | 19 +-
> scripts/Makefile.gcc-plugins | 2 +
> scripts/gcc-plugins/Kconfig | 4 +
> .../arm64_switch_table_detection_plugin.c | 94 +
> tools/objtool/Build | 4 +-
> tools/objtool/Makefile | 13 +-
> tools/objtool/arch.h | 14 +-
> tools/objtool/arch/arm64/Build | 5 +
> tools/objtool/arch/arm64/arch_special.c | 262 ++
> tools/objtool/arch/arm64/bit_operations.c | 69 +
> tools/objtool/arch/arm64/decode.c | 2866 +++++++++++++++++
> .../objtool/arch/arm64/include/arch_special.h | 23 +
> .../arch/arm64/include/bit_operations.h | 31 +
> tools/objtool/arch/arm64/include/cfi_regs.h | 44 +
> .../objtool/arch/arm64/include/insn_decode.h | 206 ++
> tools/objtool/arch/x86/Build | 3 +
> tools/objtool/arch/x86/arch_special.c | 182 ++
> tools/objtool/arch/x86/decode.c | 29 +-
> tools/objtool/arch/x86/include/arch_special.h | 28 +
> tools/objtool/arch/x86/include/cfi_regs.h | 25 +
> tools/objtool/{ => arch/x86}/orc_dump.c | 4 +-
> tools/objtool/{ => arch/x86}/orc_gen.c | 114 +-
> tools/objtool/cfi.h | 21 +-
> tools/objtool/check.c | 461 +--
> tools/objtool/check.h | 13 +-
> tools/objtool/elf.c | 3 +-
> tools/objtool/objtool.c | 2 +
> tools/objtool/orc.h | 38 +-
> tools/objtool/special.c | 44 +-
> tools/objtool/special.h | 13 +
> 44 files changed, 4282 insertions(+), 400 deletions(-)
> create mode 100644 scripts/gcc-plugins/arm64_switch_table_detection_plugin.c
> create mode 100644 tools/objtool/arch/arm64/Build
> create mode 100644 tools/objtool/arch/arm64/arch_special.c
> create mode 100644 tools/objtool/arch/arm64/bit_operations.c
> create mode 100644 tools/objtool/arch/arm64/decode.c
> create mode 100644 tools/objtool/arch/arm64/include/arch_special.h
> create mode 100644 tools/objtool/arch/arm64/include/bit_operations.h
> create mode 100644 tools/objtool/arch/arm64/include/cfi_regs.h
> create mode 100644 tools/objtool/arch/arm64/include/insn_decode.h
> create mode 100644 tools/objtool/arch/x86/arch_special.c
> create mode 100644 tools/objtool/arch/x86/include/arch_special.h
> create mode 100644 tools/objtool/arch/x86/include/cfi_regs.h
> rename tools/objtool/{ => arch/x86}/orc_dump.c (98%)
> rename tools/objtool/{ => arch/x86}/orc_gen.c (62%)
>
> --
> 2.21.0
>
Hi Julien,
The 0day bot reported a couple of issues with clang with this series;
the full report is available here (clang reports are only sent to our
mailing lists for manual triage for the time being):
https://groups.google.com/d/msg/clang-built-linux/MJbl_xPxawg/mWjgDgZgBwAJ
The first obvious issue is that this series appears to depend on a GCC
plugin? I'll be quite honest, objtool and everything it does is rather
over my head but I see this warning during configuration (allyesconfig):
WARNING: unmet direct dependencies detected for GCC_PLUGIN_SWITCH_TABLES
Depends on [n]: GCC_PLUGINS [=n] && ARM64 [=y]
Selected by [y]:
- ARM64 [=y] && STACK_VALIDATION [=y]
Followed by the actual error:
error: unable to load plugin
'./scripts/gcc-plugins/arm64_switch_table_detection_plugin.so':
'./scripts/gcc-plugins/arm64_switch_table_detection_plugin.so: cannot
open shared object file: No such file or directory'
If this plugin is absolutely necessary and can't be implemented in
another way so that clang can be used, seems like STACK_VALIDATION
should only be selected on ARM64 when CONFIG_CC_IS_GCC is not zero.
The second issue I see is the -Wenum-conversion warnings; they are
pretty trivial to fix (see commit e7e83dd3ff1d ("objtool: Fix Clang
enum conversion warning") upstream and the below diff).
Would you mind addressing these in a v6 if you happen to do one?
Cheers,
Nathan
diff --git a/tools/objtool/arch/arm64/decode.c b/tools/objtool/arch/arm64/decode.c
index 5a5f82b5cb81..1ed6bf0c85ce 100644
--- a/tools/objtool/arch/arm64/decode.c
+++ b/tools/objtool/arch/arm64/decode.c
@@ -1518,7 +1518,7 @@ int arm_decode_ld_st_regs_unsc_imm(u32 instr, enum insn_type *type,
op->dest.type = OP_DEST_REG_INDIRECT;
op->dest.reg = rn;
op->dest.offset = SIGN_EXTEND(imm9, 9);
- op->src.type = OP_DEST_REG;
+ op->src.type = OP_SRC_REG;
op->src.reg = rt;
op->src.offset = 0;
break;
@@ -1605,7 +1605,7 @@ int arm_decode_ld_st_regs_unsigned(u32 instr, enum insn_type *type,
op->dest.type = OP_DEST_REG_INDIRECT;
op->dest.reg = rn;
op->dest.offset = imm12;
- op->src.type = OP_DEST_REG;
+ op->src.type = OP_SRC_REG;
op->src.reg = rt;
op->src.offset = 0;
}
@@ -1772,7 +1772,7 @@ int arm_decode_ld_st_imm_unpriv(u32 instr, enum insn_type *type,
op->dest.type = OP_DEST_REG_INDIRECT;
op->dest.reg = rn;
op->dest.offset = SIGN_EXTEND(imm9, 9);
- op->src.type = OP_DEST_REG;
+ op->src.type = OP_SRC_REG;
op->src.reg = rt;
op->src.offset = 0;
break;
@@ -1852,7 +1852,7 @@ int arm_decode_atomic(u32 instr, enum insn_type *type,
list_add_tail(&op->list, ops_list);
op->src.reg = rn;
- op->src.type = OP_DEST_REG_INDIRECT;
+ op->src.type = OP_SRC_REG_INDIRECT;
op->src.offset = 0;
op->dest.type = OP_DEST_REG;
op->dest.reg = rt;
@@ -2187,7 +2187,7 @@ int arm_decode_ldapr_stlr_unsc_imm(u32 instr, enum insn_type *type,
break;
default:
/* store */
- op->dest.type = OP_SRC_REG_INDIRECT;
+ op->dest.type = OP_DEST_REG_INDIRECT;
op->dest.reg = rn;
op->dest.offset = SIGN_EXTEND(imm9, 9);
op->src.type = OP_SRC_REG;
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-01-12 8:43 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-09 16:02 [RFC v5 00/57] objtool: Add support for arm64 Julien Thierry
2020-01-09 16:02 ` [RFC v5 01/57] objtool: check: Remove redundant checks on operand type Julien Thierry
2020-01-09 16:02 ` [RFC v5 02/57] objtool: check: Clean instruction state before each function validation Julien Thierry
2020-01-09 16:02 ` [RFC v5 03/57] objtool: check: Use arch specific values in restore_reg() Julien Thierry
2020-01-09 16:02 ` [RFC v5 04/57] objtool: check: Ignore empty alternative groups Julien Thierry
2020-01-21 16:30 ` Josh Poimboeuf
2020-01-23 11:45 ` Julien Thierry
2020-01-09 16:02 ` [RFC v5 05/57] objtool: Add abstraction for computation of symbols offsets Julien Thierry
2020-01-09 16:02 ` [RFC v5 06/57] objtool: Give ORC functions consistent name Julien Thierry
2020-01-09 16:02 ` [RFC v5 07/57] objtool: orc: Refactor ORC API for other architectures to implement Julien Thierry
2020-01-09 16:02 ` [RFC v5 08/57] objtool: Make ORC support optional Julien Thierry
2020-01-21 16:37 ` Josh Poimboeuf
2020-01-23 11:45 ` Julien Thierry
2020-01-09 16:02 ` [RFC v5 09/57] objtool: Move registers and control flow to arch-dependent code Julien Thierry
2020-01-09 16:02 ` [RFC v5 10/57] objtool: Split generic and arch specific CFI definitions Julien Thierry
2020-01-09 16:02 ` [RFC v5 11/57] objtool: Abstract alternative special case handling Julien Thierry
2020-01-20 14:54 ` Peter Zijlstra
2020-01-23 11:45 ` Julien Thierry
2020-01-09 16:02 ` [RFC v5 12/57] objtool: check: Allow jumps from an alternative group to itself Julien Thierry
2020-01-20 14:56 ` Peter Zijlstra
2020-01-21 10:30 ` Will Deacon
2020-01-21 17:33 ` Josh Poimboeuf
2020-01-23 13:42 ` Julien Thierry
2020-01-09 16:02 ` [RFC v5 13/57] objtool: Refactor switch-tables code to support other architectures Julien Thierry
2020-01-09 16:02 ` [RFC v5 14/57] objtool: Do not look for STT_NOTYPE symbols Julien Thierry
2020-01-13 10:20 ` Julien Thierry
2020-01-09 16:02 ` [RFC v5 15/57] objtool: Support addition to set frame pointer Julien Thierry
2020-01-09 16:02 ` [RFC v5 16/57] objtool: Support restoring BP from the stack without POP Julien Thierry
2020-01-09 16:02 ` [RFC v5 17/57] objtool: Make stack validation more generic Julien Thierry
2020-01-09 16:02 ` [RFC v5 18/57] objtool: Support multiple stack_op per instruction Julien Thierry
2020-01-09 16:02 ` [RFC v5 19/57] objtool: arm64: Add required implementation for supporting the aarch64 architecture in objtool Julien Thierry
2020-01-09 16:02 ` [RFC v5 20/57] objtool: arm64: Decode unknown instructions Julien Thierry
2020-01-09 16:02 ` [RFC v5 21/57] objtool: arm64: Decode simple data processing instructions Julien Thierry
2020-01-09 16:02 ` [RFC v5 22/57] objtool: arm64: Decode add/sub immediate instructions Julien Thierry
2020-01-09 16:02 ` [RFC v5 23/57] objtool: arm64: Decode logical data processing instructions Julien Thierry
2020-01-09 16:02 ` [RFC v5 24/57] objtool: arm64: Decode system instructions not affecting the flow Julien Thierry
2020-01-09 16:02 ` [RFC v5 25/57] objtool: arm64: Decode calls to higher EL Julien Thierry
2020-01-09 16:02 ` [RFC v5 26/57] objtool: arm64: Decode brk instruction Julien Thierry
2020-01-09 16:02 ` [RFC v5 27/57] objtool: arm64: Decode instruction triggering context switch Julien Thierry
2020-01-09 16:02 ` [RFC v5 28/57] objtool: arm64: Decode branch instructions with PC relative immediates Julien Thierry
2020-01-09 16:02 ` [RFC v5 29/57] objtool: arm64: Decode branch to register instruction Julien Thierry
2020-01-09 16:02 ` [RFC v5 30/57] objtool: arm64: Decode basic load/stores Julien Thierry
2020-01-09 16:02 ` [RFC v5 31/57] objtool: arm64: Decode load/store with register offset Julien Thierry
2020-01-09 16:02 ` [RFC v5 32/57] objtool: arm64: Decode load/store register pair instructions Julien Thierry
2020-01-09 16:02 ` [RFC v5 33/57] objtool: arm64: Decode FP/SIMD load/store instructions Julien Thierry
2020-01-09 16:02 ` [RFC v5 34/57] objtool: arm64: Decode load/store exclusive Julien Thierry
2020-01-09 16:02 ` [RFC v5 35/57] objtool: arm64: Decode atomic load/store Julien Thierry
2020-01-09 16:02 ` [RFC v5 36/57] objtool: arm64: Decode pointer auth load instructions Julien Thierry
2020-01-09 16:02 ` [RFC v5 37/57] objtool: arm64: Decode load acquire/store release Julien Thierry
2020-01-09 16:02 ` [RFC v5 38/57] objtool: arm64: Decode load/store with memory tag Julien Thierry
2020-01-09 16:02 ` [RFC v5 39/57] objtool: arm64: Decode load literal Julien Thierry
2020-01-09 16:02 ` [RFC v5 40/57] objtool: arm64: Decode register data processing instructions Julien Thierry
2020-01-09 16:02 ` [RFC v5 41/57] objtool: arm64: Decode FP/SIMD " Julien Thierry
2020-01-09 16:02 ` [RFC v5 42/57] objtool: arm64: Decode SVE instructions Julien Thierry
2020-01-09 16:02 ` [RFC v5 43/57] gcc-plugins: objtool: Add plugin to detect switch table on arm64 Julien Thierry
2020-01-09 16:02 ` [RFC v5 44/57] objtool: arm64: Implement functions to add switch tables alternatives Julien Thierry
2020-01-15 16:37 ` Raphael Gault
2020-01-17 8:28 ` Julien Thierry
2020-01-09 16:02 ` [RFC v5 45/57] objtool: arm64: Enable stack validation for arm64 Julien Thierry
2020-01-09 16:02 ` [RFC v5 46/57] arm64: alternative: Mark .altinstr_replacement as containing executable instructions Julien Thierry
2020-01-09 16:02 ` [RFC v5 47/57] arm64: assembler: Add macro to annotate asm function having non standard stack-frame Julien Thierry
2020-01-21 10:30 ` Will Deacon
2020-01-23 13:45 ` Julien Thierry
2020-01-23 14:40 ` Will Deacon
2020-01-09 16:02 ` [RFC v5 48/57] arm64: sleep: Prevent stack frame warnings from objtool Julien Thierry
2020-01-09 16:02 ` [RFC v5 49/57] arm64: kvm: Annotate non-standard stack frame functions Julien Thierry
2020-01-09 16:02 ` [RFC v5 50/57] arm64: kernel: Add exception on kuser32 to prevent stack analysis Julien Thierry
2020-01-09 16:02 ` [RFC v5 51/57] arm64: crypto: Add exceptions for crypto object " Julien Thierry
2020-01-09 16:02 ` [RFC v5 52/57] arm64: kernel: Annotate non-standard stack frame functions Julien Thierry
2020-01-09 16:02 ` [RFC v5 53/57] arm64: Generate no-ops to pad executable section Julien Thierry
2020-01-09 16:02 ` [RFC v5 54/57] arm64: Move constant to rodata Julien Thierry
2020-01-09 16:02 ` [RFC v5 55/57] arm64: Mark sigreturn32.o as containing non standard code Julien Thierry
2020-01-09 16:02 ` [RFC v5 56/57] arm64: entry: Avoid empty alternatives entries Julien Thierry
2020-01-09 16:51 ` Mark Rutland
2020-01-21 10:30 ` Will Deacon
2020-01-09 16:03 ` [RFC v5 57/57] arm64: crypto: Remove redundant branch Julien Thierry
2020-01-12 8:42 ` Nathan Chancellor [this message]
2020-01-13 7:57 ` [RFC v5 00/57] objtool: Add support for arm64 Julien Thierry
2020-01-21 10:31 ` Will Deacon
2020-01-21 17:08 ` Nick Desaulniers
2020-01-21 18:06 ` Will Deacon
2020-01-21 18:30 ` Josh Poimboeuf
2020-01-22 14:47 ` Will Deacon
2020-01-13 17:18 ` Nick Desaulniers
2020-01-20 15:07 ` Peter Zijlstra
2020-01-21 17:50 ` Josh Poimboeuf
2020-01-23 13:56 ` Julien Thierry
2020-01-21 10:30 ` Will Deacon
2020-01-23 13:52 ` Julien Thierry
2020-01-23 14:35 ` Will Deacon
2020-01-23 15:11 ` Julien Thierry
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200112084258.GA44004@ubuntu-x2-xlarge-x86 \
--to=natechancellor@gmail.com \
--cc=catalin.marinas@arm.com \
--cc=clang-built-linux@googlegroups.com \
--cc=jpoimboe@redhat.com \
--cc=jthierry@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=raphael.gault@arm.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).