All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] powerpc: tweak the kernel options for CRASH_DUMP and RELOCATABLE
@ 2016-07-13  1:14 Kevin Hao
  2016-07-13  1:14 ` [PATCH v2 1/3] powerpc32: booke: fix the build error when CRASH_DUMP is enabled Kevin Hao
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Kevin Hao @ 2016-07-13  1:14 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Scott Wood, Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman

v2:
Compare to v1 [1], the main differences are:
 - Still automatically select RELOCATABLE when CRASH_DUMP is enabled.
 - Add a new patch to kill RELOCATABLE_PPC32.

v1:
The first patch fixes a build error when CRASH_DUMP=y && ADVANCED_OPTIONS=n
for ppc32. The second does some cleanup for RELOCATABLE option.

Kevin Hao (3):
  powerpc32: booke: fix the build error when CRASH_DUMP is enabled
  powerpc: merge the RELOCATABLE config entries for ppc32 and ppc64
  powerpc32: kill RELOCATABLE_PPC32

 arch/powerpc/Kconfig              | 61 +++++++++++++++------------------------
 arch/powerpc/include/asm/page.h   |  6 ++--
 arch/powerpc/kernel/Makefile      |  3 +-
 arch/powerpc/kernel/vmlinux.lds.S |  2 +-
 arch/powerpc/mm/init_32.c         |  2 +-
 5 files changed, 29 insertions(+), 45 deletions(-)

[1] http://linuxppc-dev.ozlabs.narkive.com/fKHcSZbu/patch-0-2-powerpc-tweak-the-kernel-options-for-crash-dump-and-relocatable
-- 
2.8.1

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/3] powerpc32: booke: fix the build error when CRASH_DUMP is enabled
  2016-07-13  1:14 [PATCH v2 0/3] powerpc: tweak the kernel options for CRASH_DUMP and RELOCATABLE Kevin Hao
@ 2016-07-13  1:14 ` Kevin Hao
  2016-07-20  9:10   ` [v2, " Michael Ellerman
  2016-07-13  1:14 ` [PATCH v2 2/3] powerpc: merge the RELOCATABLE config entries for ppc32 and ppc64 Kevin Hao
  2016-07-13  1:14 ` [PATCH v2 3/3] powerpc32: kill RELOCATABLE_PPC32 Kevin Hao
  2 siblings, 1 reply; 5+ messages in thread
From: Kevin Hao @ 2016-07-13  1:14 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Scott Wood, Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman

In the current code, the RELOCATABLE will be forcedly enabled when
enabling CRASH_DUMP. But for ppc32, the RELOCABLE also depend on
ADVANCED_OPTIONS and select NONSTATIC_KERNEL. This will cause the
following build error when CRASH_DUMP=y && ADVANCED_OPTIONS=n
because the select of NONSTATIC_KERNEL doesn't take effect.
  arch/powerpc/include/asm/io.h: In function 'virt_to_phys':
  arch/powerpc/include/asm/page.h:113:26: error: 'virt_phys_offset' undeclared (first use in this function)
   #define VIRT_PHYS_OFFSET virt_phys_offset
                          ^
It doesn't have any strong reasons to make the RELOCATABLE depend on
ADVANCED_OPTIONS. So remove this dependency to fix this issue.

Signed-off-by: Kevin Hao <haokexin@gmail.com>
---
 arch/powerpc/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 0a4cea451cf2..cb7910b9f10f 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -952,7 +952,7 @@ config DYNAMIC_MEMSTART
 
 config RELOCATABLE
 	bool "Build a relocatable kernel"
-	depends on ADVANCED_OPTIONS && FLATMEM && (44x || FSL_BOOKE)
+	depends on FLATMEM && (44x || FSL_BOOKE)
 	select NONSTATIC_KERNEL
 	help
 	  This builds a kernel image that is capable of running at the
-- 
2.8.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/3] powerpc: merge the RELOCATABLE config entries for ppc32 and ppc64
  2016-07-13  1:14 [PATCH v2 0/3] powerpc: tweak the kernel options for CRASH_DUMP and RELOCATABLE Kevin Hao
  2016-07-13  1:14 ` [PATCH v2 1/3] powerpc32: booke: fix the build error when CRASH_DUMP is enabled Kevin Hao
