Re: [PATCH 1/6] ARM: Add inline function smp_on_up() for early init testing

2010-09-08 Thread Tony Lindgren
* Tony Lindgren t...@atomide.com [100907 20:19]:
 * Bryan Wu bryan...@canonical.com [100906 03:09]:
  Tony,
  
  I tried your latest branch: devel-smp-on-unicore, kernel boots up but
  got lots of WARN_ON fired:
  
  ---
  [ cut here ]
  [1.149719] WARNING: at mm/percpu-vm.c:320 pcpu_alloc+0x2fc/0x888()
  [1.149780] Modules linked in:
  [1.149841] [c01b34c8] (unwind_backtrace+0x0/0xe4) from
  [c01e939c] (warn_slowpath_common+0x4c/0x64)
  [1.149902] [c01e939c] (warn_slowpath_common+0x4c/0x64) from
  [c01e93cc] (warn_slowpath_null+0x18/0x1c)
  [1.149993] [c01e93cc] (warn_slowpath_null+0x18/0x1c) from
  [c0274730] (pcpu_alloc+0x2fc/0x888)
  [1.150085] [c0274730] (pcpu_alloc+0x2fc/0x888) from [c0279578]
  (sget+0x198/0x43c)
  [1.150146] [c0279578] (sget+0x198/0x43c) from [c0279adc]
  (get_sb_ns+0x20/0x90)
  [1.150238] [c0279adc] (get_sb_ns+0x20/0x90) from [c02791a4]
  (vfs_kern_mount+0x9c/0x18c)
  [1.150299] [c02791a4] (vfs_kern_mount+0x9c/0x18c) from
  [c0022280] (init_mqueue_fs+0x68/0xc8)
  [1.150390] [c0022280] (init_mqueue_fs+0x68/0xc8) from
  [c01ac5d0] (do_one_initcall+0xcc/0x1a4)
  [1.150451] [c01ac5d0] (do_one_initcall+0xcc/0x1a4) from
  [c0008760] (kernel_init+0x148/0x210)
  [1.150543] [c0008760] (kernel_init+0x148/0x210) from
  [c01adcf8] (kernel_thread_exit+0x0/0x8)
  [1.150604] ---[ end trace 1b75b31a2719ed74 ]---
  ---
  
  It looks like we still missed to set some flag for chuck.
 
 Yeah I think there's some .config option that needs to be handled
 properly to fix this.

This seems to disappear when CONFIG_LOCK_STAT is disabled,
I wonder why?

Here are my current changes to omap3_defconfig that I use for testing.

Tony
--- a/arch/arm/configs/omap3_defconfig
+++ b/arch/arm/configs/omap3_defconfig
@@ -55,6 +55,7 @@ CONFIG_MACH_OMAP_4430SDP=y
 CONFIG_ARM_THUMBEE=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
+CONFIG_SMP=y
 CONFIG_AEABI=y
 CONFIG_LEDS=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
@@ -218,9 +219,9 @@ CONFIG_USB_DEVICEFS=y
 CONFIG_USB_SUSPEND=y
 # CONFIG_USB_OTG_WHITELIST is not set
 CONFIG_USB_MON=y
-CONFIG_USB_MUSB_HDRC=y
-CONFIG_USB_MUSB_OTG=y
-CONFIG_USB_GADGET_MUSB_HDRC=y
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_MUSB_OTG is not set
+# CONFIG_USB_GADGET_MUSB_HDRC is not set
 CONFIG_USB_MUSB_DEBUG=y
 CONFIG_USB_WDM=y
 CONFIG_USB_STORAGE=y
@@ -276,7 +277,7 @@ CONFIG_DEBUG_KERNEL=y
 CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
 CONFIG_PROVE_LOCKING=y
-CONFIG_LOCK_STAT=y
+# CONFIG_LOCK_STAT is not set
 CONFIG_DEBUG_SPINLOCK_SLEEP=y
 # CONFIG_DEBUG_BUGVERBOSE is not set
 CONFIG_DEBUG_INFO=y
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/6] ARM: Add inline function smp_on_up() for early init testing

2010-09-08 Thread Bryan Wu
Tony,

Awesome, this makes SMP kernel work on my omap3 board.
Thanks a lot. I will test the same kernel on my omap4 one.

-Bryan.

