Add ppc64le support from Brent Baude (rhbz 1073102)

This commit is contained in:
Josh Boyer 2014-03-06 14:35:35 -05:00
parent e23ada1998
commit 5a77287012
4 changed files with 69 additions and 5 deletions

View File

@ -12,7 +12,8 @@ CONFIGFILES = \
$(CFG)-armv7hl.config $(CFG)-armv7hl-lpae.config \ $(CFG)-armv7hl.config $(CFG)-armv7hl-lpae.config \
$(CFG)-aarch64.config \ $(CFG)-aarch64.config \
$(CFG)-ppc.config $(CFG)-ppc-smp.config \ $(CFG)-ppc.config $(CFG)-ppc-smp.config \
$(CFG)-ppc64.config $(CFG)-ppc64p7.config $(CFG)-ppc64-debug.config $(CFG)-ppc64.config $(CFG)-ppc64p7.config $(CFG)-ppc64-debug.config \
$(CFG)-ppc64le.config
PLATFORMS = x86 x86_64 powerpc powerpc32 powerpc64 s390x arm arm64 PLATFORMS = x86 x86_64 powerpc powerpc32 powerpc64 s390x arm arm64
TEMPFILES = $(addprefix temp-, $(addsuffix -generic, $(PLATFORMS))) TEMPFILES = $(addprefix temp-, $(addsuffix -generic, $(PLATFORMS)))
@ -86,6 +87,9 @@ temp-powerpc32-generic: config-powerpc32-generic temp-powerpc-generic
temp-powerpc64-generic: config-powerpc64 temp-powerpc-generic temp-powerpc64-generic: config-powerpc64 temp-powerpc-generic
perl merge.pl $^ > $@ perl merge.pl $^ > $@
temp-powerpc64le-generic: config-powerpc64le temp-powerpc64-generic
perl merge.pl $^ > $@
temp-s390-generic: config-s390x temp-generic temp-s390-generic: config-s390x temp-generic
perl merge.pl $^ > $@ perl merge.pl $^ > $@
@ -116,6 +120,9 @@ $(CFG)-ppc64-debug.config: temp-powerpc64-generic temp-powerpc-debug-generic
$(CFG)-ppc64p7.config: config-powerpc64p7 temp-powerpc64-generic $(CFG)-ppc64p7.config: config-powerpc64p7 temp-powerpc64-generic
perl merge.pl $^ powerpc > $@ perl merge.pl $^ powerpc > $@
$(CFG)-ppc64le.config: /dev/null temp-powerpc64le-generic
perl merge.pl $^ powerpc > $@
$(CFG)-s390x.config: config-s390x temp-s390-generic $(CFG)-s390x.config: config-s390x temp-s390-generic
perl merge.pl $^ s390 > $@ perl merge.pl $^ s390 > $@

3
config-powerpc64le Normal file
View File

@ -0,0 +1,3 @@
# CONFIG_VIRTUALIZATION is not set
# CONFIG_BPF_JIT is not set
CONFIG_CPU_LITTLE_ENDIAN=y

View File

