1. 23 7月, 2012 7 次提交
  2. 21 7月, 2012 3 次提交
  3. 06 6月, 2012 1 次提交
  4. 22 4月, 2012 1 次提交
  5. 21 4月, 2012 1 次提交
    • D
      mmc: sdhci: refine non-removable card checking for card detection · 87b87a3f
      Daniel Drake 提交于
      Commit c79396c1 ("mmc: sdhci: prevent card detection activity
      for non-removable cards") disables card detection where the cards
      are marked as non-removable.
      
      This makes sense, but the implementation detail of calling
      mmc_card_is_removable() causes some problems, because
      mmc_card_is_removable() is overloaded with CONFIG_MMC_UNSAFE_RESUME
      semantics.
      
      In the OLPC XO case, we need CONFIG_MMC_UNSAFE_RESUME because our root
      filesystem is stored on SD, but we also have external SD card slots
      where we want automatic card detection.
      
      Refine the check to only apply to hosts marked as MMC_CAP_NONREMOVABLE,
      which is defined to mean that the card is *really* nonremovable. This
      could be revisited in future if we find a way to improve
      CONFIG_MMC_UNSAFE_RESUME semantics.
      Signed-off-by: NDaniel Drake <dsd@laptop.org>
      Acked-by: NChuanxiao Dong <chuanxiao.dong@intel.com>
      [stable@: please apply to 3.3-stable]
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      87b87a3f
  6. 06 4月, 2012 1 次提交
  7. 28 3月, 2012 2 次提交
  8. 26 3月, 2012 1 次提交
  9. 13 1月, 2012 5 次提交
  10. 12 1月, 2012 6 次提交
  11. 20 12月, 2011 1 次提交
  12. 27 10月, 2011 5 次提交
  13. 14 8月, 2011 5 次提交
    • A
      mmc: sdhci: use f_max instead of host->clock for timeouts · 65be3fef
      Andy Shevchenko 提交于
      When timeout_clk is calculated the host->clock could be zero.
      So, instead of host->clock the calculation now uses mmc->f_max.
      Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      65be3fef
    • A
      mmc: sdhci: move timeout_clk calculation farther down · 272308ca
      Andy Shevchenko 提交于
      This moves the calculation below the assignment of mmc->f_max, which
      we need for calculating timeout_clk in the next patch in this series.
      Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      272308ca
    • A
      mmc: sdhci: check host->clock before using it as a denominator · 78a2ca27
      Andy Shevchenko 提交于
      Sometimes host->clock could be zero which is a legal situation. This
      patch checks host->clock before usage as a denominator when timeout is
      calculated. A similar patch is applied for mmc core (see commit e9b86841,
      "mmc: fix division by zero in MMC core").
      
      Without this patch, the execution of the sdhci_calc_timeout could end up
      with a backtrace:
      
      <0>[    4.014319] divide error: 0000 [#1] PREEMPT SMP
      <4>[    4.014352] Modules linked in: g_ether
      <4>[    4.014376]
      <4>[    4.014393] Pid: 33, comm: kworker/u:2 Not tainted 3.0.0+ #646
      <4>[    4.014421] EIP: 0060:[<c12fa38e>] EFLAGS: 00010046 CPU: 1
      <4>[    4.014449] EIP is at sdhci_calc_timeout+0x2e/0x100
      <4>[    4.014468] EAX: 00000000 EBX: f5930fc8 ECX: 00000000 EDX: 00000000
      <4>[    4.014488] ESI: f5291de8 EDI: f5291db8 EBP: f5291c6c ESP: f5291c50
      <4>[    4.014508]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
      <0>[    4.014529] Process kworker/u:2 (pid: 33, ti=f5290000 task=f53065a0 task.ti=f5290000)
      <0>[    4.014546] Stack:
      <4>[    4.014557]  00000082 c1054fdd f5291c78 04000000 f5930fc8 f5291de8 f5291db8 f5291cac
      <4>[    4.014611]  c12fab7c c107a98b f5291c88 c13b6d3f f593109c f5882000 f5291cac c1054fdd
      <4>[    4.014663]  00000000 00000000 f5882000 00000082 f5930fc8 f5291db8 0000000a f5291ccc
      <0>[    4.014716] Call Trace:
      <4>[    4.014743]  [<c1054fdd>] ? mod_timer+0x11d/0x380
      <4>[    4.014770]  [<c12fab7c>] sdhci_prepare_data+0x2c/0x3a0
      <4>[    4.014798]  [<c107a98b>] ? trace_hardirqs_off+0xb/0x10
      <4>[    4.014827]  [<c13b6d3f>] ? _raw_spin_unlock_irqrestore+0x2f/0x60
      <4>[    4.014854]  [<c1054fdd>] ? mod_timer+0x11d/0x380
      <4>[    4.014880]  [<c12fc7db>] sdhci_send_command+0xdb/0x210
      <4>[    4.014906]  [<c12fd5f3>] sdhci_request+0xc3/0x150
      <4>[    4.014932]  [<c12ec56a>] mmc_start_request+0xda/0x200
      <4>[    4.014960]  [<c120d7c2>] ? __raw_spin_lock_init+0x32/0x60
      <4>[    4.014989]  [<c1066a85>] ? __init_waitqueue_head+0x35/0x50
      <4>[    4.015015]  [<c12ec70b>] mmc_wait_for_req+0x7b/0x90
      <4>[    4.015045]  [<c12f0c67>] mmc_send_cxd_data+0xf7/0x130
      <4>[    4.015076]  [<c12ecbc0>] ? mmc_erase+0x140/0x140
      <4>[    4.015102]  [<c12f139d>] mmc_send_ext_csd+0x1d/0x20
      <4>[    4.015125]  [<c12efef0>] mmc_get_ext_csd+0x70/0x140
      <4>[    4.015151]  [<c12effe8>] mmc_compare_ext_csds+0x28/0x190
      <4>[    4.015176]  [<c12f039f>] mmc_init_card+0x24f/0x650
      <4>[    4.015201]  [<c13b6d5d>] ? _raw_spin_unlock_irqrestore+0x4d/0x60
      <4>[    4.015226]  [<c107fd9c>] ? trace_hardirqs_on_caller+0x11c/0x160
      <4>[    4.015255]  [<c12f09a4>] mmc_attach_mmc+0xa4/0x190
      <4>[    4.015282]  [<c12ee3f0>] mmc_rescan+0x210/0x240
      <4>[    4.015311]  [<c105f9b6>] process_one_work+0x176/0x550
      <4>[    4.015336]  [<c105f93a>] ? process_one_work+0xfa/0x550
      <4>[    4.015360]  [<c12ee1e0>] ? mmc_init_erase+0x140/0x140
      <4>[    4.015385]  [<c1061c2a>] worker_thread+0x12a/0x2c0
      <4>[    4.015410]  [<c1061b00>] ? manage_workers.clone.18+0x100/0x100
      <4>[    4.015437]  [<c1066244>] kthread+0x74/0x80
      <4>[    4.015463]  [<c10661d0>] ? __init_kthread_worker+0x60/0x60
      <4>[    4.015490]  [<c13b7dfa>] kernel_thread_helper+0x6/0xd
      <0>[    4.015507] Code: 57 89 d7 56 53 89 c3 83 ec 10 8b 40 04 8b 72 28 f6 c4 10 89 45 f0 0f 85 91 00 00 00 85 f6 0f 84 c1 00 00 00 8b 4e 04 31 d2 89 c8 <f7> 73 58 ba d3 4d 62 10 89 c1 8b 06 f7 e2 c1 ea 06 01 d1 f7 45
      <0>[    4.015829] EIP: [<c12fa38e>] sdhci_calc_timeout+0x2e/0x100 SS:ESP 0068:f5291c50
      Reported-by: NAlexander Shishkin <alexander.shishkin@linux.intel.com>
      Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      78a2ca27
    • A
      mmc: Revert "mmc: sdhci: Fix SDHCI_QUIRK_TIMEOUT_USES_SDCLK" · 83cbcd93
      Andy Shevchenko 提交于
      This reverts commit 4b01681c, which introduced a new potential
      divide by zero in the process of fixing one.  The subsequent commits
      attempt to fix the issue properly.
      Signed-off-by: NChris Ball <cjb@laptop.org>
      83cbcd93
    • A
      mmc: sdhci: fix retuning timer wrongly deleted in sdhci_tasklet_finish · 78869618
      Aaron Lu 提交于
      Currently, the retuning timer for retuning mode 1 will be deleted in
      function sdhci_tasklet_finish after a mmc request done, which will make
      retuning timing never trigger again. This patch fixed this problem.
      Signed-off-by: NAaron Lu <Aaron.Lu@amd.com>
      Reviewed-by: NPhilip Rakity <prakity@marvell.com>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      78869618
  14. 21 7月, 2011 1 次提交