On Thu, Sep 9, 2010 at 4:26 AM, Tony Lindgren t...@atomide.com wrote:
 * Tony Lindgren t...@atomide.com [100907 20:19]:
 * Bryan Wu bryan...@canonical.com [100906 03:09]:
  Tony,
 
  I tried your latest branch: devel-smp-on-unicore, kernel boots up but
  got lots of WARN_ON fired:
 
  ---
  [ cut here ]
  [    1.149719] WARNING: at mm/percpu-vm.c:320 pcpu_alloc+0x2fc/0x888()
  [    1.149780] Modules linked in:
  [    1.149841] [c01b34c8] (unwind_backtrace+0x0/0xe4) from
  [c01e939c] (warn_slowpath_common+0x4c/0x64)
  [    1.149902] [c01e939c] (warn_slowpath_common+0x4c/0x64) from
  [c01e93cc] (warn_slowpath_null+0x18/0x1c)
  [    1.149993] [c01e93cc] (warn_slowpath_null+0x18/0x1c) from
  [c0274730] (pcpu_alloc+0x2fc/0x888)
  [    1.150085] [c0274730] (pcpu_alloc+0x2fc/0x888) from [c0279578]
  (sget+0x198/0x43c)
  [    1.150146] [c0279578] (sget+0x198/0x43c) from [c0279adc]
  (get_sb_ns+0x20/0x90)
  [    1.150238] [c0279adc] (get_sb_ns+0x20/0x90) from [c02791a4]
  (vfs_kern_mount+0x9c/0x18c)
  [    1.150299] [c02791a4] (vfs_kern_mount+0x9c/0x18c) from
  [c0022280] (init_mqueue_fs+0x68/0xc8)
  [    1.150390] [c0022280] (init_mqueue_fs+0x68/0xc8) from
  [c01ac5d0] (do_one_initcall+0xcc/0x1a4)
  [    1.150451] [c01ac5d0] (do_one_initcall+0xcc/0x1a4) from
  [c0008760] (kernel_init+0x148/0x210)
  [    1.150543] [c0008760] (kernel_init+0x148/0x210) from
  [c01adcf8] (kernel_thread_exit+0x0/0x8)
  [    1.150604] ---[ end trace 1b75b31a2719ed74 ]---
  ---
 
  It looks like we still missed to set some flag for chuck.

 Yeah I think there's some .config option that needs to be handled
 properly to fix this.

 This seems to disappear when CONFIG_LOCK_STAT is disabled,
 I wonder why?

 Here are my current changes to omap3_defconfig that I use for testing.

 Tony
 --- a/arch/arm/configs/omap3_defconfig
 +++ b/arch/arm/configs/omap3_defconfig
 @@ -55,6 +55,7 @@ CONFIG_MACH_OMAP_4430SDP=y
  CONFIG_ARM_THUMBEE=y
  CONFIG_NO_HZ=y
  CONFIG_HIGH_RES_TIMERS=y
 +CONFIG_SMP=y
  CONFIG_AEABI=y
  CONFIG_LEDS=y
  CONFIG_ZBOOT_ROM_TEXT=0x0
 @@ -218,9 +219,9 @@ CONFIG_USB_DEVICEFS=y
  CONFIG_USB_SUSPEND=y
  # CONFIG_USB_OTG_WHITELIST is not set
  CONFIG_USB_MON=y
 -CONFIG_USB_MUSB_HDRC=y
 -CONFIG_USB_MUSB_OTG=y
 -CONFIG_USB_GADGET_MUSB_HDRC=y
 +# CONFIG_USB_MUSB_HDRC is not set
 +# CONFIG_USB_MUSB_OTG is not set
 +# CONFIG_USB_GADGET_MUSB_HDRC is not set
  CONFIG_USB_MUSB_DEBUG=y
  CONFIG_USB_WDM=y
  CONFIG_USB_STORAGE=y
 @@ -276,7 +277,7 @@ CONFIG_DEBUG_KERNEL=y
  CONFIG_SCHEDSTATS=y
  CONFIG_TIMER_STATS=y
  CONFIG_PROVE_LOCKING=y
 -CONFIG_LOCK_STAT=y
 +# CONFIG_LOCK_STAT is not set
  CONFIG_DEBUG_SPINLOCK_SLEEP=y
  # CONFIG_DEBUG_BUGVERBOSE is not set
  CONFIG_DEBUG_INFO=y




-- 
Bryan Wu bryan...@canonical.com
Kernel Developer    +86.138-1617-6545 Mobile
Ubuntu Kernel Team
Canonical Ltd.      www.canonical.com
Ubuntu - Linux for human beings | www.ubuntu.com
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/6] ARM: Add inline function smp_on_up() for early init testing

