All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org,
	bryan.wu@canonical.com
Subject: Re: [PATCH 0/4] Hacks to allow booting ARM SMP kernel on UP ARMv7
Date: Thu, 2 Sep 2010 18:39:41 -0700	[thread overview]
Message-ID: <20100903013940.GH11597@atomide.com> (raw)
In-Reply-To: <20100902133301.GI26319@n2100.arm.linux.org.uk>

[-- Attachment #1: Type: text/plain, Size: 951 bytes --]

* Russell King - ARM Linux <linux@arm.linux.org.uk> [100902 06:25]:
> On Thu, Aug 19, 2010 at 10:38:11AM +0300, Tony Lindgren wrote:
> > --- a/arch/arm/kernel/head.S
> > +++ b/arch/arm/kernel/head.S
> > @@ -346,8 +346,10 @@ __fixup_smp:
> >  	bne	smp_on_up		@ no, assume UP
> >  	mrc	p15, 0, r0, c0, c0, 5	@ read MIDR
> >  	movs	r0, r0, lsr #30
> > -	teqne	r0, #3			@ check top two bits 00 or 11
> > -	moveq	pc, lr
> > +	teq	r0, #0			@ check two top bits 00
> > +	beq	smp_on_up		@ yes, assume UP
> > +	teq	r0, #3			@ check top two bits 11
> > +	movne	pc, lr			@ no, running on SMP hw
> 
> This should be:
> 
> 	movs	r0, r0, lsr #30
> 	teqne	r0, #3
> 	movne	pc, lr
> 
> so that 0 or 3 avoids the return.

Actually should also handle value of 1:

31	30
0	0	Not using new register, assume not SMP
0	1	Not using new register, assume not SMP
1	0	Using new register, SMP
1	1	Using new register, UP

So we should return early only if it's 2.

Regards,

Tony

[-- Attachment #2: fix-assembly-smp-detection.patch --]
[-- Type: text/x-diff, Size: 738 bytes --]

>From 22aaafd2659b95dc1434c5d6dbb7403329d51b90 Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Thu, 2 Sep 2010 17:51:42 -0700
Subject: [PATCH] Fix smp_on_up detection

This is needed to detect UP properly on older ARMv7 like Cortex-A8.

Signed-off-by: Tony Lindgren <tony@atomide.com>

diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index 0b4a626..86aa36d 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -346,8 +346,8 @@ __fixup_smp:
 	bne	smp_on_up		@ no, assume UP
 	mrc	p15, 0, r0, c0, c0, 5	@ read MIDR
 	movs	r0, r0, lsr #30
-	teqne	r0, #3			@ check top two bits 00 or 11
-	movne	pc, lr
+	teq	r0, #2			@ check top two bits, 10 for SMP
+	moveq	pc, lr
 
 smp_on_up:
 	adr	r0, 1f

WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 0/4] Hacks to allow booting ARM SMP kernel on UP ARMv7
Date: Thu, 2 Sep 2010 18:39:41 -0700	[thread overview]
Message-ID: <20100903013940.GH11597@atomide.com> (raw)
In-Reply-To: <20100902133301.GI26319@n2100.arm.linux.org.uk>

* Russell King - ARM Linux <linux@arm.linux.org.uk> [100902 06:25]:
> On Thu, Aug 19, 2010 at 10:38:11AM +0300, Tony Lindgren wrote:
> > --- a/arch/arm/kernel/head.S
> > +++ b/arch/arm/kernel/head.S
> > @@ -346,8 +346,10 @@ __fixup_smp:
> >  	bne	smp_on_up		@ no, assume UP
> >  	mrc	p15, 0, r0, c0, c0, 5	@ read MIDR
> >  	movs	r0, r0, lsr #30
> > -	teqne	r0, #3			@ check top two bits 00 or 11
> > -	moveq	pc, lr
> > +	teq	r0, #0			@ check two top bits 00
> > +	beq	smp_on_up		@ yes, assume UP
> > +	teq	r0, #3			@ check top two bits 11
> > +	movne	pc, lr			@ no, running on SMP hw
> 
> This should be:
> 
> 	movs	r0, r0, lsr #30
> 	teqne	r0, #3
> 	movne	pc, lr
> 
> so that 0 or 3 avoids the return.

Actually should also handle value of 1:

31	30
0	0	Not using new register, assume not SMP
0	1	Not using new register, assume not SMP
1	0	Using new register, SMP
1	1	Using new register, UP

So we should return early only if it's 2.

Regards,

Tony

  reply	other threads:[~2010-09-03  1:39 UTC|newest]

Thread overview: 230+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-17 10:53 [PATCH 0/4] Hacks to allow booting ARM SMP kernel on UP ARMv7 Tony Lindgren
2010-08-17 10:53 ` Tony Lindgren
2010-08-17 10:53 ` [PATCH 1/4] ARM: Add SMP_ON_UP Kconfig option for booting SMP kernel on UP Tony Lindgren
2010-08-17 10:53   ` Tony Lindgren
2010-08-17 10:53 ` [PATCH 2/4] ARM: Allow optional UP processor functions for SMP kernels Tony Lindgren
2010-08-17 10:53   ` Tony Lindgren
2010-08-17 11:08   ` Russell King - ARM Linux
2010-08-17 11:08     ` Russell King - ARM Linux
2010-08-17 11:20     ` Tony Lindgren
2010-08-17 11:20       ` Tony Lindgren
2010-08-17 10:53 ` [PATCH 3/4] ARM: Set separate proc-v7 functions for SMP Tony Lindgren
2010-08-17 10:53   ` Tony Lindgren
2010-08-17 10:53 ` [PATCH 4/4] omap: Fix SMP on UP interrupt handling for multi-omap Tony Lindgren
2010-08-17 10:53   ` Tony Lindgren
2010-08-17 11:07   ` srinidhi
2010-08-17 11:07     ` srinidhi
2010-08-17 11:30     ` Tony Lindgren
2010-08-17 11:30       ` Tony Lindgren
2010-08-17 12:14       ` srinidhi
2010-08-17 12:14         ` srinidhi
2010-08-17 14:14         ` Tony Lindgren
2010-08-17 14:14           ` Tony Lindgren
2010-08-17 15:07           ` Shilimkar, Santosh
2010-08-17 15:07             ` Shilimkar, Santosh
2010-09-02 16:27       ` Tony Lindgren
2010-09-02 16:27         ` Tony Lindgren
2010-08-17 13:52 ` [PATCH 0/4] Hacks to allow booting ARM SMP kernel on UP ARMv7 Russell King - ARM Linux
2010-08-17 13:52   ` Russell King - ARM Linux
2010-08-17 14:12   ` Tony Lindgren
2010-08-17 14:12     ` Tony Lindgren
2010-08-17 15:40     ` Russell King - ARM Linux
2010-08-17 15:40       ` Russell King - ARM Linux
2010-08-19  7:38       ` Tony Lindgren
2010-08-19  7:38         ` Tony Lindgren
2010-08-19  9:38         ` Bryan Wu
2010-08-19  9:38           ` Bryan Wu
2010-08-19  9:57           ` Tony Lindgren
2010-08-19  9:57             ` Tony Lindgren
2010-08-19 10:20             ` Russell King - ARM Linux
2010-08-19 10:20               ` Russell King - ARM Linux
2010-08-20 12:06               ` Tony Lindgren
2010-08-20 12:06                 ` Tony Lindgren
2010-08-30 22:55                 ` Tony Lindgren
2010-08-30 22:55                   ` Tony Lindgren
2010-09-02 13:36                   ` Russell King - ARM Linux
2010-09-02 13:36                     ` Russell King - ARM Linux
2010-09-02 16:16                     ` Tony Lindgren
2010-09-02 16:16                       ` Tony Lindgren
2010-09-02 16:18                       ` [PATCH 1/6] ARM: Add inline function smp_on_up() for early init testing Tony Lindgren
2010-09-02 16:18                         ` Tony Lindgren
2010-09-02 17:08                         ` Russell King - ARM Linux
2010-09-02 17:08                           ` Russell King - ARM Linux
2010-09-02 17:15                           ` [PATCH 0/6] " Tony Lindgren
2010-09-02 17:15                             ` Tony Lindgren
2010-09-02 17:42                           ` [PATCH 1/6] " Tony Lindgren
2010-09-02 17:42                             ` Tony Lindgren
2010-09-02 19:26                             ` [PATCH 1/6] ARM: Add inline function smp_cpu() " Tony Lindgren
2010-09-02 19:26                               ` Tony Lindgren
2010-09-03  0:08                               ` Tony Lindgren
2010-09-03  0:08                                 ` Tony Lindgren
2010-09-03  2:22                                 ` Tony Lindgren
2010-09-03  2:22                                   ` Tony Lindgren
2010-09-03  8:58                                   ` Will Deacon
2010-09-03  9:02                                     ` Russell King - ARM Linux
2010-09-03  9:02                                       ` Russell King - ARM Linux
2010-09-03  9:07                                       ` Will Deacon
2010-09-03  9:07                                       ` Will Deacon
2010-09-03  8:58                                   ` Will Deacon
2010-09-03 12:12                               ` Shilimkar, Santosh
2010-09-03 12:12                                 ` Shilimkar, Santosh
2010-09-03 12:23                                 ` Will Deacon
2010-09-03 12:23                                 ` Will Deacon
2010-09-03 12:31                                   ` Shilimkar, Santosh
2010-09-03 12:31                                     ` Shilimkar, Santosh
2010-09-05  1:53                                 ` Michał Nazarewicz
2010-09-05  1:53                                   ` Michał Nazarewicz
2010-09-03 12:09                             ` [PATCH 1/6] ARM: Add inline function smp_on_up() " Shilimkar, Santosh
2010-09-03 12:09                               ` Shilimkar, Santosh
2010-09-06 10:17                               ` Bryan Wu
2010-09-06 10:17                                 ` Bryan Wu
2010-09-08  3:26                                 ` Tony Lindgren
2010-09-08  3:26                                   ` Tony Lindgren
2010-09-08 20:26                                   ` Tony Lindgren
2010-09-08 20:26                                     ` Tony Lindgren
2010-09-09  3:45                                     ` Bryan Wu
2010-09-09  3:45                                       ` Bryan Wu
2010-09-02 16:19                       ` [PATCH 2/6] ARM: Use SMP and UP macros for cacheflush Tony Lindgren
2010-09-02 16:19                         ` Tony Lindgren
2010-09-03 11:57                         ` Shilimkar, Santosh
2010-09-03 11:57                           ` Shilimkar, Santosh
2010-09-04 10:57                           ` Russell King - ARM Linux
2010-09-04 10:57                             ` Russell King - ARM Linux
2010-09-04 11:01                             ` Shilimkar, Santosh
2010-09-04 11:01                               ` Shilimkar, Santosh
2010-09-02 16:20                       ` [PATCH 3/6] ARM: Fix v7wbi_tlb_flags for SMP on UP Tony Lindgren
2010-09-02 16:20                         ` Tony Lindgren
2010-09-02 16:25                         ` Russell King - ARM Linux
2010-09-02 16:25                           ` Russell King - ARM Linux
2010-09-02 16:34                           ` Tony Lindgren
2010-09-02 16:34                             ` Tony Lindgren
2010-09-02 23:47                             ` Tony Lindgren
2010-09-02 23:47                               ` Tony Lindgren
2010-09-03  9:07                               ` Russell King - ARM Linux
2010-09-03  9:07                                 ` Russell King - ARM Linux
2010-09-03  9:10                                 ` Russell King - ARM Linux
2010-09-03  9:10                                   ` Russell King - ARM Linux
2010-09-03 17:04                                   ` Tony Lindgren
2010-09-03 17:04                                     ` Tony Lindgren
2010-09-03 19:36                                     ` Russell King - ARM Linux
2010-09-03 19:36                                       ` Russell King - ARM Linux
2010-09-06 11:46                                   ` Catalin Marinas
2010-09-06 11:46                                     ` Catalin Marinas
2010-09-06 15:34                                     ` Russell King - ARM Linux
2010-09-06 15:34                                       ` Russell King - ARM Linux
2010-09-06 15:53                                       ` Catalin Marinas
2010-09-06 15:53                                         ` Catalin Marinas
2010-09-06 16:36                                         ` Russell King - ARM Linux
2010-09-06 16:36                                           ` Russell King - ARM Linux
2010-09-06 17:11                                           ` Catalin Marinas
2010-09-06 17:11                                             ` Catalin Marinas
2010-09-02 16:21                       ` [PATCH 4/6] ARM: Do not call test_for_ipi or test_for_ltrirq on UP systems Tony Lindgren
2010-09-02 16:21                         ` Tony Lindgren
2010-09-03 12:00                         ` Shilimkar, Santosh
2010-09-03 12:00                           ` Shilimkar, Santosh
2010-09-04 10:55                           ` Russell King - ARM Linux
2010-09-04 10:55                             ` Russell King - ARM Linux
2010-09-04 10:55                         ` Russell King - ARM Linux
2010-09-04 10:55                           ` Russell King - ARM Linux
2010-09-02 16:22                       ` [PATCH 5/6] ARM: Don't set TLB ops broadcasting on UP ARMv7 Tony Lindgren
2010-09-02 16:22                         ` Tony Lindgren
2010-09-02 16:57                         ` Russell King - ARM Linux
2010-09-02 16:57                           ` Russell King - ARM Linux
2010-09-02 17:21                           ` Tony Lindgren
2010-09-02 17:21                             ` Tony Lindgren
2010-09-02 18:01                             ` Russell King - ARM Linux
2010-09-02 18:01                               ` Russell King - ARM Linux
2010-09-02 18:13                               ` Tony Lindgren
2010-09-02 18:13                                 ` Tony Lindgren
2010-09-02 18:18                                 ` Russell King - ARM Linux
2010-09-02 18:18                                   ` Russell King - ARM Linux
2010-09-02 16:23                       ` [PATCH 6/6] omap: Fix SMP on UP interrupt handling for multi-omap Tony Lindgren
2010-09-02 16:23                         ` Tony Lindgren
2010-09-02 19:30                         ` Tony Lindgren
2010-09-02 19:30                           ` Tony Lindgren
2010-09-03 12:15                           ` Shilimkar, Santosh
2010-09-03 12:15                             ` Shilimkar, Santosh
2010-09-08  3:30                             ` Tony Lindgren
2010-09-08  3:30                               ` Tony Lindgren
2010-09-03 12:06                         ` Shilimkar, Santosh
2010-09-03 12:06                           ` Shilimkar, Santosh
2010-09-04 11:05                           ` Russell King - ARM Linux
2010-09-04 11:05                             ` Russell King - ARM Linux
2010-09-04 11:22                             ` Shilimkar, Santosh
2010-09-04 11:22                               ` Shilimkar, Santosh
2010-09-03  4:20                       ` [PATCH 0/4] Hacks to allow booting ARM SMP kernel on UP ARMv7 Bryan Wu
2010-09-03  4:20                         ` Bryan Wu
2010-09-03  7:46                         ` Russell King - ARM Linux
2010-09-03  7:46                           ` Russell King - ARM Linux
2010-09-06  9:28                       ` Catalin Marinas
2010-09-06  9:28                         ` Catalin Marinas
2010-09-06  9:34                         ` Russell King - ARM Linux
2010-09-06  9:34                           ` Russell King - ARM Linux
2010-09-06  9:38                           ` Catalin Marinas
2010-09-06  9:38                             ` Catalin Marinas
2010-09-06 10:06                             ` Russell King - ARM Linux
2010-09-06 10:06                               ` Russell King - ARM Linux
2010-09-06 10:39                               ` Catalin Marinas
2010-09-06 10:39                                 ` Catalin Marinas
2010-09-02 13:33         ` Russell King - ARM Linux
2010-09-02 13:33           ` Russell King - ARM Linux
2010-09-03  1:39           ` Tony Lindgren [this message]
2010-09-03  1:39             ` Tony Lindgren
2010-08-23 16:59 ` Will Deacon
2010-08-23 16:59 ` Will Deacon
2010-08-30 22:53   ` Tony Lindgren
2010-08-30 22:53     ` Tony Lindgren
2010-09-06 10:44 ` Russell King - ARM Linux
2010-09-06 10:44   ` Russell King - ARM Linux
2010-09-06 15:16   ` Catalin Marinas
2010-09-06 15:16     ` Catalin Marinas
2010-09-06 18:03   ` Tony Lindgren
2010-09-06 18:03     ` Tony Lindgren
2010-09-08  3:09     ` Tony Lindgren
2010-09-08  3:09       ` Tony Lindgren
2010-09-08  3:12       ` [PATCH] ARM: Check for is_smp for tlb_ops and cache_ops boardcast Tony Lindgren
2010-09-08  3:12         ` Tony Lindgren
2010-09-08  3:14         ` [PATCH] ARM: Don't try to send IPI on UP systems with CONFIG_SMP Tony Lindgren
2010-09-08  3:14           ` Tony Lindgren
2010-09-08  3:17           ` [PATCH] omap: Fix CONFIG_LOCAL_TIMERS initialization for multi-omap Tony Lindgren
2010-09-08  3:17             ` Tony Lindgren
2010-09-08  7:26             ` Shilimkar, Santosh
2010-09-08  7:26               ` Shilimkar, Santosh
2010-09-08  7:30           ` [PATCH] ARM: Don't try to send IPI on UP systems with CONFIG_SMP Shilimkar, Santosh
2010-09-08  7:30             ` Shilimkar, Santosh
2010-09-08  8:56           ` Russell King - ARM Linux
2010-09-08  8:56             ` Russell King - ARM Linux
2010-09-08 19:32             ` Tony Lindgren
2010-09-08 19:32               ` Tony Lindgren
2010-10-05 22:19         ` [PATCH] ARM: Check for is_smp for tlb_ops and cache_ops boardcast Tony Lindgren
2010-10-05 22:19           ` Tony Lindgren
2010-10-05 22:33           ` Russell King - ARM Linux
2010-10-05 22:33             ` Russell King - ARM Linux
2010-10-06 14:44             ` Tony Lindgren
2010-10-06 14:44               ` Tony Lindgren
2010-10-06 22:33               ` Russell King - ARM Linux
2010-10-06 22:33                 ` Russell King - ARM Linux
2010-10-06 23:07                 ` Tony Lindgren
2010-10-06 23:07                   ` Tony Lindgren
2010-09-14 18:59   ` [PATCH] ARM: Handle __flush_icache_all for CONFIG_SMP_ON_UP Tony Lindgren
2010-09-14 18:59     ` Tony Lindgren
2010-09-14 19:03     ` [PATCH] omap: Update omap3_defconfig to work with SMP_ON_UP Tony Lindgren
2010-09-14 19:03       ` Tony Lindgren
2010-09-14 19:05       ` [PATCH] omap: Update omap3_defconfig for omap2 Tony Lindgren
2010-09-14 19:05         ` Tony Lindgren
2010-09-14 19:17       ` [PATCH] omap: Update omap3_defconfig to work with SMP_ON_UP Shilimkar, Santosh
2010-09-14 19:17         ` Shilimkar, Santosh
2010-09-14 20:27         ` Tony Lindgren
2010-09-14 20:27           ` Tony Lindgren
2010-09-15  6:11           ` Shilimkar, Santosh
2010-09-15  6:11             ` Shilimkar, Santosh
2010-09-15 16:11             ` Tony Lindgren
2010-09-15 16:11               ` Tony Lindgren
2010-09-15 18:25               ` Shilimkar, Santosh
2010-09-15 18:25                 ` Shilimkar, Santosh
2010-09-15 23:15                 ` Tony Lindgren
2010-09-15 23:15                   ` Tony Lindgren
2010-09-16 17:05     ` [PATCH] ARM: Handle __flush_icache_all for CONFIG_SMP_ON_UP Catalin Marinas
2010-09-16 17:05       ` Catalin Marinas
2010-09-21 16:16     ` Tony Lindgren
2010-09-21 16:16       ` Tony Lindgren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100903013940.GH11597@atomide.com \
    --to=tony@atomide.com \
    --cc=bryan.wu@canonical.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.