From: David Long <dave.long@linaro.org>
To: Masami Hiramatsu <mhiramat@kernel.org>
Cc: "Catalin Marinas" <catalin.marinas@arm.com>,
"Huang Shijie" <shijie.huang@arm.com>,
"James Morse" <james.morse@arm.com>,
"Marc Zyngier" <marc.zyngier@arm.com>,
"Pratyush Anand" <panand@redhat.com>,
"Sandeepa Prabhu" <sandeepa.s.prabhu@gmail.com>,
"Will Deacon" <will.deacon@arm.com>,
"William Cohen" <wcohen@redhat.com>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org,
"Steve Capper" <steve.capper@linaro.org>,
"Li Bin" <huawei.libin@huawei.com>,
"Adam Buchbinder" <adam.buchbinder@gmail.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Andrey Ryabinin" <ryabinin.a.a@gmail.com>,
"Ard Biesheuvel" <ard.biesheuvel@linaro.org>,
"Christoffer Dall" <christoffer.dall@linaro.org>,
"Daniel Thompson" <daniel.thompson@linaro.org>,
"Dave P Martin" <Dave.Martin@arm.com>,
"Jens Wiklander" <jens.wiklander@linaro.org>,
"Jisheng Zhang" <jszhang@marvell.com>,
"John Blackwood" <john.blackwood@ccur.com>,
"Mark Rutland" <mark.rutland@arm.com>,
"Petr Mladek" <pmladek@suse.com>,
"Robin Murphy" <robin.murphy@arm.com>,
"Suzuki K Poulose" <suzuki.poulose@arm.com>,
"Vladimir Murzin" <Vladimir.Murzin@arm.com>,
"Yang Shi" <yang.shi@linaro.org>,
"Zi Shen Lim" <zlim.lnx@gmail.com>,
"yalin wang" <yalin.wang2010@gmail.com>,
"Mark Brown" <broonie@kernel.org>
Subject: Re: [PATCH v13 03/10] arm64: add conditional instruction simulation support
Date: Mon, 13 Jun 2016 00:19:52 -0400 [thread overview]
Message-ID: <575E3468.2000304@linaro.org> (raw)
In-Reply-To: <20160604125318.0f5c6fe348fec92502bef3b9@kernel.org>
On 06/03/2016 11:53 PM, Masami Hiramatsu wrote:
> On Thu, 2 Jun 2016 23:26:17 -0400
> David Long <dave.long@linaro.org> wrote:
>
>> From: "David A. Long" <dave.long@linaro.org>
>>
>> Cease using the arm32 arm_check_condition() function and replace it with
>> a local version for use in deprecated instruction support on arm64. Also
>> make the function table used by this available for future use by kprobes
>> and/or uprobes.
>>
>> This function is dervied from code written by Sandeepa Prabhu.
>>
>
> Basically looks good to me. I have some comments;
>
>> Signed-off-by: Sandeepa Prabhu <sandeepa.s.prabhu@gmail.com>
>> Signed-off-by: David A. Long <dave.long@linaro.org>
>> ---
>> arch/arm64/include/asm/insn.h | 3 ++
>> arch/arm64/kernel/Makefile | 3 +-
>> arch/arm64/kernel/armv8_deprecated.c | 19 ++++++-
>> arch/arm64/kernel/insn.c | 98 ++++++++++++++++++++++++++++++++++++
>> 4 files changed, 119 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/arm64/include/asm/insn.h b/arch/arm64/include/asm/insn.h
>> index 9785d10..98e4edd 100644
>> --- a/arch/arm64/include/asm/insn.h
>> +++ b/arch/arm64/include/asm/insn.h
>> @@ -406,6 +406,9 @@ u32 aarch64_extract_system_register(u32 insn);
>> u32 aarch32_insn_extract_reg_num(u32 insn, int offset);
>> u32 aarch32_insn_mcr_extract_opc2(u32 insn);
>> u32 aarch32_insn_mcr_extract_crm(u32 insn);
>> +
>> +typedef bool (pstate_check_t)(unsigned long);
>> +extern pstate_check_t * const opcode_condition_checks[16];
>
> Are those condition checkers only for aarch32 opcode? or
> general for aarch64 too? If it is only for aarch32, we'd better
> add aarch32 prefix.
>
I have this vague recollection there once was a reason for this but I
can't for the life of me remember why. I altered the symbol name to
something that begins with aarch32.
>> #endif /* __ASSEMBLY__ */
>>
>> #endif /* __ASM_INSN_H */
>> diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
>> index 2173149..4653aca 100644
>> --- a/arch/arm64/kernel/Makefile
>> +++ b/arch/arm64/kernel/Makefile
>> @@ -26,8 +26,7 @@ $(obj)/%.stub.o: $(obj)/%.o FORCE
>> $(call if_changed,objcopy)
>>
>> arm64-obj-$(CONFIG_COMPAT) += sys32.o kuser32.o signal32.o \
>> - sys_compat.o entry32.o \
>> - ../../arm/kernel/opcodes.o
>> + sys_compat.o entry32.o
>> arm64-obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o
>> arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o
>> arm64-obj-$(CONFIG_ARM64_MODULE_PLTS) += module-plts.o
>> diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c
>> index c37202c..88b9165 100644
>> --- a/arch/arm64/kernel/armv8_deprecated.c
>> +++ b/arch/arm64/kernel/armv8_deprecated.c
>> @@ -366,6 +366,21 @@ static int emulate_swpX(unsigned int address, unsigned int *data,
>> return res;
>> }
>>
>> +#define ARM_OPCODE_CONDITION_UNCOND 0xf
>> +
>> +static unsigned int __kprobes arm32_check_condition(u32 opcode, u32 psr)
>
> Would you be OK for using arm32 instead of aarch32 prefix?
I think you meant the opposite of that? I guess that would make sense,
and would be simple enough since it's an internal function. I will
change arm32 to aarch32.
>
>> +{
>> + u32 cc_bits = opcode >> 28;
>> +
>> + if (cc_bits != ARM_OPCODE_CONDITION_UNCOND) {
>> + if ((*opcode_condition_checks[cc_bits])(psr))
>> + return ARM_OPCODE_CONDTEST_PASS;
>> + else
>> + return ARM_OPCODE_CONDTEST_FAIL;
>> + }
>> + return ARM_OPCODE_CONDTEST_UNCOND;
>> +}
>
> Thank you,
>
Thanks,
-dl
next prev parent reply other threads:[~2016-06-13 4:19 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-03 3:26 [PATCH v13 00/10] arm64: Add kernel probes (kprobes) support David Long
2016-06-03 3:26 ` [PATCH v13 01/10] arm64: Add HAVE_REGS_AND_STACK_ACCESS_API feature David Long
2016-06-03 11:36 ` Masami Hiramatsu
2016-06-20 2:43 ` Li Bin
2016-06-23 13:48 ` David Long
2016-06-03 3:26 ` [PATCH v13 02/10] arm64: Add more test functions to insn.c David Long
2016-06-08 1:14 ` Masami Hiramatsu
2016-06-10 14:54 ` David Long
2016-06-03 3:26 ` [PATCH v13 03/10] arm64: add conditional instruction simulation support David Long
2016-06-04 3:53 ` Masami Hiramatsu
2016-06-13 4:19 ` David Long [this message]
2016-06-03 3:26 ` [PATCH v13 04/10] arm64: Blacklist non-kprobe-able symbol David Long
2016-06-04 3:40 ` Masami Hiramatsu
2016-06-07 3:52 ` David Long
2016-06-10 19:16 ` David Long
2016-06-03 3:26 ` [PATCH v13 05/10] arm64: Kprobes with single stepping support David Long
2016-06-08 1:07 ` Masami Hiramatsu
2016-06-13 4:10 ` David Long
2016-06-13 6:50 ` Masami Hiramatsu
2016-06-13 15:22 ` David Long
2016-06-14 0:45 ` Masami Hiramatsu
2016-06-22 18:28 ` David Long
2016-06-14 1:42 ` Masami Hiramatsu
2016-06-03 3:26 ` [PATCH v13 06/10] arm64: Treat all entry code as non-kprobe-able David Long
2016-06-07 0:34 ` Masami Hiramatsu
2016-06-03 3:26 ` [PATCH v13 07/10] arm64: kprobes instruction simulation support David Long
2016-06-03 3:26 ` [PATCH v13 08/10] arm64: Add trampoline code for kretprobes David Long
2016-06-07 10:38 ` Masami Hiramatsu
2016-06-13 4:23 ` David Long
2016-06-03 3:26 ` [PATCH v13 09/10] arm64: Add kernel return probes support (kretprobes) David Long
2016-06-07 10:28 ` Masami Hiramatsu
2016-06-22 18:16 ` David Long
2016-06-03 3:26 ` [PATCH v13 10/10] kprobes: Add arm64 case in kprobe example module David Long
2016-06-07 10:12 ` Masami Hiramatsu
2016-06-08 5:49 ` Huang Shijie
2016-06-27 2:54 ` David Long
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=575E3468.2000304@linaro.org \
--to=dave.long@linaro.org \
--cc=Dave.Martin@arm.com \
--cc=Vladimir.Murzin@arm.com \
--cc=adam.buchbinder@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=alex.bennee@linaro.org \
--cc=ard.biesheuvel@linaro.org \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=christoffer.dall@linaro.org \
--cc=daniel.thompson@linaro.org \
--cc=huawei.libin@huawei.com \
--cc=james.morse@arm.com \
--cc=jens.wiklander@linaro.org \
--cc=john.blackwood@ccur.com \
--cc=jszhang@marvell.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marc.zyngier@arm.com \
--cc=mark.rutland@arm.com \
--cc=mhiramat@kernel.org \
--cc=panand@redhat.com \
--cc=pmladek@suse.com \
--cc=robin.murphy@arm.com \
--cc=ryabinin.a.a@gmail.com \
--cc=sandeepa.s.prabhu@gmail.com \
--cc=shijie.huang@arm.com \
--cc=steve.capper@linaro.org \
--cc=suzuki.poulose@arm.com \
--cc=wcohen@redhat.com \
--cc=will.deacon@arm.com \
--cc=yalin.wang2010@gmail.com \
--cc=yang.shi@linaro.org \
--cc=zlim.lnx@gmail.com \
/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).