2010-09-07 Thread Tony Lindgren
* Bryan Wu bryan...@canonical.com [100906 03:09]:
 Tony,
 
 I tried your latest branch: devel-smp-on-unicore, kernel boots up but
 got lots of WARN_ON fired:
 
 ---
 [ cut here ]
 [1.149719] WARNING: at mm/percpu-vm.c:320 pcpu_alloc+0x2fc/0x888()
 [1.149780] Modules linked in:
 [1.149841] [c01b34c8] (unwind_backtrace+0x0/0xe4) from
 [c01e939c] (warn_slowpath_common+0x4c/0x64)
 [1.149902] [c01e939c] (warn_slowpath_common+0x4c/0x64) from
 [c01e93cc] (warn_slowpath_null+0x18/0x1c)
 [1.149993] [c01e93cc] (warn_slowpath_null+0x18/0x1c) from
 [c0274730] (pcpu_alloc+0x2fc/0x888)
 [1.150085] [c0274730] (pcpu_alloc+0x2fc/0x888) from [c0279578]
 (sget+0x198/0x43c)
 [1.150146] [c0279578] (sget+0x198/0x43c) from [c0279adc]
 (get_sb_ns+0x20/0x90)
 [1.150238] [c0279adc] (get_sb_ns+0x20/0x90) from [c02791a4]
 (vfs_kern_mount+0x9c/0x18c)
 [1.150299] [c02791a4] (vfs_kern_mount+0x9c/0x18c) from
 [c0022280] (init_mqueue_fs+0x68/0xc8)
 [1.150390] [c0022280] (init_mqueue_fs+0x68/0xc8) from
 [c01ac5d0] (do_one_initcall+0xcc/0x1a4)
 [1.150451] [c01ac5d0] (do_one_initcall+0xcc/0x1a4) from
 [c0008760] (kernel_init+0x148/0x210)
 [1.150543] [c0008760] (kernel_init+0x148/0x210) from
 [c01adcf8] (kernel_thread_exit+0x0/0x8)
 [1.150604] ---[ end trace 1b75b31a2719ed74 ]---
 ---
 
 It looks like we still missed to set some flag for chuck.

Yeah I think there's some .config option that needs to be handled
properly to fix this.

Looks like the following .config does not produce it, but fails
to boot to shell on omap2. Doing yes  | make oldconfig
and enabling CONFIG_SMP etc on makes the warning to happen.

Also, disabling CONFIG_USB_MUSB_HDRC is needed as that driver
is still broken for multi-omap..

Regards,

Tony
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.36-rc3
# Tue Sep  7 18:42:21 2010
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_GENERIC_GPIO=y
# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_HAVE_PROC_CPU=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_LOCKBREAK=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_ARCH_HAS_CPUFREQ=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_ARM_L1_CACHE_SHIFT_6=y
CONFIG_VECTORS_BASE=0x
CONFIG_DEFCONFIG_LIST=/lib/modules/$UNAME_RELEASE/.config
CONFIG_CONSTRUCTORS=y

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=
CONFIG_LOCALVERSION=
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_LZO=y
# CONFIG_KERNEL_GZIP is not set
CONFIG_KERNEL_LZMA=y
# CONFIG_KERNEL_LZO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set

#
# RCU Subsystem
#
CONFIG_TREE_RCU=y
# CONFIG_TREE_PREEMPT_RCU is not set
# CONFIG_RCU_TRACE is not set
CONFIG_RCU_FANOUT=32
# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_RCU_FAST_NO_HZ is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=17
# CONFIG_CGROUPS is not set
# CONFIG_SYSFS_DEPRECATED_V2 is not set
# CONFIG_RELAY is not set
# CONFIG_NAMESPACES is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=
CONFIG_RD_GZIP=y
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not set
# CONFIG_RD_LZO is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_EXTRA_PASS=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y

#
# Kernel Performance Events And Counters
#
CONFIG_PERF_EVENTS=y
# CONFIG_PERF_COUNTERS is not set
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not set
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y

#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# 

Re: [PATCH 1/6] ARM: Add inline function smp_on_up() for early init testing

2010-09-06 Thread Bryan Wu
Tony,

I tried your latest branch: devel-smp-on-unicore, kernel boots up but
got lots of WARN_ON fired:

---
[ cut here ]
[1.149719] WARNING: at mm/percpu-vm.c:320 pcpu_alloc+0x2fc/0x888()
[1.149780] Modules linked in:
[1.149841] [c01b34c8] (unwind_backtrace+0x0/0xe4) from
[c01e939c] (warn_slowpath_common+0x4c/0x64)
[1.149902] [c01e939c] (warn_slowpath_common+0x4c/0x64) from
[c01e93cc] (warn_slowpath_null+0x18/0x1c)
[1.149993] [c01e93cc] (warn_slowpath_null+0x18/0x1c) from
[c0274730] (pcpu_alloc+0x2fc/0x888)
[1.150085] [c0274730] (pcpu_alloc+0x2fc/0x888) from [c0279578]
(sget+0x198/0x43c)
[1.150146] [c0279578] (sget+0x198/0x43c) from [c0279adc]
(get_sb_ns+0x20/0x90)
[1.150238] [c0279adc] (get_sb_ns+0x20/0x90) from [c02791a4]
(vfs_kern_mount+0x9c/0x18c)
[1.150299] [c02791a4] (vfs_kern_mount+0x9c/0x18c) from
[c0022280] (init_mqueue_fs+0x68/0xc8)
[1.150390] [c0022280] (init_mqueue_fs+0x68/0xc8) from
[c01ac5d0] (do_one_initcall+0xcc/0x1a4)
[1.150451] [c01ac5d0] (do_one_initcall+0xcc/0x1a4) from
[c0008760] (kernel_init+0x148/0x210)
[1.150543] [c0008760] (kernel_init+0x148/0x210) from
[c01adcf8] (kernel_thread_exit+0x0/0x8)
[1.150604] ---[ end trace 1b75b31a2719ed74 ]---
---

It looks like we still missed to set some flag for chuck.

-Bryan