@ 2016-07-13  1:14 ` Kevin Hao
  2016-07-13  1:14 ` [PATCH v2 3/3] powerpc32: kill RELOCATABLE_PPC32 Kevin Hao
  2 siblings, 0 replies; 5+ messages in thread
From: Kevin Hao @ 2016-07-13  1:14 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Scott Wood, Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman

It makes no sense to keep two separate RELOCATABLE config entries for
ppc32 and ppc64 respectively. Merge them into one and move it to
a common place.

Signed-off-by: Kevin Hao <haokexin@gmail.com>
---
 arch/powerpc/Kconfig | 65 ++++++++++++++++++++++------------------------------
 1 file changed, 27 insertions(+), 38 deletions(-)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index cb7910b9f10f..a9d847c8a20d 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -458,6 +458,33 @@ config KEXEC
 	  interface is strongly in flux, so no good recommendation can be
 	  made.
 
+config RELOCATABLE
+	bool "Build a relocatable kernel"
+	depends on (PPC64 && !COMPILE_TEST) || (FLATMEM && (44x || FSL_BOOKE))
+	select NONSTATIC_KERNEL
+	help
+	  This builds a kernel image that is capable of running at the
+	  location the kernel is loaded at. For ppc32, there is no any
+	  alignment restrictions, and this feature is a superset of
+	  DYNAMIC_MEMSTART and hence overrides it. For ppc64, we should use
+	  16k-aligned base address. The kernel is linked as a
+	  position-independent executable (PIE) and contains dynamic relocations
+	  which are processed early in the bootup process.
+
+	  One use is for the kexec on panic case where the recovery kernel
+	  must live at a different physical address than the primary
+	  kernel.
+
+	  Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
+	  it has been loaded at and the compile time physical addresses
+	  CONFIG_PHYSICAL_START is ignored.  However CONFIG_PHYSICAL_START
+	  setting can still be useful to bootwrappers that need to know the
+	  load address of the kernel (eg. u-boot/mkimage).
+
+config RELOCATABLE_PPC32
+	def_bool y
+	depends on PPC32 && RELOCATABLE
+
 config CRASH_DUMP
 	bool "Build a kdump crash kernel"
 	depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)
@@ -950,29 +977,6 @@ config DYNAMIC_MEMSTART
 
 	  This option is overridden by CONFIG_RELOCATABLE
 
-config RELOCATABLE
-	bool "Build a relocatable kernel"
-	depends on FLATMEM && (44x || FSL_BOOKE)
-	select NONSTATIC_KERNEL
-	help
-	  This builds a kernel image that is capable of running at the
-	  location the kernel is loaded at, without any alignment restrictions.
-	  This feature is a superset of DYNAMIC_MEMSTART and hence overrides it.
-
-	  One use is for the kexec on panic case where the recovery kernel
-	  must live at a different physical address than the primary
-	  kernel.
-
-	  Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
-	  it has been loaded at and the compile time physical addresses
-	  CONFIG_PHYSICAL_START is ignored.  However CONFIG_PHYSICAL_START
-	  setting can still be useful to bootwrappers that need to know the
-	  load address of the kernel (eg. u-boot/mkimage).
-
-config RELOCATABLE_PPC32
-	def_bool y
-	depends on PPC32 && RELOCATABLE
-
 config PAGE_OFFSET_BOOL
 	bool "Set custom page offset address"
 	depends on ADVANCED_OPTIONS
@@ -1063,21 +1067,6 @@ config PIN_TLB_IMMR
 endmenu
 
 if PPC64
-config RELOCATABLE
-	bool "Build a relocatable kernel"
-	depends on !COMPILE_TEST
-	select NONSTATIC_KERNEL
-	help
-	  This builds a kernel image that is capable of running anywhere
-	  in the RMA (real memory area) at any 16k-aligned base address.
-	  The kernel is linked as a position-independent executable (PIE)
-	  and contains dynamic relocations which are processed early
-	  in the bootup process.
-
-	  One use is for the kexec on panic case where the recovery kernel
-	  must live at a different physical address than the primary
-	  kernel.
-
 # This value must have zeroes in the bottom 60 bits otherwise lots will break
 config PAGE_OFFSET
 	hex
