Skip to content
  1. Jan 12, 2011
    • Koen Kooi's avatar
      omap3: beaglexm: fix power on of DVI · 1bd9ef19
      Koen Kooi authored
      
      
      TFP410 DVI chip is used to provide display out.
      This chip is controlled by 2 lines:
      LDO which supplies the power is controlled over gpio + 2
      and the enable of the chip itself is done over gpio + 1
      NOTE: the LDO is necessary for LED, serial blocks as well.
      
      gpio + 1 was used to sense USB overcurrent in vanilla beagle.
      
      Without this fix, the display would not function as the LDO
      remains shut down.
      
      [nm@ti.com: split up, added descriptive changelogs]
      Signed-off-by: default avatarNishanth Menon <nm@ti.com>
      Signed-off-by: default avatarKoen Kooi <koen@beagleboard.org>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      1bd9ef19
  2. Jan 11, 2011
  3. Jan 10, 2011
  4. Jan 07, 2011
    • Santosh Shilimkar's avatar
      omap2plus: prm: Trvial build break fix for undefined reference to 'omap2_prm_read_mod_reg' · 56a6a19d
      Santosh Shilimkar authored
      
      
      omap2plus_defocnfig build breaks when customised with only ARCH_OMAP4
      selected. This is because common files make references to the functions
      which are defined only for omap2xxx and omap3xxx.
      
       LD      .tmp_vmlinux1
      arch/arm/mach-omap2/built-in.o: In function `pm_dbg_regset_store':
      arch/arm/mach-omap2/pm-debug.c:335: undefined reference to `omap2_prm_read_mod_reg'
      arch/arm/mach-omap2/built-in.o: In function `omap2_pm_dump':
      arch/arm/mach-omap2/pm-debug.c:121: undefined reference to `omap2_prm_read_mod_reg'
      arch/arm/mach-omap2/pm-debug.c:123: undefined reference to `omap2_prm_read_mod_reg'
      arch/arm/mach-omap2/pm-debug.c:124: undefined reference to `omap2_prm_read_mod_reg'
      arch/arm/mach-omap2/pm-debug.c:125: undefined reference to `omap2_prm_read_mod_reg'
      arch/arm/mach-omap2/built-in.o: In function `omap_prcm_arch_reset':
      arch/arm/mach-omap2/prcm.c:106: undefined reference to `omap2_prm_set_mod_reg_bits'
      arch/arm/mach-omap2/prcm.c:108: undefined reference to `omap2_prm_read_mod_reg'
      arch/arm/mach-omap2/built-in.o: In function `omap_prcm_get_reset_sources':
      arch/arm/mach-omap2/prcm.c:53: undefined reference to `omap2_prm_read_mod_reg'
      arch/arm/mach-omap2/built-in.o: In function `clkdm_clear_all_wkdeps':
      arch/arm/mach-omap2/clockdomain.c:545: undefined reference to `omap2_prm_clear_mod_reg_bits'
      arch/arm/mach-omap2/built-in.o: In function `clkdm_del_wkdep':
      arch/arm/mach-omap2/clockdomain.c:475: undefined reference to `omap2_prm_clear_mod_reg_bits'
      arch/arm/mach-omap2/built-in.o: In function `clkdm_read_wkdep':
      arch/arm/mach-omap2/clockdomain.c:511: undefined reference to `omap2_prm_read_mod_bits_shift'
      arch/arm/mach-omap2/built-in.o: In function `clkdm_add_wkdep':
      arch/arm/mach-omap2/clockdomain.c:440: undefined reference to `omap2_prm_set_mod_reg_bits'
      make: *** [.tmp_vmlinux1] Error 1
      
      This patch adds stubs for these functions so that build continues to work.
      
      Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Acked-by: default avatarPaul Walmsley <paul@pwsan.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      56a6a19d
    • Santosh Shilimkar's avatar
      omap2plus: voltage: Trivial linking fix for 'EINVAL' undeclared · faacebc5
      Santosh Shilimkar authored
      
      
      CC      arch/arm/mach-omap2/omap_hwmod_common_data.o
      In file included from arch/arm/plat-omap/include/plat/omap_hwmod.h:38,
                       from arch/arm/mach-omap2/omap_hwmod_common_data.c:20:
      arch/arm/plat-omap/include/plat/voltage.h: In function 'omap_voltage_late_init':
      arch/arm/plat-omap/include/plat/voltage.h:145: error: 'EINVAL' undeclared (first use in this function)
      arch/arm/plat-omap/include/plat/voltage.h:145: error: (Each undeclared identifier is reported only once
      arch/arm/plat-omap/include/plat/voltage.h:145: error: for each function it appears in.)
      make[1]: *** [arch/arm/mach-omap2/omap_hwmod_common_data.o] Error 1
      make: *** [arch/arm/mach-omap2] Error 2
      
      The error is reported when omap2plus_defconfig built with CONFIG_PM disabled
      
      Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Cc: Thara Gopinath <thara@ti.com>
      Cc: Kevin Hilman <khilman@deeprootsystems.com>
      Cc: Nishanth Menon <nm@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      faacebc5
    • Santosh Shilimkar's avatar
      omap2plus: voltage: Trivial linking fix 'undefined reference' · dd361b6f
      Santosh Shilimkar authored
      
      
      LD      init/built-in.o
      LD      .tmp_vmlinux1
      arch/arm/mach-omap2/built-in.o: In function `omap2_set_init_voltage':
      arch/arm/mach-omap2/pm.c:181: undefined reference to `omap_voltage_domain_lookup'
      arch/arm/mach-omap2/built-in.o: In function `omap4_twl_init':
      arch/arm/mach-omap2/omap_twl.c:244: undefined reference to `omap_voltage_domain_lookup'
      arch/arm/mach-omap2/omap_twl.c:247: undefined reference to `omap_voltage_domain_lookup'
      arch/arm/mach-omap2/omap_twl.c:250: undefined reference to `omap_voltage_domain_lookup'
      make: *** [.tmp_vmlinux1] Error 1
      
      The error is reported when omap2plus_defconfig built with CONFIG_PM disabled
      
      Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Cc: Thara Gopinath <thara@ti.com>
      Cc: Kevin Hilman <khilman@deeprootsystems.com>
      Cc: Nishanth Menon <nm@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      dd361b6f
    • Santosh Shilimkar's avatar
      omap2plus: voltage: Trivial warning fix 'no return statement' · d7e08f1b
      Santosh Shilimkar authored
      
      
      Fix below build warnings
      
       CC      arch/arm/mach-omap2/common.o
        CC      arch/arm/mach-omap2/gpio.o
      In file included from arch/arm/plat-omap/include/plat/omap_hwmod.h:38,
                       from arch/arm/mach-omap2/gpio.c:25:
      arch/arm/plat-omap/include/plat/voltage.h: In function 'omap_voltage_register_pmic':
      arch/arm/plat-omap/include/plat/voltage.h:137: warning: no return statement in function returning non-void
        CC      arch/arm/mach-omap2/dma.o
      In file included from arch/arm/plat-omap/include/plat/omap_hwmod.h:38,
                       from arch/arm/mach-omap2/dma.c:32:
      arch/arm/plat-omap/include/plat/voltage.h: In function 'omap_voltage_register_pmic':
      arch/arm/plat-omap/include/plat/voltage.h:137: warning: no return statement in function returning non-void
        CC      arch/arm/mach-omap2/wd_timer.o
      In file included from arch/arm/plat-omap/include/plat/omap_hwmod.h:38,
                       from arch/arm/mach-omap2/wd_timer.c:15:
      arch/arm/plat-omap/include/plat/voltage.h: In function 'omap_voltage_register_pmic':
      arch/arm/plat-omap/include/plat/voltage.h:137: warning: no return statement in function returning non-void
        CC      arch/arm/mach-omap2/prm44xx.o
        CC      arch/arm/mach-omap2/omap_hwmod.o
      In file included from arch/arm/plat-omap/include/plat/omap_hwmod.h:38,
                       from arch/arm/mach-omap2/omap_hwmod.c:145:
      arch/arm/plat-omap/include/plat/voltage.h: In function 'omap_voltage_register_pmic':
      arch/arm/plat-omap/include/plat/voltage.h:137: warning: no return statement in function returning non-void
        CC      arch/arm/mach-omap2/omap_hwmod_common_data.o
      In file included from arch/arm/plat-omap/include/plat/omap_hwmod.h:38,
                       from arch/arm/mach-omap2/omap_hwmod_common_data.c:20:
      arch/arm/plat-omap/include/plat/voltage.h: In function 'omap_voltage_register_pmic':
      arch/arm/plat-omap/include/plat/voltage.h:137: warning: no return statement in function returning non-void
      
      The error is reported when omap2plus_defconfig built with CONFIG_PM disabled
      
      Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Cc: Thara Gopinath <thara@ti.com>
      Cc: Kevin Hilman <khilman@deeprootsystems.com>
      Cc: Nishanth Menon <nm@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      d7e08f1b
    • Santosh Shilimkar's avatar
      omap2plus: clockdomain: Trivial fix for build break because of clktrctrl_mask · 30299137
      Santosh Shilimkar authored
      
      
      struct clockdomain member clktrctrl_mask is available for only for OMAP2
      and OMAP3 architectures. Technially it is also used only for these archs
      but this breaks the build with custom OMAP4 configuration.
      
       CC      arch/arm/mach-omap2/clockdomain.o
      arch/arm/mach-omap2/clockdomain.c: In function '_enable_hwsup':
      arch/arm/mach-omap2/clockdomain.c:251: error: 'struct clockdomain' has no member named 'clktrctrl_mask'
      arch/arm/mach-omap2/clockdomain.c:254: error: 'struct clockdomain' has no member named 'clktrctrl_mask'
      arch/arm/mach-omap2/clockdomain.c: In function '_disable_hwsup':
      arch/arm/mach-omap2/clockdomain.c:277: error: 'struct clockdomain' has no member named 'clktrctrl_mask'
      arch/arm/mach-omap2/clockdomain.c:280: error: 'struct clockdomain' has no member named 'clktrctrl_mask'
      arch/arm/mach-omap2/clockdomain.c: In function 'omap2_clkdm_sleep':
      arch/arm/mach-omap2/clockdomain.c:744: error: 'struct clockdomain' has no member named 'clktrctrl_mask'
      arch/arm/mach-omap2/clockdomain.c: In function 'omap2_clkdm_wakeup':
      arch/arm/mach-omap2/clockdomain.c:789: error: 'struct clockdomain' has no member named 'clktrctrl_mask'
      arch/arm/mach-omap2/clockdomain.c: In function 'omap2_clkdm_clk_enable':
      arch/arm/mach-omap2/clockdomain.c:922: error: 'struct clockdomain' has no member named 'clktrctrl_mask'
      arch/arm/mach-omap2/clockdomain.c:926: error: 'struct clockdomain' has no member named 'clktrctrl_mask'
      arch/arm/mach-omap2/clockdomain.c: In function 'omap2_clkdm_clk_disable':
      arch/arm/mach-omap2/clockdomain.c:994: error: 'struct clockdomain' has no member named 'clktrctrl_mask'
      arch/arm/mach-omap2/clockdomain.c:998: error: 'struct clockdomain' has no member named 'clktrctrl_mask'
      make[1]: *** [arch/arm/mach-omap2/clockdomain.o] Error 1
      make: *** [arch/arm/mach-omap2] Error 2
      
      Fix the build break by dropping the #ifdef as suggested by Paul Walmsley
      
      Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Acked-by: default avatarPaul Walmsley <paul@pwsan.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      30299137
    • Felipe Balbi's avatar
      arm: omap: gpio: don't access irq_desc array directly · 1a9b5878
      Felipe Balbi authored
      
      
      Instead of accessing the irq_desc array directly
      we can use irq_to_desc(irq). That will allow us to,
      if wanted, select SPARSE_IRQ and irq_descs will be
      added to a radix tree, instead of a array.
      
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      1a9b5878
    • Nishanth Menon's avatar
      omap2+: pm_bus: make functions used as pointers as static · b97c374d
      Nishanth Menon authored
      
      
      omap_pm_runtime_suspend and omap_pm_runtime_resume are used
      as function pointers and does not really need to be exposed
      to the world.
      
      Fixes sparse warnings:
      arch/arm/mach-omap2/pm_bus.c:23:5: warning: symbol 'omap_pm_runtime_suspend' was not declared. Should it be static?
      arch/arm/mach-omap2/pm_bus.c:40:5: warning: symbol 'omap_pm_runtime_resume' was not declared. Should it be static?
      
      Signed-off-by: default avatarNishanth Menon <nm@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      b97c374d
    • Mika Westerberg's avatar
      OMAP: GPIO: fix _set_gpio_triggering() for OMAP2+ · f7c5cc45
      Mika Westerberg authored
      
      
      In case on OMAP2+ we call set_24xx_gpio_triggering() instead of
      updating reg and l values. However, at the end of the function we
      perform a write:
      
      	__raw_writel(l, reg);
      
      So on OMAP2+ we end up writing 0 to the bank->base which is not
      correct (typically this points to GPIO_REVISION register).
      
      Fix this by returning immediately after call to
      set_24xx_gpio_triggering().
      
      Signed-off-by: default avatarMika Westerberg <ext-mika.1.westerberg@nokia.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      f7c5cc45
    • Nishanth Menon's avatar
      OMAP2+: TWL: include pm header for init protos · dda0aea7
      Nishanth Menon authored
      
      
      twl_init functions are declared in pm.h and used in pm.c
      pm.h header defining the protos need to be included to
      ensure that omap_twl.c has consistent function definition.
      This fixes sparse warning:
      arch/arm/mach-omap2/omap_twl.c:237:12: warning: symbol 'omap4_twl_init' was not declared. Should it be static?
      arch/arm/mach-omap2/omap_twl.c:256:12: warning: symbol 'omap3_twl_init' was not declared. Should it be static?
      
      Signed-off-by: default avatarNishanth Menon <nm@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      dda0aea7
    • Nishanth Menon's avatar
      OMAP2+: TWL: make conversion routines static · c84ff1cc
      Nishanth Menon authored
      
      
      The uv_to_vsel, vsel_to_uv functions don't need to be exposed to the
      world as they are used as function pointers. make them static.
      
      Fixes sparse warnings:
      arch/arm/mach-omap2/omap_twl.c:63:15: warning: symbol 'twl4030_vsel_to_uv' was not declared. Should it be static?
      arch/arm/mach-omap2/omap_twl.c:68:4: warning: symbol 'twl4030_uv_to_vsel' was not declared. Should it be static?
      arch/arm/mach-omap2/omap_twl.c:73:15: warning: symbol 'twl6030_vsel_to_uv' was not declared. Should it be static?
      arch/arm/mach-omap2/omap_twl.c:105:4: warning: symbol 'twl6030_uv_to_vsel' was not declared. Should it be static?
      
      Signed-off-by: default avatarNishanth Menon <nm@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      c84ff1cc
    • Nishanth Menon's avatar
      OMAP3+: sr_device: include pm header · d0eadf6d
      Nishanth Menon authored
      
      
      omap_enable_smartreflex_on_init is meant to be used by boards
      which would like to have SR enabled by default on the platform, while
      omap_devinit_smartreflex is used by pm code, the protos are defined
      in pm.h. This header should be included to ensure that sr_device
      function definitions match the prototypes.
      
      including pm.h fixes the sparse warnings (with CONFIG_OMAP_SMARTREFLEX=y):
      arch/arm/mach-omap2/sr_device.c:138:13: warning: symbol 'omap_enable_smartreflex_on_init' was not declared. Should it be static?
      arch/arm/mach-omap2/sr_device.c:143:12: warning: symbol 'omap_devinit_smartreflex' was not declared. Should it be static?
      
      Signed-off-by: default avatarNishanth Menon <nm@ti.com>
      Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
      d0eadf6d
    • Nicholas Piggin's avatar
      fs: scale mntget/mntput · b3e19d92
      Nicholas Piggin authored
      
      
      The problem that this patch aims to fix is vfsmount refcounting scalability.
      We need to take a reference on the vfsmount for every successful path lookup,
      which often go to the same mount point.
      
      The fundamental difficulty is that a "simple" reference count can never be made
      scalable, because any time a reference is dropped, we must check whether that
      was the last reference. To do that requires communication with all other CPUs
      that may have taken a reference count.
      
      We can make refcounts more scalable in a couple of ways, involving keeping
      distributed counters, and checking for the global-zero condition less
      frequently.
      
      - check the global sum once every interval (this will delay zero detection
        for some interval, so it's probably a showstopper for vfsmounts).
      
      - keep a local count and only taking the global sum when local reaches 0 (this
        is difficult for vfsmounts, because we can't hold preempt off for the life of
        a reference, so a counter would need to be per-thread or tied strongly to a
        particular CPU which requires more locking).
      
      - keep a local difference of increments and decrements, which allows us to sum
        the total difference and hence find the refcount when summing all CPUs. Then,
        keep a single integer "long" refcount for slow and long lasting references,
        and only take the global sum of local counters when the long refcount is 0.
      
      This last scheme is what I implemented here. Attached mounts and process root
      and working directory references are "long" references, and everything else is
      a short reference.
      
      This allows scalable vfsmount references during path walking over mounted
      subtrees and unattached (lazy umounted) mounts with processes still running
      in them.
      
      This results in one fewer atomic op in the fastpath: mntget is now just a
      per-CPU inc, rather than an atomic inc; and mntput just requires a spinlock
      and non-atomic decrement in the common case. However code is otherwise bigger
      and heavier, so single threaded performance is basically a wash.
      
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      b3e19d92
    • Nicholas Piggin's avatar
      fs: dcache reduce branches in lookup path · fb045adb
      Nicholas Piggin authored
      
      
      Reduce some branches and memory accesses in dcache lookup by adding dentry
      flags to indicate common d_ops are set, rather than having to check them.
      This saves a pointer memory access (dentry->d_op) in common path lookup
      situations, and saves another pointer load and branch in cases where we
      have d_op but not the particular operation.
      
      Patched with:
      
      git grep -E '[.>]([[:space:]])*d_op([[:space:]])*=' | xargs sed -e 's/\([^\t ]*\)->d_op = \(.*\);/d_set_d_op(\1, \2);/' -e 's/\([^\t ]*\)\.d_op = \(.*\);/d_set_d_op(\&\1, \2);/' -i
      
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      fb045adb
    • Nicholas Piggin's avatar
      fs: icache RCU free inodes · fa0d7e3d
      Nicholas Piggin authored
      
      
      RCU free the struct inode. This will allow:
      
      - Subsequent store-free path walking patch. The inode must be consulted for
        permissions when walking, so an RCU inode reference is a must.
      - sb_inode_list_lock to be moved inside i_lock because sb list walkers who want
        to take i_lock no longer need to take sb_inode_list_lock to walk the list in
        the first place. This will simplify and optimize locking.
      - Could remove some nested trylock loops in dcache code
      - Could potentially simplify things a bit in VM land. Do not need to take the
        page lock to follow page->mapping.
      
      The downsides of this is the performance cost of using RCU. In a simple
      creat/unlink microbenchmark, performance drops by about 10% due to inability to
      reuse cache-hot slab objects. As iterations increase and RCU freeing starts
      kicking over, this increases to about 20%.
      
      In cases where inode lifetimes are longer (ie. many inodes may be allocated
      during the average life span of a single inode), a lot of this cache reuse is
      not applicable, so the regression caused by this patch is smaller.
      
      The cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,
      however this adds some complexity to list walking and store-free path walking,
      so I prefer to implement this at a later date, if it is shown to be a win in
      real situations. I haven't found a regression in any non-micro benchmark so I
      doubt it will be a problem.
      
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      fa0d7e3d
    • Nicholas Piggin's avatar
      fs: dcache rationalise dget variants · dc0474be
      Nicholas Piggin authored
      
      
      dget_locked was a shortcut to avoid the lazy lru manipulation when we already
      held dcache_lock (lru manipulation was relatively cheap at that point).
      However, how that the lru lock is an innermost one, we never hold it at any
      caller, so the lock cost can now be avoided. We already have well working lazy
      dcache LRU, so it should be fine to defer LRU manipulations to scan time.
      
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      dc0474be
    • Nicholas Piggin's avatar
      fs: dcache remove dcache_lock · b5c84bf6
      Nicholas Piggin authored
      
      
      dcache_lock no longer protects anything. remove it.
      
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      b5c84bf6
    • Nicholas Piggin's avatar
      fs: dcache scale d_unhashed · da502956
      Nicholas Piggin authored
      
      
      Protect d_unhashed(dentry) condition with d_lock. This means keeping
      DCACHE_UNHASHED bit in synch with hash manipulations.
      
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      da502956
    • Nicholas Piggin's avatar
      fs: dcache scale dentry refcount · b7ab39f6
      Nicholas Piggin authored
      
      
      Make d_count non-atomic and protect it with d_lock. This allows us to ensure a
      0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when
      we start protecting many other dentry members with d_lock.
      
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      b7ab39f6
    • Nicholas Piggin's avatar
      fs: change d_delete semantics · fe15ce44
      Nicholas Piggin authored
      
      
      Change d_delete from a dentry deletion notification to a dentry caching
      advise, more like ->drop_inode. Require it to be constant and idempotent,
      and not take d_lock. This is how all existing filesystems use the callback
      anyway.
      
      This makes fine grained dentry locking of dput and dentry lru scanning
      much simpler.
      
      Signed-off-by: default avatarNick Piggin <npiggin@kernel.dk>
      fe15ce44
    • Nishanth Menon's avatar
      omap2+: wdt: trivial sparse fixes · a9b365bd
      Nishanth Menon authored
      
      
      omap2_wd_timer_disable is declared in wdtimer.h and used by hwmod
      function pointers for usage, the header inclusion is necessary
      to ensure that the prototype and function remains consistent.
      omap_wdt_latency is passed as a pointer and does not need global scope
      
      Fixes sparse warnings:
      arch/arm/mach-omap2/devices.c:981:31: warning: symbol 'omap_wdt_latency' was not declared. Should it be static?
      arch/arm/mach-omap2/wd_timer.c:27:5: warning: symbol 'omap2_wd_timer_disable' was not declared. Should it be static?
      
      Signed-off-by: default avatarNishanth Menon <nm@ti.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      a9b365bd
    • Nishanth Menon's avatar
      omap3: igep3: make igep3_flash_init static · 2393608a
      Nishanth Menon authored
      
      
      igep3_flash_init is not used beyond the scope of the file, make it
      static instead.
      
      Fixes sparse warning:
      arch/arm/mach-omap2/board-igep0030.c:106:13: warning: symbol 'igep3_flash_init' was not declared. Should it be static?
      
      Signed-off-by: default avatarNishanth Menon <nm@ti.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      2393608a
    • Nishanth Menon's avatar
      omap3: zoom: use static for pointer passing · 0ce3bb72
      Nishanth Menon authored
      
      
      omap_zoom_wlan_data and zoom2_set_hs_extmute are not used beyond
      the scope of zoom-peripherals directly, instead pointers are used.
      make them static instead.
      
      Fixes sparse warnings:
      arch/arm/mach-omap2/board-zoom-peripherals.c:193:29: warning: symbol 'omap_zoom_wlan_data' was not declared. Should it be static?
      arch/arm/mach-omap2/board-zoom-peripherals.c:245:6: warning: symbol 'zoom2_set_hs_extmute' was not declared. Should it be static?
      
      Signed-off-by: default avatarNishanth Menon <nm@ti.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      0ce3bb72
    • Nishanth Menon's avatar
      omap3|4: mux: make local structures static · bcb52693
      Nishanth Menon authored
      
      
      Mux data is passed by pointers to mux.c from the SoC specific
      mux file, these variables dont really need to be global scope.
      
      This fixes the following sparse warnings:
      arch/arm/mach-omap2/mux44xx.c:547:29: warning: symbol 'omap4_core_cbl_ball' was not declared. Should it be static?
      arch/arm/mach-omap2/mux44xx.c:1265:29: warning: symbol 'omap4_core_cbs_ball' was not declared. Should it be static?
      arch/arm/mach-omap2/mux44xx.c:1549:29: warning: symbol 'omap4_wkup_cbl_cbs_ball' was not declared. Should it be static?
      
      Signed-off-by: default avatarNishanth Menon <nm@ti.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      bcb52693
    • Aaro Koskinen's avatar
      arm: mach-omap2: mux: fix buffer overrun · 30833142
      Aaro Koskinen authored
      
      
      memcpy() copies 8 bytes too much (omap_mux_entry vs. omap_mux). Correct
      by replacing memcpy() with struct assignment, which is safer.
      
      Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@nokia.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      30833142
    • Catalin Marinas's avatar
      ARM: Do not enable SWP emulation if CPU_V6 && CPU_V7 · e118a1df
      Catalin Marinas authored
      
      
      This option uses LDREXB/STREXB to emulate SWPB but these instructions
      are not supported on all the ARMv6 processors.
      
      Reported-by: default avatarAnand Gadiyar <gadiyar@ti.com>
      Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Cc: Leif Lindholm <Leif.Lindholm@arm.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      e118a1df
  5. Jan 06, 2011
  6. Jan 05, 2011
    • Huang Ying's avatar
      x86, NMI: Add touch_nmi_watchdog to io_check_error delay · 74d91e3c
      Huang Ying authored
      
      
      Prevent the long delay in io_check_error making NMI watchdog
      timeout.
      
      Signed-off-by: default avatarHuang Ying <ying.huang@intel.com>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      LKML-Reference: <1294198689-15447-3-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      74d91e3c
    • Dongdong Deng's avatar
      x86: Avoid calling arch_trigger_all_cpu_backtrace() at the same time · 554ec063
      Dongdong Deng authored
      
      
      The spin_lock_debug/rcu_cpu_stall detector uses
      trigger_all_cpu_backtrace() to dump cpu backtrace.
      Therefore it is possible that trigger_all_cpu_backtrace()
      could be called at the same time on different CPUs, which
      triggers and 'unknown reason NMI' warning. The following case
      illustrates the problem:
      
            CPU1                    CPU2                     ...   CPU N
                             trigger_all_cpu_backtrace()
                             set "backtrace_mask" to cpu mask
                                     |
      generate NMI interrupts  generate NMI interrupts       ...
          \                          |                               /
           \                         |                              /
      
      The "backtrace_mask" will be cleaned by the first NMI interrupt
      at nmi_watchdog_tick(), then the following NMI interrupts
      generated by other cpus's arch_trigger_all_cpu_backtrace() will
      be taken as unknown reason NMI interrupts.
      
      This patch uses a test_and_set to avoid the problem, and stop
      the arch_trigger_all_cpu_backtrace() from calling to avoid
      dumping a double cpu backtrace info when there is already a
      trigger_all_cpu_backtrace() in progress.
      
      Signed-off-by: default avatarDongdong Deng <dongdong.deng@windriver.com>
      Reviewed-by: default avatarBruce Ashfield <bruce.ashfield@windriver.com>
      Cc: fweisbec@gmail.com
      LKML-Reference: <1294198689-15447-2-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      554ec063
    • Don Zickus's avatar
      x86: Only call smp_processor_id in non-preempt cases · 9ab181fa
      Don Zickus authored
      
      
      There are some paths that walk the die_chain with preemption on.
      Make sure we are in an NMI call before we start doing anything.
      
      This was triggered by do_general_protection calling notify_die
      with DIE_GPF.
      
      Reported-by: default avatarJan Kiszka <jan.kiszka@web.de>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      LKML-Reference: <1294198689-15447-1-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      9ab181fa
    • Yinghai Lu's avatar
      x86: Fix APIC ID sizing bug on larger systems, clean up MAX_APICS confusion · cb2ded37
      Yinghai Lu authored
      
      
      Found one x2apic pre-enabled system, x2apic_mode suddenly get
      corrupted after register some cpus, when compiled
      CONFIG_NR_CPUS=255 instead of 512.
      
      It turns out that generic_processor_info() ==> phyid_set(apicid,
      phys_cpu_present_map) causes the problem.
      
      phys_cpu_present_map is sized by MAX_APICS bits, and pre-enabled
      system some cpus have an apic id > 255.
      
      The variable after phys_cpu_present_map may get corrupted
      silently:
      
       ffffffff828e8420 B phys_cpu_present_map
       ffffffff828e8440 B apic_verbosity
       ffffffff828e8444 B local_apic_timer_c2_ok
       ffffffff828e8448 B disable_apic
       ffffffff828e844c B x2apic_mode
       ffffffff828e8450 B x2apic_disabled
       ffffffff828e8454 B num_processors
       ...
      
      Actually phys_cpu_present_map is referenced via apic id, instead
      index. We should use MAX_LOCAL_APIC instead MAX_APICS.
      
      For 64-bit it will be 32768 in all cases. BSS will increase by 4k bytes
      on 64-bit:
      
      	text		data		bss		dec		filename
      	21696943	4193748		12787712	38678403	vmlinux.before
      	21696943	4193748		12791808	38682499	vmlinux.after
      
      No change on 32bit.
      
      Finally we can remove MAX_APCIS that was rather confusing.
      
      Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
      Cc: H. Peter Anvin <hpa@linux.intel.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      LKML-Reference: <4D23BD9C.3070102@kernel.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      cb2ded37
Loading