On Fri, Sep 3, 2010 at 8:09 PM, Shilimkar, Santosh
santosh.shilim...@ti.com wrote:


 -Original Message-
 From: linux-omap-ow...@vger.kernel.org [mailto:linux-omap-
 ow...@vger.kernel.org] On Behalf Of Tony Lindgren
 Sent: Thursday, September 02, 2010 11:13 PM
 To: Russell King - ARM Linux
 Cc: linux-omap@vger.kernel.org; linux-arm-ker...@lists.infradead.org;
 Bryan Wu; Will Deacon
 Subject: Re: [PATCH 1/6] ARM: Add inline function smp_on_up() for early
 init testing

 * Russell King - ARM Linux li...@arm.linux.org.uk [100902 10:00]:
  On Thu, Sep 02, 2010 at 09:18:47AM -0700, Tony Lindgren wrote:
 
   --- a/arch/arm/include/asm/smp_plat.h
   +++ b/arch/arm/include/asm/smp_plat.h
   @@ -39,4 +39,20 @@ static inline int cache_ops_need_broadcast(void)
    #define UP(instr...)     _str(instr)
    #endif
  
   +static inline int smp_on_up(void)
   +{
   +#ifdef CONFIG_SMP_ON_UP
   + int smp_on_up;
   +
   + asm(                                                    \
   +         SMP(mov %0, #0)                                 \
   +         UP(mov  %0, #1)                                 \
   +         : =r (smp_on_up));
   +
   + return smp_on_up;
   +#else
   + return 0;
   +#endif
 
  I think this is the wrong approach - rather than a function which tells
 us
  just if we are a SMP kernel running on UP, why not something which
 returns
  whether we're running on SMP and use that to eliminate some of these
 ifdefs?

 Sure. Will has something like this in his patches:

 static inline int cpu_is_part_of_mp_system(void)
 {
       u32 mpidr;
       asm volatile(mrc p15, 0, %0, c0, c0, 5 : =r (mpidr));
       return (mpidr  31) ? !(mpidr  30) : 0;
 }

 I guess this register is only available on MP Core extensions.

 Regards,
 Santosh

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 1/6] ARM: Add inline function smp_on_up() for early init testing

2010-09-03 Thread Shilimkar, Santosh


 -Original Message-
 From: linux-omap-ow...@vger.kernel.org [mailto:linux-omap-
 ow...@vger.kernel.org] On Behalf Of Tony Lindgren
 Sent: Thursday, September 02, 2010 11:13 PM
 To: Russell King - ARM Linux
 Cc: linux-omap@vger.kernel.org; linux-arm-ker...@lists.infradead.org;
 Bryan Wu; Will Deacon
 Subject: Re: [PATCH 1/6] ARM: Add inline function smp_on_up() for early
 init testing
 
 * Russell King - ARM Linux li...@arm.linux.org.uk [100902 10:00]:
  On Thu, Sep 02, 2010 at 09:18:47AM -0700, Tony Lindgren wrote:
 
   --- a/arch/arm/include/asm/smp_plat.h
   +++ b/arch/arm/include/asm/smp_plat.h
   @@ -39,4 +39,20 @@ static inline int cache_ops_need_broadcast(void)
#define UP(instr...) _str(instr)
#endif
  
   +static inline int smp_on_up(void)
   +{
   +#ifdef CONFIG_SMP_ON_UP
   + int smp_on_up;
   +
   + asm(\
   + SMP(mov %0, #0) \
   + UP(mov  %0, #1) \
   + : =r (smp_on_up));
   +
   + return smp_on_up;
   +#else
   + return 0;
   +#endif
 
  I think this is the wrong approach - rather than a function which tells
 us
  just if we are a SMP kernel running on UP, why not something which
 returns
  whether we're running on SMP and use that to eliminate some of these
 ifdefs?
 
 Sure. Will has something like this in his patches:
 
 static inline int cpu_is_part_of_mp_system(void)
 {
   u32 mpidr;
   asm volatile(mrc p15, 0, %0, c0, c0, 5 : =r (mpidr));
   return (mpidr  31) ? !(mpidr  30) : 0;
 }

I guess this register is only available on MP Core extensions.

Regards,
Santosh
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/6] ARM: Add inline function smp_on_up() for early init testing

2010-09-02 Thread Russell King - ARM Linux
On Thu, Sep 02, 2010 at 09:18:47AM -0700, Tony Lindgren wrote:
 From 7044c13594c3023da6095f8d432eda260bc3207f Mon Sep 17 00:00:00 2001
 From: Tony Lindgren t...@atomide.com
 Date: Mon, 30 Aug 2010 14:00:54 -0700
 Subject: [PATCH 1/6] ARM: Add inline function smp_on_up() for early init 
 testing
 
 Add inline function smp_on_up() for early init checks, and
 change build_mem_type_table to use it.

Isn't something missing from this - such as a C-mode definition of
SMP() and UP() ?

 diff --git a/arch/arm/include/asm/smp_plat.h b/arch/arm/include/asm/smp_plat.h
 index 8db3512..5ef4114 100644
 --- a/arch/arm/include/asm/smp_plat.h
 +++ b/arch/arm/include/asm/smp_plat.h
 @@ -39,4 +39,20 @@ static inline int cache_ops_need_broadcast(void)
  #define UP(instr...) _str(instr)
  #endif
  
 +static inline int smp_on_up(void)
 +{
 +#ifdef CONFIG_SMP_ON_UP
 + int smp_on_up;
 +
 + asm(\
 + SMP(mov %0, #0) \
 + UP(mov  %0, #1) \
 + : =r (smp_on_up));
 +
 + return smp_on_up;
 +#else
 + return 0;
 +#endif

I think this is the wrong approach - rather than a function which tells us
just if we are a SMP kernel running on UP, why not something which returns
whether we're running on SMP and use that to eliminate some of these ifdefs?
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/6] ARM: Add inline function smp_on_up() for early init testing

2010-09-02 Thread Tony Lindgren
* Russell King - ARM Linux li...@arm.linux.org.uk [100902 10:00]:
 On Thu, Sep 02, 2010 at 09:18:47AM -0700, Tony Lindgren wrote:
 
  --- a/arch/arm/include/asm/smp_plat.h
  +++ b/arch/arm/include/asm/smp_plat.h
  @@ -39,4 +39,20 @@ static inline int cache_ops_need_broadcast(void)
   #define UP(instr...)   _str(instr)
   #endif
   
  +static inline int smp_on_up(void)
  +{
  +#ifdef CONFIG_SMP_ON_UP
  +   int smp_on_up;
  +
  +   asm(\
  +   SMP(mov %0, #0) \
  +   UP(mov  %0, #1) \
  +   : =r (smp_on_up));
  +
  +   return smp_on_up;
  +#else
  +   return 0;
  +#endif
 
 I think this is the wrong approach - rather than a function which tells us
 just if we are a SMP kernel running on UP, why not something which returns
 whether we're running on SMP and use that to eliminate some of these ifdefs?

Sure. Will has something like this in his patches:

static inline int cpu_is_part_of_mp_system(void)
{
u32 mpidr;
asm volatile(mrc p15, 0, %0, c0, c0, 5 : =r (mpidr));
return (mpidr  31) ? !(mpidr  30) : 0;
}

BTW, so far looks like we should only need this during init to set up things.

Regards,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html