-- 
2.8.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 3/3] powerpc32: kill RELOCATABLE_PPC32
  2016-07-13  1:14 [PATCH v2 0/3] powerpc: tweak the kernel options for CRASH_DUMP and RELOCATABLE Kevin Hao
  2016-07-13  1:14 ` [PATCH v2 1/3] powerpc32: booke: fix the build error when CRASH_DUMP is enabled Kevin Hao
  2016-07-13  1:14 ` [PATCH v2 2/3] powerpc: merge the RELOCATABLE config entries for ppc32 and ppc64 Kevin Hao
@ 2016-07-13  1:14 ` Kevin Hao
  2 siblings, 0 replies; 5+ messages in thread
From: Kevin Hao @ 2016-07-13  1:14 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Scott Wood, Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman

It is seldom used in the kernel code and can be easily replaced by
either RELOCATABLE or PPC32. So there is no reason to keep a separate
kernel option for this.

Signed-off-by: Kevin Hao <haokexin@gmail.com>
---
 arch/powerpc/Kconfig              | 4 ----
 arch/powerpc/include/asm/page.h   | 6 +++---
 arch/powerpc/kernel/Makefile      | 3 +--
 arch/powerpc/kernel/vmlinux.lds.S | 2 +-
 arch/powerpc/mm/init_32.c         | 2 +-
 5 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index a9d847c8a20d..98f7e29e5680 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -481,10 +481,6 @@ config RELOCATABLE
 	  setting can still be useful to bootwrappers that need to know the
 	  load address of the kernel (eg. u-boot/mkimage).
 
-config RELOCATABLE_PPC32
-	def_bool y
-	depends on PPC32 && RELOCATABLE
-
 config CRASH_DUMP
 	bool "Build a kdump crash kernel"
 	depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)
diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
index 51db3a37bced..56398e7e6100 100644
--- a/arch/powerpc/include/asm/page.h
+++ b/arch/powerpc/include/asm/page.h
@@ -96,7 +96,7 @@ extern unsigned int HPAGE_SHIFT;
 extern phys_addr_t memstart_addr;
 extern phys_addr_t kernstart_addr;
 
-#ifdef CONFIG_RELOCATABLE_PPC32
+#if defined(CONFIG_RELOCATABLE) && defined(CONFIG_PPC32)
 extern long long virt_phys_offset;
 #endif
 
@@ -139,9 +139,9 @@ extern long long virt_phys_offset;
  * determine MEMORY_START until then.  However we can determine PHYSICAL_START
  * from information at hand (program counter, TLB lookup).
  *
- * On BookE with RELOCATABLE (RELOCATABLE_PPC32)
+ * On BookE with RELOCATABLE && PPC32
  *
- *   With RELOCATABLE_PPC32,  we support loading the kernel at any physical 
+ *   With RELOCATABLE && PPC32,  we support loading the kernel at any physical
  *   address without any restriction on the page alignment.
  *
  *   We find the runtime address of _stext and relocate ourselves based on 
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 0c7106df90e6..0719b1a3fb24 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -47,7 +47,6 @@ obj-$(CONFIG_HAVE_HW_BREAKPOINT)	+= hw_breakpoint.o
 obj-$(CONFIG_PPC_BOOK3S_64)	+= cpu_setup_ppc970.o cpu_setup_pa6t.o
 obj-$(CONFIG_PPC_BOOK3S_64)	+= cpu_setup_power.o
 obj-$(CONFIG_PPC_BOOK3S_64)	+= mce.o mce_power.o hmi.o
-obj64-$(CONFIG_RELOCATABLE)	+= reloc_64.o
 obj-$(CONFIG_PPC_BOOK3E_64)	+= exceptions-64e.o idle_book3e.o
 obj-$(CONFIG_PPC64)		+= vdso64/
 obj-$(CONFIG_ALTIVEC)		+= vecemu.o
@@ -92,7 +91,7 @@ extra-$(CONFIG_FSL_BOOKE)	:= head_fsl_booke.o
 extra-$(CONFIG_8xx)		:= head_8xx.o
 extra-y				+= vmlinux.lds
 
-obj-$(CONFIG_RELOCATABLE_PPC32)	+= reloc_32.o
+obj-$(CONFIG_RELOCATABLE)	+= reloc_$(CONFIG_WORD_SIZE).o
 
 obj-$(CONFIG_PPC32)		+= entry_32.o setup_32.o
 obj-$(CONFIG_PPC64)		+= dma-iommu.o iommu.o
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 2dd91f79de05..b5fba689fca6 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -165,7 +165,7 @@ SECTIONS
 	. = ALIGN(8);
 	.dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET)
 	{
-#ifdef CONFIG_RELOCATABLE_PPC32
+#ifdef CONFIG_PPC32
 		__dynamic_symtab = .;
 #endif
 		*(.dynsym)
diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c
index e2d7ba124618..448685fbf27c 100644
--- a/arch/powerpc/mm/init_32.c
+++ b/arch/powerpc/mm/init_32.c
@@ -64,7 +64,7 @@ EXPORT_SYMBOL(memstart_addr);
 phys_addr_t kernstart_addr;
 EXPORT_SYMBOL(kernstart_addr);
 
-#ifdef CONFIG_RELOCATABLE_PPC32
+#ifdef CONFIG_RELOCATABLE
 /* Used in __va()/__pa() */
 long long virt_phys_offset;
 EXPORT_SYMBOL(virt_phys_offset);
-- 
2.8.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [v2, 1/3] powerpc32: booke: fix the build error when CRASH_DUMP is enabled
  2016-07-13  1:14 ` [PATCH v2 1/3] powerpc32: booke: fix the build error when CRASH_DUMP is enabled Kevin Hao
