void-packages/srcpkgs/linux5.5/patches/ppc64-be-elfv2.patch
Juan RP b4a74e9d52 New package: linux5.5-5.5.2 (tested on x86_64).
This enables X86_UMIP among other things, also restores
TRANSPARENT_HUGEPAGE_MADVISE=y (which was set to
_ALWAYS again, see [1]).

How to know what is the policy to enable or disable
any option? simple: we follow what upstream defaults to, e.g:
if an option is disabled by default (N), we don't enable
it unless it's explicitely required. For any other options
that can be built as modules, we build them as modules.

So the linux kernel configuration that void uses depends
on what upstream sets by default.

For now this only contains working configurations for
x86 and x86_64. People with working hardware should adapt
this configuration to the target arch appropiately.

Built and tested on x86 and x86_64.

[1] https://blog.nelhage.com/post/transparent-hugepages/

[ci skip]
2020-02-06 08:18:42 +01:00

86 lines
3.1 KiB
Diff

This makes the Linux kernel build as ELFv2 on big endian ppc64. The upstream
doesn't seem to be interested in this but it's a small patch that is unlikely
to break/easy to remake and in worst case can always be ditched.
Using ELFv2 has some potential performance benefits and is already always used
on little endian. It requires a relatively modern toolchain, which we already
have.
Ping q66 if it does not apply.
--- a/arch/powerpc/Makefile 2020-01-05 14:40:50.395763093 +0100
+++ b/arch/powerpc/Makefile 2020-01-05 14:48:39.025251092 +0100
@@ -92,10 +92,8 @@
ifdef CONFIG_PPC64
ifndef CONFIG_CC_IS_CLANG
-cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1)
-cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mcall-aixdesc)
-aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1)
-aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mabi=elfv2
+cflags-y += $(call cc-option,-mabi=elfv2,$(call cc-option,-mcall-aixdesc))
+aflags-y += $(call cc-option,-mabi=elfv2,$(call cc-option,-mabi=elfv1))
endif
endif
@@ -144,14 +142,8 @@
CFLAGS-$(CONFIG_PPC64) := $(call cc-option,-mtraceback=no)
ifndef CONFIG_CC_IS_CLANG
-ifdef CONFIG_CPU_LITTLE_ENDIAN
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2,$(call cc-option,-mcall-aixdesc))
-AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2)
-else
-CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1)
-CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcall-aixdesc)
-AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1)
-endif
+AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2,$(call cc-option,-mabi=elfv1))
endif
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcmodel=medium,$(call cc-option,-mminimal-toc))
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mno-pointers-to-nested-functions)
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -48,8 +48,8 @@ ifdef CONFIG_CPU_BIG_ENDIAN
BOOTCFLAGS += -mbig-endian
else
BOOTCFLAGS += -mlittle-endian
-BOOTCFLAGS += $(call cc-option,-mabi=elfv2)
endif
+BOOTCFLAGS += $(call cc-option,-mabi=elfv2)
BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
--- a/drivers/crypto/vmx/Makefile 2020-01-01 10:56:10.560965046 +0100
+++ b/drivers/crypto/vmx/Makefile 2020-01-01 10:57:05.189968856 +0100
@@ -5,7 +5,7 @@
ifeq ($(CONFIG_CPU_LITTLE_ENDIAN),y)
override flavour := linux-ppc64le
else
-override flavour := linux-ppc64
+override flavour := linux-ppc64v2
endif
quiet_cmd_perl = PERL $@
--- a/drivers/crypto/vmx/ppc-xlate.pl
+++ b/drivers/crypto/vmx/ppc-xlate.pl
@@ -40,7 +40,7 @@ my $globl = sub {
};
my $text = sub {
my $ret = ($flavour =~ /aix/) ? ".csect\t.text[PR],7" : ".text";
- $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64le/);
+ $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64(le|v2)/);
$ret;
};
my $machine = sub {
@@ -142,7 +142,7 @@ my $vmr = sub {
# Some ABIs specify vrsave, special-purpose register #256, as reserved
# for system use.
-my $no_vrsave = ($flavour =~ /linux-ppc64le/);
+my $no_vrsave = ($flavour =~ /linux-ppc64(le|v2)/);
my $mtspr = sub {
my ($f,$idx,$ra) = @_;
if ($idx == 256 && $no_vrsave) {