From: "Suzuki K. Poulose" <suzuki.poulose@arm.com>
To: linux-arm-kernel@lists.infradead.org
Cc: leo.yan@linaro.org, yexl@marvell.com, Will.Deacon@arm.com,
Catalin.Marinas@arm.com, Mark.Rutland@arm.com,
linux-kernel@vger.kernel.org,
"Suzuki K. Poulose" <suzuki.poulose@arm.com>
Subject: [PATCHv3 0/3] Handle SETEND for AArch32 tasks
Date: Wed, 21 Jan 2015 12:43:08 +0000 [thread overview]
Message-ID: <1421844191-9263-1-git-send-email-suzuki.poulose@arm.com> (raw)
From: "Suzuki K. Poulose" <suzuki.poulose@arm.com>
This series add support for controlling the 'setend' instruction,
which is deprecated in ARMv8, using the legacy instruction emulation
framework, introduced by Punit Agrawal.
Changes since V2:
- Move ID_AA64MMFR0_EL1 bit definitions to asm/cputype.h
- Use mask/value pair for the features in ID_AA64MMFR0_EL1
- Better documentation about the hardware support limitaion under
Documentation and the Kconfig help
- Restore the original 'set_hw_mode' API, with wrappers to invoke
the set_hw_mode for on_each_cpu() variants.
- Print a warning when we detect an incompatibility for a registered
insn_emulation hook on a hotplugged CPU.
Changes since V1:
- Added a patch to keep track of the mixed endian support and register
the setend emulation only if all the active CPUs supports mixed endian.
- Fail hotplug operation if the CPU doesn't support a feature
required by insn_emulation.
- Signal handler runs in native endian
Testing :
$ cat setend_sig.c
#include <stdio.h>
#include <signal.h>
#define setend_be(a) asm __volatile__ ( "setend be" ::: "memory" )
#define setend_le(a) asm __volatile__ ( "setend le" ::: "memory" )
volatile int flag = 1;
void sigint(int sig)
{
printf("in sighandler %d\n", sig);
flag = 0;
return;
}
main()
{
volatile int a = 0x0;
(void)signal(SIGINT, sigint);
printf("Press Ctrl+C to continue\n");
setend_be();
a ++;
while (flag);
setend_le();
a ++;
printf("a: 0x%x\n", a);
return 0;
}
$ cat /proc/sys/abi/setend
1
$ echo 1 > /sys/kernel/debug/tracing/events/emulation/instruction_emulation/enable
$ echo 1 > /sys/kernel/debug/tracing/tracing_on
$ ./setend_sig_a32
Press Ctrl+C to continue
^Cin sighandler 2
a: 0x1000001
$ cat /sys/kernel/debug/tracing/trace
# tracer: nop
#
# entries-in-buffer/entries-written: 2/2 #P:2
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
setend_sig_a32-1373 [000] ...1 491.554499: instruction_emulation: instr="setend be" addr=0x8460
setend_sig_a32-1373 [000] ...1 492.833056: instruction_emulation: instr="setend le" addr=0x8488
$ dmesg | tail
[ 491.554807] "setend_sig_a32" (1373) uses deprecated setend instruction at 0x8460
[ 492.833285] "setend_sig_a32" (1373) uses deprecated setend instruction at 0x8488
$ echo 2 > /proc/sys/abi/setend
$ ./setend_sig_t16
Press Ctrl+C to continue
^Cin sighandler 2
a: 0x1000001
$ dmesg | tail
[ 491.554807] "setend_sig_a32" (1373) uses deprecated setend instruction at 0x8460
[ 492.833285] "setend_sig_a32" (1373) uses deprecated setend instruction at 0x8488
[ 537.426216] Removed setend emulation handler
[ 537.426624] Enabled setend support
Suzuki K. Poulose (3):
arm64: Track system support for mixed endian EL0
arm64: Consolidate hotplug notifier for instruction emulation
arm64: Emulate SETEND for AArch32 tasks
Documentation/arm64/legacy_instructions.txt | 12 ++
arch/arm64/Kconfig | 15 ++
arch/arm64/include/asm/cpufeature.h | 2 +
arch/arm64/include/asm/cputype.h | 17 +++
arch/arm64/include/asm/ptrace.h | 7 +
arch/arm64/kernel/armv8_deprecated.c | 205 ++++++++++++++++++++-------
arch/arm64/kernel/cpuinfo.c | 22 +++
arch/arm64/kernel/signal32.c | 5 +-
8 files changed, 236 insertions(+), 49 deletions(-)
--
1.7.9.5
next reply other threads:[~2015-01-21 12:43 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-21 12:43 Suzuki K. Poulose [this message]
2015-01-21 12:43 ` [PATCH 1/3] arm64: Track system support for mixed endian EL0 Suzuki K. Poulose
2015-01-21 12:43 ` [PATCH 2/3] arm64: Consolidate hotplug notifier for instruction emulation Suzuki K. Poulose
2015-01-21 12:43 ` [PATCH 3/3] arm64: Emulate SETEND for AArch32 tasks Suzuki K. Poulose
2015-01-23 12:31 ` [PATCH 2/3] arm64: Consolidate hotplug notifier for instruction emulation Punit Agrawal
2015-01-23 17:16 ` [PATCHv3 0/3] Handle SETEND for AArch32 tasks Catalin Marinas
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=1421844191-9263-1-git-send-email-suzuki.poulose@arm.com \
--to=suzuki.poulose@arm.com \
--cc=Catalin.Marinas@arm.com \
--cc=Mark.Rutland@arm.com \
--cc=Will.Deacon@arm.com \
--cc=leo.yan@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=yexl@marvell.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
all inboxes | Powered by JetHome®