Thread (111 messages) 111 messages, 5 authors, 2018-02-06

Re: [PATCH v6 07/36] nds32: Exception handling

From: Greentime Hu <hidden>
Date: 2018-01-30 14:49:32
Also in: linux-arch, linux-devicetree, linux-serial, lkml

Hi, Arnd:

2018-01-30 21:33 GMT+08:00 Arnd Bergmann [off-list ref]:
On Tue, Jan 30, 2018 at 11:01 AM, Vincent Chen [off-list ref] wrote:
quoted
2018-01-24 19:10 GMT+08:00 Arnd Bergmann [off-list ref]:
quoted
On Wed, Jan 24, 2018 at 12:09 PM, Arnd Bergmann [off-list ref] wrote:
quoted
On Wed, Jan 24, 2018 at 11:53 AM, Vincent Chen [off-list ref] wrote:
quoted
2018-01-18 18:14 GMT+08:00 Arnd Bergmann [off-list ref]:
quoted
Ok. I still wonder about the kernel part of this though: is it a good idea
for user space to configure whether the kernel does unaligned
accesses? I would think that the kernel should just be fixed in such
a case.
To clarify: I'm asking only about unaligned accesses from kernel code itself,
which is generally considered a bug when
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is disabled.

      Arnd
Thanks for your comments.

For performance, we decide always disable
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS even if hardware supports
unaligned accessing. Therefore, I will remove kernel unaligned accessing from
nds32/mm/alignment.c. In other words, alignment.c only addresses unaligned
accessing for user space.
I'm not really following that logic, let's go through that again so I understand
the situation better.

CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS should be set if and
only if you have a CPU that does not need to trap on unaligned accesses.

What are the hardware capabilities on nds32? Do you have all three
categories:

a) some CPUs that always trap on unaligned access
b) some CPUs that never trap on unaligned access
c) some CPUs that can be configured to either trap or not trap by
    the kernel?
We have type a and c.
We use CONFIG_ALIGNMENT_TRAP for a and
CONFIG_HW_SUPPORT_UNALIGNMENT_ACCESS for c.

Since unaligned access in kernel code itself should be considered as a
bug, we will remove the emulation code to handle the kernel code
unaligned accessed case.
We think CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS and
CONFIG_HW_SUPPORT_UNALIGNMENT_ACCESS have different purposes because
it will still be more efficient to access by byte even if hardware
support unaligned access.
CONFIG_HW_SUPPORT_UNALIGNMENT_ACCESS is used to prevent generating
unaligned access exception.

Thus, we will
1. treat unaligned access in kernel code itself as a bug
2. don't select CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
3. disable CONFIG_HW_SUPPORT_UNALIGNMENT_ACCESS as default
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help