@ 2016-07-20  9:10   ` Michael Ellerman
  0 siblings, 0 replies; 5+ messages in thread
From: Michael Ellerman @ 2016-07-20  9:10 UTC (permalink / raw)
  To: Kevin Hao, linuxppc-dev; +Cc: Scott Wood, Paul Mackerras

On Wed, 2016-13-07 at 01:14:38 UTC, Kevin Hao wrote:
> In the current code, the RELOCATABLE will be forcedly enabled when
> enabling CRASH_DUMP. But for ppc32, the RELOCABLE also depend on
> ADVANCED_OPTIONS and select NONSTATIC_KERNEL. This will cause the
> following build error when CRASH_DUMP=y && ADVANCED_OPTIONS=n
> because the select of NONSTATIC_KERNEL doesn't take effect.
>   arch/powerpc/include/asm/io.h: In function 'virt_to_phys':
>   arch/powerpc/include/asm/page.h:113:26: error: 'virt_phys_offset' undeclared (first use in this function)
>    #define VIRT_PHYS_OFFSET virt_phys_offset
>                           ^
> It doesn't have any strong reasons to make the RELOCATABLE depend on
> ADVANCED_OPTIONS. So remove this dependency to fix this issue.
> 
> Signed-off-by: Kevin Hao <haokexin@gmail.com>

Series applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/da4230714662278781d007fb2b

cheers

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-07-20  9:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-13  1:14 [PATCH v2 0/3] powerpc: tweak the kernel options for CRASH_DUMP and RELOCATABLE Kevin Hao
2016-07-13  1:14 ` [PATCH v2 1/3] powerpc32: booke: fix the build error when CRASH_DUMP is enabled Kevin Hao
2016-07-20  9:10   ` [v2, " Michael Ellerman
2016-07-13  1:14 ` [PATCH v2 2/3] powerpc: merge the RELOCATABLE config entries for ppc32 and ppc64 Kevin Hao
2016-07-13  1:14 ` [PATCH v2 3/3] powerpc32: kill RELOCATABLE_PPC32 Kevin Hao

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.