On Mon, Nov 09, 2015 at 11:37:35AM -0500, Mike Snitzer wrote:
> I'm left wondering: can the new error correction code be made an
> optional feature that is off by default? -- so as to preserve some
> isolation of this new code from the old dm-verity behaviour.
It's optional in the sense that you
blocks need to corrected.
For a 2 GiB partition, RS(255, 253) (two parity bytes for each
253-byte block) can correct up to 16 MiB of consecutive corrupted
blocks if erasures can be located, and 8 MiB if they cannot, with
16 MiB space overhead.
Signed-off-by: Sami Tolvanen <samitolva...@google.
Handle dm-verity salting in one place to simplify the code.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
drivers/md/dm-verity.c | 262 +++--
1 file changed, 147 insertions(+), 115 deletions(-)
diff --git a/drivers/md/dm-veri
Add ignore_zero_blocks option, which returns zeros for blocks matching a
zero hash without validating the content.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
Documentation/device-mapper/verity.txt | 5 ++
drivers/md/dm-verity.c
.
Sami Tolvanen (4):
dm verity: clean up duplicate hashing code
dm verity: separate function for parsing opt args
dm verity: add support for forward error correction
dm verity: ignore zero blocks
Documentation/device-mapper/verity.txt | 34 ++
drivers/md/dm-verity.c
Move optional argument parsing into a separate function to make it
easier to add more of them without making verity_ctr even longer.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
drivers/md/dm-verity.c | 31 ++-
1 file changed, 22 insertions
On Thu, Nov 05, 2015 at 08:34:04AM +0100, Milan Broz wrote:
> could you please elaborate why is all this needed? To extend support
> of some faulty flash chips?
This makes dm-verity more robust against corruption caused by either
hardware or software bugs, both of which we have seen in the past
On Fri, Nov 06, 2015 at 12:23:29PM -0500, Mikulas Patocka wrote:
> I'm also wondering what is this patch useful for. Disks and flash
> controllers have their own error detection and correction
I think I addressed this earlier. Some storage devices are able to
correct bit flips, but don't have
On Fri, Nov 06, 2015 at 08:20:15PM +0100, Zdenek Kabelac wrote:
> i.e. you have 1G of space - you want to give 250MB as 'redundancy' -
> so create 4 partition
We cannot afford to set aside 25% of read-only partition space for
redundancy on mobile devices, and would rather not impact
On Fri, Nov 06, 2015 at 10:05:24PM +0100, Zdenek Kabelac wrote:
> So how do you want to correctly 'restore' missing full sectors
> with just 0.8% data overhead ??
We use interleaving. Each byte in a 4k block is part of a different
Reed-Solomon block, which means an entire lost 4k data block
On Fri, Dec 04, 2015 at 04:09:35PM -0500, Mike Snitzer wrote:
> I'd really appreciate it if you could do some regression testing,
> etc on your end to verify I didn't break anything while tweaking
> things.
Sure. The changes look fine. I applied them to my tree and everything
still works as
On Mon, Dec 07, 2015 at 02:07:43PM -0500, Mike Snitzer wrote:
> I'm not seeing any verification of the metadata in fec_read_parity() --
> so it would seem that corrupt RS blocks would result in -EBADMSG being
> returned from decode_rs8() (by virtue of incorrect parity being passed
> to
On Mon, Dec 07, 2015 at 09:58:14AM -0500, Mike Snitzer wrote:
> Great. Moving forward it'd be awesome if you could work to get your
> verity FEC support regression tests into cryptsetup's tests.
Sure. These tests would basically involve generating a valid disk
image, corrupting it up to the
On Wed, Dec 02, 2015 at 03:22:03PM -0500, Mike Snitzer wrote:
> Any progress on v2 that takes into account previous review feedback?
Yes. Sorry for the delay, the changes have gone through a couple of rounds
of internal reviews and testing first.
> Note I've staged the first 2 patches in this
On Thu, Nov 12, 2015 at 11:30:00AM +0100, Milan Broz wrote:
> Yes, please, patches do not to be production ready (I can integrate
> it to veritysetup upstream myself)
I'm working on this and should have a patch for veritysetup for you next
week.
Sami
--
To unsubscribe from this list: send the
On Thu, Nov 12, 2015 at 01:50:04PM -0500, Mikulas Patocka wrote:
> What flash controller and chips do you use?
Considering the number of different devices running Android, I don't
have a good answer for this. I'm guessing most of them.
> Is the silent data corruption permanent or transient?
On Thu, Dec 03, 2015 at 06:05:38PM -0500, Mike Snitzer wrote:
> If you're OK with those changes I'll fold that commit into your main FEC
> commit.
Yes, these changes look fine. Thanks!
Sami
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
GFP_NOIO) and uses them if available.
- Added graceful handling of IO errors, which are now treated as any
other corruption.
- Rebased against linux-dm/for-next.
Sami Tolvanen (2):
dm verity: add support for forward error correction
dm verity: ignore zero blocks
Documentation/device
blocks need to corrected.
For a 2 GiB partition, RS(255, 253) (two parity bytes for each
253-byte block) can correct up to 16 MiB of consecutive corrupted
blocks if erasures can be located, and 8 MiB if they cannot, with
16 MiB space overhead.
Signed-off-by: Sami Tolvanen <samitolva...@google.
Add ignore_zero_blocks option, which returns zeros for blocks matching a
zero hash without validating the content.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
Documentation/device-mapper/verity.txt | 5 ++
drivers/md/dm-verity-fec.c | 8 +++-
drivers/md/dm-
On Mon, Apr 24, 2017 at 10:05:03AM +0200, Milan Broz wrote:
> Isn't one of the goal of integrity checking to PREVENT that userspace
> accesses tampered data?
Absolutely. It's not acceptable for dm-verity to return unverified data
to userspace in restart mode.
Sami
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
scripts/Kbuild.include | 4 ++--
scripts/cc-version.sh | 45 +
scripts/gcc-version.sh | 33 -
3 files changed, 47 insertions(+), 35 deletions(-)
creat
GNU gold supports different emulations than bfd. Use aarch64_elf64_*_vec
instead of aarch64linux.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Makefile | 8
1 file changed, 8 insertions(+)
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
Cc: Matthias Kaehlcke <m...@chromium.org>
[added cc-ifversion to enable the workaround only for clang <6.0]
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Makefile | 8 +++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/Makefile
Make sure the linker doesn't remove .altinstructions or
.altinstr_replacement when CONFIG_LD_DEAD_CODE_DATA_ELIMINATION is
enabled.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/kernel/vmlinux.lds.S | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff
y Norov <yno...@caviumnetworks.com>
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/include/asm/kvm_hyp.h | 8 --
arch/arm64/include/asm/sysreg.h | 55 +++-
2 files changed, 43 insertions(+), 20 deletions(-)
diff --git
RANDOMIZE_MODULE_REGION_FULL results in "overflow in relocation type 275"
when loading a module linked with GNU gold. As a workaround, disable when
LTO_CLANG is selected.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Kconfig | 2 +-
1 file changed, 1
the erratum fix is not
used even if the linker is configured to enable it by default.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Makefile | 5 +
1 file changed, 5 insertions(+)
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index 6059c8169513..ca700b201736
CONFIG_LTO_CLANG depends on GNU gold, which can generate ADR_PREL_PG_HI21*
relocations even with --fix-cortex-a53-843419.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/kernel/module.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/arch/arm64/kernel/module.c
is in LD_LIBRARY_PATH and CONFIG_LTO_CLANG has
been selected, an LTO kernel can be built simply by running make
CC=clang. Recommended versions are >= 5.0 for clang, and >= 2.27 for
binutils.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
.gitignore | 2
Allow CONFIG_LTO_CLANG to be enabled for the architecture.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 3a70f763e18a..58504327b9f6 100644
--- a/arch/arm64/K
.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/kernel/module.lds | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/kernel/module.lds b/arch/arm64/kernel/module.lds
index f7c9781a9d48..eacb5c67f61e 100644
--- a/arch/arm64/kernel/modu
On Wed, Nov 15, 2017 at 01:48:52PM -0800, Kees Cook wrote:
> It might make sense to split this patch: do the move and refactoring,
> then add clang support.
Sure.
> Though, won't this confuse some tests? A lot of cc-version tests are
> expecting only gcc, yes?
There's already a chance of this
, and
a __norecordmcount attribute for moving functions to this section.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/Kconfig | 2 +-
include/asm-generic/vmlinux.lds.h | 1 +
include/linux/compiler-clang.h| 7 +++
include/linux/compiler_t
With CONFIG_LTO_CLANG, clang generates LLVM IR instead of ELF object
files. As empty.o is used for probing target properties, disable LTO
for it to produce an object file instead.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
scripts/mod/Makefile | 1 +
1 file changed, 1 ins
GNU gold may require different flags than GNU ld. Add a macro for
detecting the linker and conditionally add gold specific flags from
LDFLAGS_GOLD.
Reviewed-by: Nick Desaulniers <ndesaulni...@google.com>
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
Makefile
lex Matveev (1):
arm64: make mrs_s and msr_s macros work with LTO
Greg Hackmann (1):
arm64: use -mno-implicit-float instead of -mgeneral-regs-only
Sami Tolvanen (16):
kbuild: add ld-name macro and support for GNU gold
kbuild: fix LD_DEAD_CODE_DATA_ELIMINATION with GNU gold
kbuild: move
Don't remove .head.text or .exitcall.exit when linking with --gc-sections,
and include .init.text.* in .init.text and .init.rodata.* in .init.rodata.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
include/asm-generic/vmlinux.lds.h | 8
1 file changed, 4 insertions
With CONFIG_LTO_CLANG, we produce LLVM IR instead of object files. Since LTO
is not really needed here and the Makefile assumes we produce an object file,
disable LTO for libstub.
Acked-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
Signed-off-by: Sami Tolvanen <samitolva...@g
Use -fno-jump-tables to make sure clang doesn't generate branches
to EL1 virtual addresses.
Suggested-by: AKASHI Takahiro <takahiro.aka...@linaro.org>
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/kvm/hyp/Makefile | 4
1 file changed, 4 insertions(+)
CONFIG_LTO_CLANG requires the use of clang's integrated assembler, which
doesn't understand the inline assembly in aes-ce-cipher.c. Disable LTO for
the file to work around the issue.
Acked-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
Signed-off-by: Sami Tolvanen <samitolva...@g
On Wed, Nov 29, 2017 at 12:15:14PM +, Ard Biesheuvel wrote:
> Do we still need these patches now that the AES code has been fixed?
With your AES patch that Herbert just applied, this patch is no longer
needed. Version macros in the first two patches will still be useful in
future though.
On Thu, Nov 30, 2017 at 09:21:49PM +0900, Masahiro Yamada wrote:
> BTW, did this patch work in your test?
Yes, but it looks like /bin/sh is symlinked to bash on my system. I can
reproduce the issue with dash.
> As for the macro names, maybe
>
> __cc-ifversion, __cc-if-fullversion for
On Wed, Nov 29, 2017 at 04:32:52PM -0800, Nick Desaulniers wrote:
> Right, but you're still only ever using one linker per build, correct?
Correct. LDFLAGS_GOLD makes it move convenient to add gold specific flags
without explicit $(ld-name) checks everywhere, but I'm fine with removing
it in v2.
On Wed, Nov 29, 2017 at 04:30:33PM -0800, Nick Desaulniers wrote:
> Rather than:
>
> if CONFIG_ARM64_ERRATUM_843419 == y:
> ...
> if CONFIG_ARM64_ERRATUM_843419 == '':
> ...
>
> could this be:
>
> if CONFIG_ARM64_ERRATUM_843419 == y:
> ...
> else
> ...
>
> ?
Sure. I'll clean this up
On Thu, Nov 30, 2017 at 11:58:27AM +1000, Nicholas Piggin wrote:
> So yes please if it's not too much trouble, could you remove
> the "gold" name from the generic patch and put it at the front
> of the series with this arm64 patch.
Sure, I'll do this in v2.
> Possibly then you could also do a
GNU gold supports different emulations than bfd. Use aarch64_elf64_*_vec
instead of aarch64linux.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
Acked-by: Yury Norov <yno...@caviumnetworks.com>
---
arch/arm64/Makefile | 8
1 file changed, 8 insertions(+)
diff --git
GNU gold may require different flags than GNU ld. Add a macro for
detecting the linker and conditionally add gold specific flags from
LDFLAGS_GOLD.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
Reviewed-by: Nick Desaulniers <ndesaulni...@google.com>
---
Makefile
Make sure the linker doesn't remove .altinstructions or
.altinstr_replacement when CONFIG_LD_DEAD_CODE_DATA_ELIMINATION is
enabled.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/kernel/vmlinux.lds.S | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff
Don't remove .head.text or .exitcall.exit when linking with --gc-sections,
and include .init.text.* in .init.text and .init.rodata.* in .init.rodata.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
include/asm-generic/vmlinux.lds.h | 8
1 file changed, 4 insertions
All current versions of GNU gold crash when linking kernel modules
with ARM64_MODULE_PLTS due to a known bug:
https://sourceware.org/bugzilla/show_bug.cgi?id=14592
To work around the problem, this change removes NOLOAD from .plt
and .init.plt.
Signed-off-by: Sami Tolvanen <samito
-if-name-version to __ld-ifversion for consistency
- cleaned up the erratum changes in arch/arm64/Makefile
Sami Tolvanen (7):
kbuild: fix LD_DEAD_CODE_DATA_ELIMINATION
arm64: keep .altinstructions and .altinstr_replacement
kbuild: add ld-name macro
kbuild: add __ld-ifversion and linker
GNU gold supports different emulations than bfd. Use aarch64_elf64_*_vec
instead of aarch64linux.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
Acked-by: Yury Norov <yno...@caviumnetworks.com>
---
arch/arm64/Makefile | 8
1 file changed, 8 insertions(+)
diff --git
Make sure the linker doesn't remove .altinstructions or
.altinstr_replacement when CONFIG_LD_DEAD_CODE_DATA_ELIMINATION is
enabled.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/kernel/vmlinux.lds.S | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff
the erratum
fix is not used even if the linker is configured to enable it by
default.
This change also adds a warning if the erratum fix is enabled and
gold version <1.14 is used.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Makefile | 9 +
1 file changed, 9 i
Based on gcc-version.sh, clang-version.sh prints out the correct
version of clang.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
Tested-by: Nick Desaulniers <ndesaulni...@google.com>
---
scripts/clang-version.sh | 33 +
1 file changed, 3
GNU gold may require different flags than GNU ld. Add a macro for
detecting the linker.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
Reviewed-by: Nick Desaulniers <ndesaulni...@google.com>
---
scripts/Kbuild.include | 4
1 file changed, 4 insertions(+)
diff --g
Don't remove .head.text or .exitcall.exit when linking with --gc-sections,
and include .init.text.* in .init.text and .init.rodata.* in .init.rodata.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
Reviewed-by: Nicholas Piggin <npig...@gmail.com>
---
include/asm-generic/vmlin
This patch set adds macros for checking clang version.
Changes from v1:
- fixed a comment in clang-version.sh
- renamed macros to __cc-ifversion and __cc-if-fullversion
- fixed a bug with non-bash shells
- dropped the arm64 patch as unnecessary
Sami Tolvanen (2):
kbuild: add clang
Add macros for testing both linker name and version.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
scripts/Kbuild.include | 12
1 file changed, 12 insertions(+)
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index 899863e4cd05..2991b463b4ce
This change adds macros for testing both compiler name and
version. Current cc-version, cc-ifversion etc. macros that test
gcc version are left unchanged to prevent compatibility issues
with existing tests.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
scripts/Kbuild.includ
Hi Andi,
On Mon, Nov 27, 2017 at 01:34:02PM -0800, Andi Kleen wrote:
> This is an updated version of my older LTO patchkit for gcc/x86
> This version doesn't need special binutils, but requires gcc 5+.
> It also is compatible with near all options (except MODVERSIONS)
Would you mind changing the
On Tue, Nov 21, 2017 at 11:01:52AM +1000, Nicholas Piggin wrote:
> I just wonder are you doing this because there is some worthwhile
> performance gain? Or to enable more testing and development of LTO?
> Any clues for why a user would want to enable it.
I'm primarily interested in CFI, which
Add macros for testing both linker name and version.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
scripts/Kbuild.include | 12
1 file changed, 12 insertions(+)
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index a7c7843c2cf1..5d286d69e8dc
All current versions of GNU gold crash when linking kernel modules
with ARM64_MODULE_PLTS due to a known bug:
https://sourceware.org/bugzilla/show_bug.cgi?id=14592
To work around the problem, this change removes NOLOAD from .plt
and .init.plt.
Signed-off-by: Sami Tolvanen <samito
These patches add macros for detecting the linker name and version,
and apply fixes and workarounds needed to link the arm64 kernel with
GNU gold.
Sami Tolvanen (7):
kbuild: add ld-name macro and support for GNU gold
kbuild: add ld-if-name-version and linker-specific macros
kbuild: fix
the erratum
fix is not used even if the linker is configured to enable it by
default.
This change also adds a warning if the erratum fix is enabled and
gold version <1.14 is used.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Makefile | 9 +
1 file changed, 9 i
Based on gcc-version.sh, clang-version.sh prints out the correct
version of clang.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
scripts/clang-version.sh | 33 +
1 file changed, 33 insertions(+)
create mode 100755 scripts/clang-version.sh
diff
This change adds macros for testing both compiler name and
version. Current cc-version, cc-ifversion etc. macros that test
gcc version are left unchanged to prevent compatibility issues
with existing tests.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
scripts/Kbuild.includ
m64: use -mno-implicit-float instead of -mgeneral-regs-only
Sami Tolvanen (2):
kbuild: add clang-version.sh
kbuild: add cc-if-name-version and compiler-specific variants
arch/arm64/Makefile | 5 -
scripts/Kbuild.include | 31 +++
scripts/clang-version
Cc: Matthias Kaehlcke <m...@chromium.org>
[added clang-ifversion to enable the workaround only for clang <6.0]
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Makefile | 5 -
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/Makefile
On Thu, Nov 16, 2017 at 11:47:23AM +, Will Deacon wrote:
> But if ARM64_ERRATUM_843419 is enabled, we'll go ahead and generate
> broken code?
This bug has been fixed in all current versions of GNU gold, but of
course, if someone is using a broken linker, it will generate broken
code. We can't
On Thu, Nov 16, 2017 at 11:58:11AM +, Will Deacon wrote:
> I'll be honest with you: I'm absolutely terrified about enabling this.
That's understandable, I wouldn't want to enable this by default
quite yet either. This patch doesn't enable LTO for arm64, just makes
it possible to enable the
On Thu, Nov 16, 2017 at 11:50:12AM +, Will Deacon wrote:
> Why don't we just not do LTO if the toolchain is busted?
Because LTO can not only potentially improve performance, especially
when combined with PGO (Profile Guided Optimization), but it also
makes it possible to enable features like
On Thu, Nov 16, 2017 at 11:46:17AM +, Will Deacon wrote:
> Can you elaborate a bit more on exactly what you saw failing here,
> please?
Mark noticed that clang built kernels fail to boot when the kernel
starts at EL2:
http://lkml.iu.edu/hypermail/linux/kernel/1711.0/02817.html
Turns out
On Thu, Nov 16, 2017 at 11:54:33AM +, Will Deacon wrote:
> What limitations? Can you elaborate please? Is this a fix?
The commit message in v1 was more informative, I'll change this back for v3:
--
Clang's integrated assembler does not allow assembly macros defined
in one inline asm block
On Thu, Nov 16, 2017 at 11:01:44AM -0600, Segher Boessenkool wrote:
> The thing with .purgem can work. Inelegant, sure, but it can work :-)
It works, there are already functions in the kernel that use these
macros more than once. I agree that this might not be the most elegant
solution, but at
On Thu, Nov 16, 2017 at 11:44:06AM +, Will Deacon wrote:
> Right, and this would also mean that we silently load vulnerable
> modules that are linked with either LD that doesn't support
> --fix-cortex-a53-843419 or simply wasn't passed.
You'll see a warning at least if the linker doesn't
On Thu, Nov 16, 2017 at 07:56:50AM -0600, Segher Boessenkool wrote:
> The compiler is fine, the assembler is fine (and the linker has
> nothing to do with it). Your code is not fine.
Would you care to elaborate? The current code assumes that macros are
visible in other inline assembly blocks,
On Fri, Nov 17, 2017 at 09:54:48AM +, Ard Biesheuvel wrote:
> OK, so all IR objects are converted into a single .o file
> encapsulating the module image. Does this give the same benefits as
> LTO linking IR objects to a fully linked executable?
Yes, it does.
> Even if it does, partial
On Mon, Nov 20, 2017 at 02:47:20PM +, Mark Rutland wrote:
> However, we could instead check ld-version, produce a warning, and
> abort the build in such cases.
I believe the version number of gold didn't change in binutils 2.28.1,
where this was fixed, but we could certainly warn about older
On Mon, Nov 20, 2017 at 03:25:31PM +, Ard Biesheuvel wrote:
> However, under LTO this all changes, and it is no longer guaranteed
> that the NEON registers are only touched between the kernel mode
> neon begin/end calls.
LTO operates on LLVM IR, so disabling LTO for this file should make
sure
On Sat, Nov 18, 2017 at 01:21:39PM +1000, Nicholas Piggin wrote:
> Do you have any kind of numbers for this, out of curiosity? Binary
> size, performance, build time?
I don't have performance numbers to share. Are there any specific
benchmarks you'd be interested in seeing? Build time typically
On Mon, Nov 20, 2017 at 03:20:14PM +, Mark Rutland wrote:
> Could you elaborate on what the integrated asembler doesn't like?
Here's the error, looks like in aes_sub:
:1:69: error: invalid operand for instruction
dup v1.4s, w12 ;movi v0.16b, #0 ;aese
On Mon, Nov 20, 2017 at 03:21:40PM +, Mark Rutland wrote:
> Would it be possible to split this into:
>
> (1) (basic) arm64 clang support
> (2) gold support (no LTO)
> (3) LTO support
>
> ... with any necessary workarounds added as-required to the relevant
> series?
Absolutely. I'll split
On Thu, Nov 16, 2017 at 11:13:07AM -0800, Paul E. McKenney wrote:
> Ah, if "this patch set" meant "adding LTO", I stand corrected and I
> apologize for my confusion.
Again, I'm not proposing for LTO to be enabled by default. These patches
just make it possible to enable it. Are you saying the
On Thu, Nov 16, 2017 at 10:14:17PM +, Ard Biesheuvel wrote:
> OK, so my concern here is that this code probably only operates on
> fully linked binaries, and not partially linked object files like
> kernel modules.
Right. That makes sense.
> What is preventing us from using the large model
On Thu, Nov 16, 2017 at 04:34:03PM +, Ard Biesheuvel wrote:
> You still have not explained to us how GOLD avoids the erratum.
Sorry, I didn't realize you were asking that. If gold spots erratum
sequences, looks like it creates stubs to break them up:
On Thu, Nov 16, 2017 at 11:53:00PM +0300, Yury Norov wrote:
> I would suggest you to add the patch that checks their versions and
> disables LTO if needed.
Sure, sounds reasonable. I'll add this in the next version.
Sami
On Thu, Nov 16, 2017 at 11:20:40PM +, Ard Biesheuvel wrote:
> So at which point is the IR in a partially linked object file
> converted into executable code?
At the final module link step (cmd_ld_ko_o) in scripts/Makefile.modpost,
added in patch 12.
Sami
GNU gold may require different flags than GNU ld. Add a macro for
detecting the linker and conditionally add gold specific flags from
LDFLAGS_GOLD.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
Makefile | 5 +
scripts/Kbuild.include | 4
2 files chan
With CONFIG_CLANG_LTO, clang generates LLVM IR instead of ELF object
files. As empty.o is used for probing target properties, disable LTO
for it to produce an object file instead.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
scripts/mod/Makefile | 1 +
1 file changed, 1 ins
=ld.gold LD_FINAL_VMLINUX=ld
Recommended versions are >= 5.0 for clang, and >= 2.27 for binutils.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
.gitignore | 2 ++
Makefile | 16 -
arch/Kconfig | 32 +
scripts/Ma
Cc: Matthias Kaehlcke <m...@chromium.org>
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Makefile | 8 +++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index 939b310913cf..eb6f3c9ec6cb 100644
--- a/arch/a
This change fixes the following error message when linking with GNU
gold:
ld.gold: error: unrecognized emulation aarch64linux
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Makefile | 4
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/Makefile b/arch
Make sure the linker doesn't remove .altinstructions or
.altinstr_replacement when CONFIG_LD_DEAD_CODE_DATA_ELIMINATION is
enabled.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/kernel/vmlinux.lds.S | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff
RANDOMIZE_MODULE_REGION_FULL is selected,
2) and disables RANDOMIZE_MODULE_REGION_FULL with clang LTO.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Kconfig | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
m>
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/include/asm/kvm_hyp.h | 2 ++
arch/arm64/include/asm/sysreg.h | 71 ++--
2 files changed, 56 insertions(+), 17 deletions(-)
diff --git a/arch/arm64/include/asm/kvm_hyp.h b/arch
Allow CONFIG_CLANG_LTO to be enabled for the architecture.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index a301fdc90319..6ae31f0c58ee 100644
--- a/arch/arm64/K
the erratum fix is not
used even if the linker is configured to enable it by default.
Signed-off-by: Sami Tolvanen <samitolva...@google.com>
---
arch/arm64/Makefile | 5 +
1 file changed, 5 insertions(+)
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index c16bd1ab37f8..0c1fb297c98e
1 - 100 of 912 matches
Mail list logo