1. 25 7月, 2016 3 次提交
  2. 02 6月, 2016 1 次提交
  3. 28 5月, 2016 1 次提交
    • A
      remove lots of IS_ERR_VALUE abuses · 287980e4
      Arnd Bergmann 提交于
      Most users of IS_ERR_VALUE() in the kernel are wrong, as they
      pass an 'int' into a function that takes an 'unsigned long'
      argument. This happens to work because the type is sign-extended
      on 64-bit architectures before it gets converted into an
      unsigned type.
      
      However, anything that passes an 'unsigned short' or 'unsigned int'
      argument into IS_ERR_VALUE() is guaranteed to be broken, as are
      8-bit integers and types that are wider than 'unsigned long'.
      
      Andrzej Hajda has already fixed a lot of the worst abusers that
      were causing actual bugs, but it would be nice to prevent any
      users that are not passing 'unsigned long' arguments.
      
      This patch changes all users of IS_ERR_VALUE() that I could find
      on 32-bit ARM randconfig builds and x86 allmodconfig. For the
      moment, this doesn't change the definition of IS_ERR_VALUE()
      because there are probably still architecture specific users
      elsewhere.
      
      Almost all the warnings I got are for files that are better off
      using 'if (err)' or 'if (err < 0)'.
      The only legitimate user I could find that we get a warning for
      is the (32-bit only) freescale fman driver, so I did not remove
      the IS_ERR_VALUE() there but changed the type to 'unsigned long'.
      For 9pfs, I just worked around one user whose calling conventions
      are so obscure that I did not dare change the behavior.
      
      I was using this definition for testing:
      
       #define IS_ERR_VALUE(x) ((unsigned long*)NULL == (typeof (x)*)NULL && \
             unlikely((unsigned long long)(x) >= (unsigned long long)(typeof(x))-MAX_ERRNO))
      
      which ends up making all 16-bit or wider types work correctly with
      the most plausible interpretation of what IS_ERR_VALUE() was supposed
      to return according to its users, but also causes a compile-time
      warning for any users that do not pass an 'unsigned long' argument.
      
      I suggested this approach earlier this year, but back then we ended
      up deciding to just fix the users that are obviously broken. After
      the initial warning that caused me to get involved in the discussion
      (fs/gfs2/dir.c) showed up again in the mainline kernel, Linus
      asked me to send the whole thing again.
      
      [ Updated the 9p parts as per Al Viro  - Linus ]
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Andrzej Hajda <a.hajda@samsung.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Link: https://lkml.org/lkml/2016/1/7/363
      Link: https://lkml.org/lkml/2016/5/27/486
      Acked-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> # For nvmem part
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      287980e4
  4. 16 5月, 2016 1 次提交
    • A
      mmc: mmc: Fix partition switch timeout for some eMMCs · 1c447116
      Adrian Hunter 提交于
      Some eMMCs set the partition switch timeout too low.
      
      Now typically eMMCs are considered a critical component (e.g. because
      they store the root file system) and consequently are expected to be
      reliable.  Thus we can neglect the use case where eMMCs can't switch
      reliably and we might want a lower timeout to facilitate speedy
      recovery.
      
      Although we could employ a quirk for the cards that are affected (if
      we could identify them all), as described above, there is little
      benefit to having a low timeout, so instead simply set a minimum
      timeout.
      
      The minimum is set to 300ms somewhat arbitrarily - the examples that
      have been seen had a timeout of 10ms but were sometimes taking 60-70ms.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      1c447116
  5. 10 5月, 2016 2 次提交
  6. 04 5月, 2016 1 次提交
  7. 02 5月, 2016 2 次提交
  8. 29 2月, 2016 2 次提交
  9. 28 12月, 2015 1 次提交
  10. 22 12月, 2015 2 次提交
  11. 09 11月, 2015 4 次提交
    • A
      mmc: mmc: Improve reliability of mmc_select_hs400() · d2302933
      Adrian Hunter 提交于
      mmc_select_hs400() calls __mmc_switch() which checks the switch is
      successful using CMD13 (SEND_STATUS).  The problem is that it does that
      using the timing settings of the previous mode.  That is prone to error,
      especially when switching from HS to HS400 because the timing parameters
      for HS mode are tighter than the timing parameters for HS400 mode.
      
      In the case when CMD13 polling is used (i.e. not MMC_CAP_WAIT_WHILE_BUSY)
      with the switch command, it must be assumed that using different modes on
      the card and host must work.
      
      However in the case when CMD13 polling is not used
      (i.e. MMC_CAP_WAIT_WHILE_BUSY) mmc_select_hs400() can be made more
      reliable by setting the host to the correct timing before sending CMD13.
      
      This patch does that.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Cc: <stable@vger.kernel.org> # 4.2+
      Tested-by: NAlim Akhtar <alim.akhtar@samsung.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      d2302933
    • A
      mmc: mmc: Move mmc_switch_status() · 974007aa
      Adrian Hunter 提交于
      Move the mmc_switch_status() function in preparation for calling it
      in mmc_select_hs400().
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Cc: <stable@vger.kernel.org> # 4.2+
      Tested-by: NAlim Akhtar <alim.akhtar@samsung.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      974007aa
    • A
      mmc: mmc: Fix HS setting in mmc_select_hs400() · 51b12f77
      Adrian Hunter 提交于
      mmc_select_hs400() begins with the card and host in HS200 mode.
      Therefore, any commands sent to the card should use HS200 timing.
      It is incorrect to set the host to High Speed (HS) timing before
      sending the switch command.  Doing so is unreliable because
      the timing parameters for HS mode are tighter than the timing
      parameters for HS200 mode.  Thus the HS timings should be set
      only after the card has switched mode.
      
      However, it is not unreasonable first to reduce the frequency to
      the HS mode frequency, which should make the switch command and
      subsequent CMD13 commands more reliable.
      
      This patch does that.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Cc: <stable@vger.kernel.org> # 4.2+
      Tested-by: NAlim Akhtar <alim.akhtar@samsung.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      51b12f77
    • A
      mmc: mmc: Improve reliability of mmc_select_hs200() · 1815e61b
      Adrian Hunter 提交于
      Currently mmc_select_hs200() uses __mmc_switch() which checks the
      success of the switch to HS200 mode using CMD13 (SEND_STATUS).
      The problem is that it does that using the timing settings of legacy
      mode.  That is prone to error, not least because the timing parameters
      for legacy mode are tighter than the timing parameters for HS200 mode.
      
      In the case when CMD13 polling is used (i.e. not MMC_CAP_WAIT_WHILE_BUSY)
      with the switch command, it must be assumed that using different modes on
      the card and host must work.
      
      However in the case when CMD13 polling is not used
      (i.e. MMC_CAP_WAIT_WHILE_BUSY) mmc_select_hs200() can be made more
      reliable by setting the host to the correct timing before sending CMD13.
      
      This patch does that.
      
      A complication is that the caller, mmc_select_timing(), will ignore a
      switch error (indicated by -EBADMSG), assume the old mode is valid
      and continue, so the old timing must be restored in that case.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Cc: <stable@vger.kernel.org> # 4.2+
      Tested-by: NAlim Akhtar <alim.akhtar@samsung.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      1815e61b
  12. 26 10月, 2015 2 次提交
  13. 21 10月, 2015 1 次提交
  14. 04 6月, 2015 1 次提交
  15. 01 6月, 2015 5 次提交
  16. 02 4月, 2015 1 次提交
  17. 07 3月, 2015 1 次提交
  18. 29 1月, 2015 1 次提交
  19. 19 1月, 2015 4 次提交
  20. 29 12月, 2014 1 次提交
  21. 10 11月, 2014 3 次提交