Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v2 0/2] ARM: zynq: smp improvements
@ 2019-08-08 12:52 Luis Araneda
  2019-08-08 12:52 ` [PATCH v2 1/2] ARM: zynq: support smp in thumb mode Luis Araneda
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Luis Araneda @ 2019-08-08 12:52 UTC (permalink / raw)
  To: linux, michal.simek; +Cc: linux-kernel, linux-arm-kernel, Luis Araneda

This series adds support for kernel compiled in Thumb mode
and fixes a kernel panic on smp bring-up when FORTIFY_SOURCE
is enabled.

The series started with the second patch as an RFC, and
the first patch were suggested on the review to complement
the fix.

The changes were run-tested on a Digilent Zybo Z7 board
---
Changes:
v1 -> v2:
- Reword commit messages to include related commits
- Add Fixes tag to relevant commits
- Add Cc to stable to relevant commits


Luis Araneda (2):
  ARM: zynq: support smp in thumb mode
  ARM: zynq: Use memcpy_toio instead of memcpy on smp bring-up

 arch/arm/mach-zynq/headsmp.S | 2 ++
 arch/arm/mach-zynq/platsmp.c | 4 ++--
 2 files changed, 4 insertions(+), 2 deletions(-)

-- 
2.22.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH v2 1/2] ARM: zynq: support smp in thumb mode
  2019-08-08 12:52 [PATCH v2 0/2] ARM: zynq: smp improvements Luis Araneda
@ 2019-08-08 12:52 ` Luis Araneda
  2019-08-08 12:52 ` [PATCH v2 2/2] ARM: zynq: Use memcpy_toio instead of memcpy on smp bring-up Luis Araneda
  2019-08-14  7:40 ` [PATCH v2 0/2] ARM: zynq: smp improvements Michal Simek
  2 siblings, 0 replies; 4+ messages in thread
From: Luis Araneda @ 2019-08-08 12:52 UTC (permalink / raw)
  To: linux, michal.simek; +Cc: linux-kernel, linux-arm-kernel, Luis Araneda

Add .arm directive to headsmp.S to ensure that the
CPU starts in 32-bit ARM mode and the correct code
size is copied on smp bring-up.
This is related to the fix applied to SoCFPGA by
commit 5616f36713ea
("ARM: SoCFPGA: Fix secondary CPU startup in thumb2 kernel")

Additionally, start secondary CPUs on secondary_startup_arm
to automatically switch from ARM to thumb on a thumb kernel

Signed-off-by: Luis Araneda <luaraneda@gmail.com>
Suggested-by: Michal Simek <michal.simek@xilinx.com>
---
Changes:
v1 -> v2:
- Reword commit message to include related commits
---
 arch/arm/mach-zynq/headsmp.S | 2 ++
 arch/arm/mach-zynq/platsmp.c | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-zynq/headsmp.S b/arch/arm/mach-zynq/headsmp.S
index ab85003cf9ad..3449e0d1f990 100644
--- a/arch/arm/mach-zynq/headsmp.S
+++ b/arch/arm/mach-zynq/headsmp.S
@@ -7,6 +7,8 @@
 #include <linux/init.h>
 #include <asm/assembler.h>
 
+	.arm
+
 ENTRY(zynq_secondary_trampoline)
 ARM_BE8(setend	be)				@ ensure we are in BE8 mode
 	ldr	r0, zynq_secondary_trampoline_jump
