1. 05 1月, 2012 2 次提交
  2. 02 12月, 2011 13 次提交
    • T
      OMAPDSS: Add comments about blocking of ovl/mgr functions · 9d11c321
      Tomi Valkeinen 提交于
      Add comments specifying what ovl/mgr functions may block.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      9d11c321
    • T
      OMAPDSS: APPLY: remove device_changed field · ff4733dc
      Tomi Valkeinen 提交于
      omap_overlay_manager contains device_changed field, which no longer has
      any use. So remove the field and the few places where it is touched.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      ff4733dc
    • T
      OMAPDSS: APPLY: move channel-field to extra_info set · 5d5a97a6
      Tomi Valkeinen 提交于
      Setting overlay's output channel is currently handled at the same time
      as other overlay attributes. This is not right, as the normal attributes
      should only affect one overlay and manager, but changing the channel
      affects two managers.
      
      This patch moves the channel field into the "extra_info" set, handled
      together with enabled-status.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      5d5a97a6
    • T
      OMAPDSS: APPLY: move ovl->info to apply.c · c1a9febf
      Tomi Valkeinen 提交于
      struct omap_overlayr contains info and info_dirty fields, both of which
      should be internal to apply.c.
      
      This patch moves those fields into ovl_priv data, and names them
      user_info and user_info_dirty.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      c1a9febf
    • T
      OMAPDSS: APPLY: move mgr->info to apply.c · 388c4c6c
      Tomi Valkeinen 提交于
      struct omap_overlay_manager contains info and info_dirty fields, both of
      which should be internal to apply.c.
      
      This patch moves those fields into mgr_priv data, and names them
      user_info and user_info_dirty.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      388c4c6c
    • T
      OMAPDSS: APPLY: rewrite overlay enable/disable · aaa874a9
      Tomi Valkeinen 提交于
      Overlays are currently enabled and disabled with a boolean in the struct
      omap_overlay_info. The overlay info is set with ovl->set_overlay_info(),
      and made into use with mgr->apply().
      
      This doesn't work properly, as the enable/disable status may affect also
      other overlays, for example when using fifo-merge. Thus the enabling and
      disabling of the overlay needs to be done outside the normal overlay
      configuration.
      
      This patch achieves that by doing the following things:
      
      1) Add function pointers to struct omap_overlay: enable(), disable() and
      is_enabled(). These are used to do the obvious. The functions may block.
      
      2) Move the "enabled" field from struct omap_overlay to ovl_priv_data.
      
      3) Add a new route for settings to be applied to the HW, called
      "extra_info". The status of the normal info and extra_info are tracked
      separately.
      
      The point here is to allow the normal info to be changed and
      applied in non-blocking matter, whereas the extra_info can only be
      changed when holding the mutex. This makes it possible to, for example,
      set the overlay enable flag, apply it, and wait until the HW has taken
      the flag into use.
      
      This is not possible if the enable flag would be in the normal info, as
      a new value for the flag could be set at any time from the users of
      omapdss.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      aaa874a9
    • T
      OMAPDSS: APPLY: move mgr->enabled to mgr_priv_data · bf213523
      Tomi Valkeinen 提交于
      struct omap_overlay_manager contains "enabled"-field, used to track if
      the manager is enabled or not. This field should be internal to apply.c.
      
      This patch moves the field to mgr_priv_data, and applies the necessary
      locking when accessing the field.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      bf213523
    • T
      OMAPDSS: DSI: call mgr_enable/disable for cmd mode displays · 9a147a65
      Tomi Valkeinen 提交于
      The current code uses dsi_video_mode_enable/disable functions to
      enable/disable DISPC output for video mode displays. For command mode
      displays we have no notion in the DISPC side of whether the panel is
      enabled, except when a dss_mgr_start_update() call is made.
      
      However, to properly maintain the DISPC state in apply.c, we need to
      know if a manager used for a manual update display is currently in use.
      
      This patch achieves that by changing dsi_video_mode_enable/disable to
      dsi_enable/disable_video_output, which is called by both video and
      command mode displays. For video mode displays it starts the actual
      pixel stream, as it did before. For command mode displays it doesn't do
      anything else than mark that the manager is currently in use.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      9a147a65
    • T
      OMAPDSS: store overlays in a list for each manager · 07e327c9
      Tomi Valkeinen 提交于
      Current way of handling overlay-manager links is a bit strange: each
      manager has a static array, containing pointers to all the overlays
      (even those used by other managers). The overlays contain a pointer to
      the manager being used.
      
      This patch makes the system a bit saner: each manager has a linked list
      of overlays, and only the overlays linked to that manager are in the
      list.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      07e327c9
    • T
      OMAPDSS: store managers in an array · 5617ad09
      Tomi Valkeinen 提交于
      Overlay managers are stored in a linked list. There's no need for this
      list, as an array would do just as fine.
      
      This patch changes the code to use an array for overlay managers.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      5617ad09
    • T
      OMAPDSS: APPLY: track whether a manager is enabled · be729178
      Tomi Valkeinen 提交于
      Add "enabled" field to struct omap_overlay_manager, which tells if the
      output is enabled or not. This will be used in apply.c in the following
      patches.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      be729178
    • T
      OMAPDSS: hide manager's enable/disable() · 7797c6da
      Tomi Valkeinen 提交于
      omap_overlay_manager struct contains enable() and disable() functions.
      However, these are only meant to be used from inside omapdss, and thus
      it's bad to expose the functions.
      
      This patch adds dss_mgr_enable() and dss_mgr_disable() functions to
      apply.c, which handle enabling and disabling the output.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      7797c6da
    • T
      OMAPDSS: remove partial update from DSI · 5476e74a
      Tomi Valkeinen 提交于
      Partial update for manual update displays has never worked quite well:
      * The HW has limitations on the update area, and the x and width need to
        be even.
      * Showing a part of a scaled overlay causes artifacts.
      * Makes the management of dispc very complex
      
      Considering the above points and the fact that partial update is not
      used anywhere, this and the following patches remove the partial update
      support. This will greatly simplify the following re-write of the apply
      mechanism to get proper locking and additional features like fifo-merge.
      
      This patch removes the partial update from the dsi.c.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      5476e74a
  3. 29 11月, 2011 1 次提交
  4. 24 11月, 2011 2 次提交
  5. 23 11月, 2011 3 次提交
  6. 20 11月, 2011 1 次提交
    • M
      drm/radeon/kms: add a CS ioctl flag not to rewrite tiling flags in the CS · e70f224c
      Marek Olšák 提交于
      This adds a new optional chunk to the CS ioctl that specifies optional flags
      to the CS parser. Why this is useful is explained below. Note that some regs
      no longer need the NOP relocation packet if this feature is enabled.
      Tested on r300g and r600g with this flag disabled and enabled.
      
      Assume there are two contexts sharing the same mipmapped tiled texture.
      One context wants to render into the first mipmap and the other one
      wants to render into the last mipmap. As you probably know, the hardware
      has a MACRO_SWITCH feature, which turns off macro tiling for small mipmaps,
      but that only applies to samplers.
      (at least on r300-r500, though later hardware likely behaves the same)
      
      So we want to just re-set the tiling flags before rendering (writing
      packets), right? ... No. The contexts run in parallel, so they may
      set the tiling flags simultaneously and then fire their command streams
      also simultaneously. The last one setting the flags wins, the other one
      loses.
      
      Another problem is when one context wants to render into the first and
      the last mipmap in one CS. Impossible. It must flush before changing
      tiling flags and do the rendering into the smaller mipmaps in another CS.
      
      Yet another problem is that writing copy_blit in userspace would be a mess
      involving re-setting tiling flags to please the kernel, and causing races
      with other contexts at the same time.
      
      The only way out of this is to send tiling flags with each CS, ideally
      with each relocation. But we already do that through the registers.
      So let's just use what we have in the registers.
      Signed-off-by: NMarek Olšák <maraeo@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      e70f224c
  7. 19 11月, 2011 1 次提交
    • D
      hugetlb: remove dummy definitions of HPAGE_MASK and HPAGE_SIZE · a5c86e98
      David Rientjes 提交于
      Dummy, non-zero definitions for HPAGE_MASK and HPAGE_SIZE were added in
      51c6f666 ("mm: ZAP_BLOCK causes redundant work") to avoid a divide
      by zero in generic kernel code.
      
      That code has since been removed, but probably should never have been
      added in the first place: we don't want HPAGE_SIZE to act like PAGE_SIZE
      for code that is working with hugepages, for example, when the
      dependency on CONFIG_HUGETLB_PAGE has not been fulfilled.
      
      Because hugepage size can differ from architecture to architecture, each
      is required to have their own definitions for both HPAGE_MASK and
      HPAGE_SIZE.  This is always done in arch/*/include/asm/page.h.
      
      So, just remove the dummy and dangerous definitions since they are no
      longer needed and reveals the correct dependencies.  Tested on
      architectures using the definitions with allyesconfig: x86 (even with
      thp), hppa, mips, powerpc, s390, sh3, sh4, sparc, and sparc64, and with
      defconfig on ia64.
      Signed-off-by: NDavid Rientjes <rientjes@google.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a5c86e98
  8. 18 11月, 2011 2 次提交
    • K
      pstore: pass allocated memory region back to caller · f6f82851
      Kees Cook 提交于
      The buf_lock cannot be held while populating the inodes, so make the backend
      pass forward an allocated and filled buffer instead. This solves the following
      backtrace. The effect is that "buf" is only ever used to notify the backends
      that something was written to it, and shouldn't be used in the read path.
      
      To replace the buf_lock during the read path, isolate the open/read/close
      loop with a separate mutex to maintain serialized access to the backend.
      
      Note that is is up to the pstore backend to cope if the (*write)() path is
      called in the middle of the read path.
      
      [   59.691019] BUG: sleeping function called from invalid context at .../mm/slub.c:847
      [   59.691019] in_atomic(): 0, irqs_disabled(): 1, pid: 1819, name: mount
      [   59.691019] Pid: 1819, comm: mount Not tainted 3.0.8 #1
      [   59.691019] Call Trace:
      [   59.691019]  [<810252d5>] __might_sleep+0xc3/0xca
      [   59.691019]  [<810a26e6>] kmem_cache_alloc+0x32/0xf3
      [   59.691019]  [<810b53ac>] ? __d_lookup_rcu+0x6f/0xf4
      [   59.691019]  [<810b68b1>] alloc_inode+0x2a/0x64
      [   59.691019]  [<810b6903>] new_inode+0x18/0x43
      [   59.691019]  [<81142447>] pstore_get_inode.isra.1+0x11/0x98
      [   59.691019]  [<81142623>] pstore_mkfile+0xae/0x26f
      [   59.691019]  [<810a2a66>] ? kmem_cache_free+0x19/0xb1
      [   59.691019]  [<8116c821>] ? ida_get_new_above+0x140/0x158
      [   59.691019]  [<811708ea>] ? __init_rwsem+0x1e/0x2c
      [   59.691019]  [<810b67e8>] ? inode_init_always+0x111/0x1b0
      [   59.691019]  [<8102127e>] ? should_resched+0xd/0x27
      [   59.691019]  [<8137977f>] ? _cond_resched+0xd/0x21
      [   59.691019]  [<81142abf>] pstore_get_records+0x52/0xa7
      [   59.691019]  [<8114254b>] pstore_fill_super+0x7d/0x91
      [   59.691019]  [<810a7ff5>] mount_single+0x46/0x82
      [   59.691019]  [<8114231a>] pstore_mount+0x15/0x17
      [   59.691019]  [<811424ce>] ? pstore_get_inode.isra.1+0x98/0x98
      [   59.691019]  [<810a8199>] mount_fs+0x5a/0x12d
      [   59.691019]  [<810b9174>] ? alloc_vfsmnt+0xa4/0x14a
      [   59.691019]  [<810b9474>] vfs_kern_mount+0x4f/0x7d
      [   59.691019]  [<810b9d7e>] do_kern_mount+0x34/0xb2
      [   59.691019]  [<810bb15f>] do_mount+0x5fc/0x64a
      [   59.691019]  [<810912fb>] ? strndup_user+0x2e/0x3f
      [   59.691019]  [<810bb3cb>] sys_mount+0x66/0x99
      [   59.691019]  [<8137b537>] sysenter_do_call+0x12/0x26
      Signed-off-by: NKees Cook <keescook@chromium.org>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      f6f82851
    • R
      PM Sleep: Do not extend wakeup paths to devices with ignore_children set · 8b258cc8
      Rafael J. Wysocki 提交于
      Commit 4ca46ff3 (PM / Sleep: Mark
      devices involved in wakeup signaling during suspend) introduced
      the power.wakeup_path field in struct dev_pm_info to mark devices
      whose children are enabled to wake up the system from sleep states,
      so that power domains containing the parents that provide their
      children with wakeup power and/or relay their wakeup signals are not
      turned off.  Unfortunately, that introduced a PM regression on SH7372
      whose power consumption in the system "memory sleep" state increased
      as a result of it, because it prevented the power domain containing
      the I2C controller from being turned off when some children of that
      controller were enabled to wake up the system, although the
      controller was not necessary for them to signal wakeup.
      
      To fix this issue use the observation that devices whose
      power.ignore_children flag is set for runtime PM should be treated
      analogously during system suspend.  Namely, they shouldn't be
      included in wakeup paths going through their children.  Since the
      SH7372 I2C controller's power.ignore_children flag is set, doing so
      will restore the previous behavior of that SOC.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      8b258cc8
  9. 17 11月, 2011 5 次提交
  10. 16 11月, 2011 5 次提交
  11. 15 11月, 2011 1 次提交
  12. 14 11月, 2011 1 次提交
  13. 12 11月, 2011 1 次提交
  14. 11 11月, 2011 2 次提交