b4a74e9d52
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]
86 lines
3.1 KiB
Diff
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) {
|