diff --git a/arch/arm/mach-zynq/platsmp.c b/arch/arm/mach-zynq/platsmp.c
index a7cfe07156f4..38728badabd4 100644
--- a/arch/arm/mach-zynq/platsmp.c
+++ b/arch/arm/mach-zynq/platsmp.c
@@ -81,7 +81,7 @@ EXPORT_SYMBOL(zynq_cpun_start);
 
 static int zynq_boot_secondary(unsigned int cpu, struct task_struct *idle)
 {
-	return zynq_cpun_start(__pa_symbol(secondary_startup), cpu);
+	return zynq_cpun_start(__pa_symbol(secondary_startup_arm), cpu);
 }
 
 /*
-- 
2.22.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH v2 2/2] ARM: zynq: Use memcpy_toio instead of memcpy on smp bring-up
  2019-08-08 12:52 [PATCH v2 0/2] ARM: zynq: smp improvements Luis Araneda
  2019-08-08 12:52 ` [PATCH v2 1/2] ARM: zynq: support smp in thumb mode Luis Araneda
@ 2019-08-08 12:52 ` Luis Araneda
  2019-08-14  7:40 ` [PATCH v2 0/2] ARM: zynq: smp improvements Michal Simek
  2 siblings, 0 replies; 4+ messages in thread
From: Luis Araneda @ 2019-08-08 12:52 UTC (permalink / raw)
  To: linux, michal.simek; +Cc: stable, linux-kernel, linux-arm-kernel, Luis Araneda

This fixes a kernel panic on memcpy when
FORTIFY_SOURCE is enabled.

The initial smp implementation on commit aa7eb2bb4e4a
("arm: zynq: Add smp support")
used memcpy, which worked fine until commit ee333554fed5
("ARM: 8749/1: Kconfig: Add ARCH_HAS_FORTIFY_SOURCE")
enabled overflow checks at runtime, producing a read
overflow panic.

The computed size of memcpy args are:
- p_size (dst): 4294967295 = (size_t) -1
- q_size (src): 1
- size (len): 8

Additionally, the memory is marked as __iomem, so one of
the memcpy_* functions should be used for read/write.

Fixes: aa7eb2bb4e4a ("arm: zynq: Add smp support")
Signed-off-by: Luis Araneda <luaraneda@gmail.com>
Cc: stable@vger.kernel.org
---
Changes:
v1 -> v2:
- Reword commit message to include related commits
- Add Fixes tag
- Add Cc to stable
---
 arch/arm/mach-zynq/platsmp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mach-zynq/platsmp.c b/arch/arm/mach-zynq/platsmp.c
index 38728badabd4..a10085be9073 100644
--- a/arch/arm/mach-zynq/platsmp.c
+++ b/arch/arm/mach-zynq/platsmp.c
@@ -57,7 +57,7 @@ int zynq_cpun_start(u32 address, int cpu)
 			* 0x4: Jump by mov instruction
 			* 0x8: Jumping address
 			*/
-			memcpy((__force void *)zero, &zynq_secondary_trampoline,
+			memcpy_toio(zero, &zynq_secondary_trampoline,
 							trampoline_size);
 			writel(address, zero + trampoline_size);
 
-- 
2.22.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH v2 0/2] ARM: zynq: smp improvements
  2019-08-08 12:52 [PATCH v2 0/2] ARM: zynq: smp improvements Luis Araneda
  2019-08-08 12:52 ` [PATCH v2 1/2] ARM: zynq: support smp in thumb mode Luis Araneda
  2019-08-08 12:52 ` [PATCH v2 2/2] ARM: zynq: Use memcpy_toio instead of memcpy on smp bring-up Luis Araneda
@ 2019-08-14  7:40 ` Michal Simek
  2 siblings, 0 replies; 4+ messages in thread
From: Michal Simek @ 2019-08-14  7:40 UTC (permalink / raw)
  To: Luis Araneda, linux, michal.simek; +Cc: linux-kernel, linux-arm-kernel

On 08. 08. 19 14:52, Luis Araneda wrote:
> This series adds support for kernel compiled in Thumb mode
> and fixes a kernel panic on smp bring-up when FORTIFY_SOURCE
> is enabled.
> 
> The series started with the second patch as an RFC, and
> the first patch were suggested on the review to complement
> the fix.
> 
> The changes were run-tested on a Digilent Zybo Z7 board
> ---
> Changes:
> v1 -> v2:
> - Reword commit messages to include related commits
> - Add Fixes tag to relevant commits
> - Add Cc to stable to relevant commits
> 
> 
> Luis Araneda (2):
>   ARM: zynq: support smp in thumb mode
>   ARM: zynq: Use memcpy_toio instead of memcpy on smp bring-up
> 
>  arch/arm/mach-zynq/headsmp.S | 2 ++
>  arch/arm/mach-zynq/platsmp.c | 4 ++--
>  2 files changed, 4 insertions(+), 2 deletions(-)
> 

Applied both.
M

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, back to index

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-08 12:52 [PATCH v2 0/2] ARM: zynq: smp improvements Luis Araneda
2019-08-08 12:52 ` [PATCH v2 1/2] ARM: zynq: support smp in thumb mode Luis Araneda
2019-08-08 12:52 ` [PATCH v2 2/2] ARM: zynq: Use memcpy_toio instead of memcpy on smp bring-up Luis Araneda
2019-08-14  7:40 ` [PATCH v2 0/2] ARM: zynq: smp improvements Michal Simek

Linux-ARM-Kernel Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-arm-kernel/0 linux-arm-kernel/git/0.git
	git clone --mirror https://lore.kernel.org/linux-arm-kernel/1 linux-arm-kernel/git/1.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-arm-kernel linux-arm-kernel/ https://lore.kernel.org/linux-arm-kernel \
		linux-arm-kernel@lists.infradead.org infradead-linux-arm-kernel@archiver.kernel.org
	public-inbox-index linux-arm-kernel


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.infradead.lists.linux-arm-kernel


AGPL code for this site: git clone https://public-inbox.org/ public-inbox