@ -222,7 +222,7 @@ Summary: The Linux kernel
%if %{with_vdso_install} %if %{with_vdso_install}
# These arches install vdso/ directories. # These arches install vdso/ directories.
%define vdso_arches %{all_x86} x86_64 ppc ppc64 ppc64p7 s390 s390x aarch64 %define vdso_arches %{all_x86} x86_64 ppc ppc64 ppc64p7 s390 s390x aarch64 ppc64le
%endif %endif
# Overrides for generic default options # Overrides for generic default options
@ -252,7 +252,7 @@ Summary: The Linux kernel
%endif %endif
# sparse blows up on ppc64 and sparc64 # sparse blows up on ppc64 and sparc64
%ifarch ppc64 ppc ppc64p7 %ifarch ppc64 ppc ppc64p7 ppc64le
%define with_sparse 0 %define with_sparse 0
%endif %endif
@ -284,6 +284,17 @@ Summary: The Linux kernel
%define kernel_image_elf 1 %define kernel_image_elf 1
%endif %endif
%ifarch ppc64le
%define asmarch powerpc
%define hdrarch powerpc
%define all_arch_configs kernel-%{version}-ppc64le.config
%define image_install_path boot
%define make_target vmlinux
%define kernel_image vmlinux
%define kernel_image_elf 1
%define with_tools 0
%endif
%ifarch s390x %ifarch s390x
%define asmarch s390 %define asmarch s390
%define hdrarch s390 %define hdrarch s390
@ -365,7 +376,7 @@ Summary: The Linux kernel
%endif %endif
# Architectures we build tools/cpupower on # Architectures we build tools/cpupower on
%define cpupowerarchs %{ix86} x86_64 ppc ppc64 ppc64p7 %{arm} aarch64 %define cpupowerarchs %{ix86} x86_64 ppc ppc64 ppc64p7 %{arm} aarch64 ppc64le
# #
# Packages that need to be installed before the kernel is, because the %%post # Packages that need to be installed before the kernel is, because the %%post
@ -406,7 +417,7 @@ Version: %{rpmversion}
Release: %{pkg_release} Release: %{pkg_release}
# DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD. # DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD.
# SET %%nobuildarches (ABOVE) INSTEAD # SET %%nobuildarches (ABOVE) INSTEAD
ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 ppc64p7 s390 s390x %{arm} aarch64 ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 ppc64p7 s390 s390x %{arm} aarch64 ppc64le
ExclusiveOS: Linux ExclusiveOS: Linux
%kernel_reqprovconf %kernel_reqprovconf
@ -473,6 +484,7 @@ Source51: config-powerpc32-generic
Source52: config-powerpc32-smp Source52: config-powerpc32-smp
Source53: config-powerpc64 Source53: config-powerpc64
Source54: config-powerpc64p7 Source54: config-powerpc64p7
Source55: config-powerpc64le
Source70: config-s390x Source70: config-s390x
@ -637,6 +649,9 @@ Patch25034: bug-1071998.patch
#rhbz 1051748 #rhbz 1051748
Patch25035: Bluetooth-allocate-static-minor-for-vhci.patch Patch25035: Bluetooth-allocate-static-minor-for-vhci.patch
#Fixes module loading on ppc64le
Patch25036: ppc64le_module_fix.patch
# END OF PATCH DEFINITIONS # END OF PATCH DEFINITIONS
%endif %endif
@ -1293,6 +1308,9 @@ ApplyPatch bug-1071998.patch
#rhbz 1051748 #rhbz 1051748
ApplyPatch Bluetooth-allocate-static-minor-for-vhci.patch ApplyPatch Bluetooth-allocate-static-minor-for-vhci.patch
# Fixes module loading on ppc64le
ApplyPatch ppc64le_module_fix.patch
# END OF PATCH APPLICATIONS # END OF PATCH APPLICATIONS
%endif %endif
@ -2073,6 +2091,7 @@ fi
# || || # || ||
%changelog %changelog
* Thu Mar 06 2014 Josh Boyer <jwboyer@fedoraproject.org> * Thu Mar 06 2014 Josh Boyer <jwboyer@fedoraproject.org>
- Add ppc64le support from Brent Baude (rhbz 1073102)
- Fix depmod error message from hci_vhci module (rhbz 1051748) - Fix depmod error message from hci_vhci module (rhbz 1051748)
- Fix bogus WARN in iwlwifi (rhbz 1071998) - Fix bogus WARN in iwlwifi (rhbz 1071998)

35
ppc64le_module_fix.patch Normal file
View File

@ -0,0 +1,35 @@
From 414794ae6a59c38f6e5793ad50df97cba3dda4e3 Mon Sep 17 00:00:00 2001
From: Tony Breeds <tony@bakeyournoodle.com>
Date: Thu, 30 Jan 2014 19:58:55 +1100
Subject: [PATCH] powerpc/le: Avoid creatng R_PPC64_TOCSAVE relocations for
modules.
When building modules with a native le toolchain the linker will
generate R_PPC64_TOCSAVE relocations when it's safe to omit saving r2 on
a plt call. This isn't helpful in the conext of a kernel module and the
kernel will fail to load those modules with an error like:
nf_conntrack: Unknown ADD relocation: 109
This patch tells the linker to avoid createing R_PPC64_TOCSAVE
relocations allowing modules to load.
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
---
arch/powerpc/Makefile | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 0f4344e..fff3945 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -74,6 +74,9 @@ override CROSS32AS += -mlittle-endian
LDEMULATION := lppc
GNUTARGET := powerpcle
MULTIPLEWORD := -mno-multiple
+ifeq ($(call cc-option-yn,-mno-save-toc-indirect),y)
+ KBUILD_CFLAGS_MODULE += -mno-save-toc-indirect
+endif
else
ifeq ($(call cc-option-yn,-mbig-endian),y)
override CC += -mbig-endian
--