14 Aug, 2014

1 commit

  • Pull UBI/UBIFS changes from Artem Bityutskiy:
    "No significant changes, mostly small fixes here and there. The more
    important fixes are:

    - UBI deleted list items while iterating the list with
    'list_for_each_entry'
    - The UBI block driver did not work properly with very large UBI
    volumes"

    * tag 'upstream-3.17-rc1' of git://git.infradead.org/linux-ubifs: (21 commits)
    UBIFS: Add log overlap assertions
    Revert "UBIFS: add a log overlap assertion"
    UBI: bugfix in ubi_wl_flush()
    UBI: block: Avoid disk size integer overflow
    UBI: block: Set disk_capacity out of the mutex
    UBI: block: Make ubiblock_resize return something
    UBIFS: add a log overlap assertion
    UBIFS: remove unnecessary check
    UBIFS: remove mst_mutex
    UBIFS: kernel-doc warning fix
    UBI: init_volumes: Ignore volumes with no LEBs
    UBIFS: replace seq_printf by seq_puts
    UBIFS: replace count*size kzalloc by kcalloc
    UBIFS: kernel-doc warning fix
    UBIFS: fix error path in create_default_filesystem()
    UBIFS: fix spelling of "scanned"
    UBIFS: fix some comments
    UBIFS: remove useless @ecc in struct ubifs_scan_leb
    UBIFS: remove useless statements
    UBIFS: Add missing break statements in dbg_chk_pnode()
    ...

    Linus Torvalds
     

09 Aug, 2014

2 commits

  • Pull MTD updates from Brian Norris:
    "AMD-compatible CFI driver:
    - Support OTP programming for Micron M29EW family
    - Increase buffer write timeout, according to detected flash
    parameter info

    NAND
    - Add helpers for retrieving ONFI timing modes
    - GPMI: provide option to disable bad block marker swapping (required
    for Ka-On electronics platforms)

    SPI NOR
    - EON EN25QH128 support
    - Support new Flag Status Register (FSR) on a few Micron flash

    Common
    - New sysfs entries for bad block and ECC stats

    And a few miscellaneous refactorings, cleanups, and driver
    improvements"

    * tag 'for-linus-20140808' of git://git.infradead.org/linux-mtd: (31 commits)
    mtd: gpmi: make blockmark swapping optional
    mtd: gpmi: remove line breaks from error messages and improve wording
    mtd: gpmi: remove useless (void *) type casts and spaces between type casts and variables
    mtd: atmel_nand: NFC: support multiple interrupt handling
    mtd: atmel_nand: implement the nfc_device_ready() by checking the R/B bit
    mtd: atmel_nand: add NFC status error check
    mtd: atmel_nand: make ecc parameters same as definition
    mtd: nand: add ONFI timing mode to nand_timings converter
    mtd: nand: define struct nand_timings
    mtd: cfi_cmdset_0002: fix do_write_buffer() timeout error
    mtd: denali: use 8 bytes for READID command
    mtd/ftl: fix the double free of the buffers allocated in build_maps()
    mtd: phram: Fix whitespace issues
    mtd: spi-nor: add support for EON EN25QH128
    mtd: cfi_cmdset_0002: Add support for locking OTP memory
    mtd: cfi_cmdset_0002: Add support for writing OTP memory
    mtd: cfi_cmdset_0002: Invalidate cache after entering/exiting OTP memory
    mtd: cfi_cmdset_0002: Add support for reading OTP
    mtd: spi-nor: add support for flag status register on Micron chips
    mtd: Account for BBT blocks when a partition is being allocated
    ...

    Linus Torvalds
     
  • Pull ARM SoC cleanups from Olof Johansson:
    "This merge window brings a good size of cleanups on various platforms.
    Among the bigger ones:

    - Removal of Samsung s5pc100 and s5p64xx platforms. Both of these
    have lacked active support for quite a while, and after asking
    around nobody showed interest in keeping them around. If needed,
    they could be resurrected in the future but it's more likely that
    we would prefer reintroduction of them as DT and
    multiplatform-enabled platforms instead.

    - OMAP4 controller code register define diet. They defined a lot of
    registers that were never actually used, etc.

    - Move of some of the Tegra platform code (PMC, APBIO, fuse,
    powergate) to drivers/soc so it can be shared with 64-bit code.
    This also converts them over to traditional driver models where
    possible.

    - Removal of legacy gpio-samsung driver, since the last users have
    been removed (moved to pinctrl)

    Plus a bunch of smaller changes for various platforms that sort of
    dissapear in the diffstat for the above. clps711x cleanups, shmobile
    header file refactoring/moves for multiplatform friendliness, some
    misc cleanups, etc"

    * tag 'cleanup-for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (117 commits)
    drivers: CCI: Correct use of ! and &
    video: clcd-versatile: Depend on ARM
    video: fix up versatile CLCD helper move
    MAINTAINERS: Add sdhci-st file to ARCH/STI architecture
    ARM: EXYNOS: Fix build breakge with PM_SLEEP=n
    MAINTAINERS: Remove Kirkwood
    ARM: tegra: Convert PMC to a driver
    soc/tegra: fuse: Set up in early initcall
    ARM: tegra: Always lock the CPU reset vector
    ARM: tegra: Setup CPU hotplug in a pure initcall
    soc/tegra: Implement runtime check for Tegra SoCs
    soc/tegra: fuse: fix dummy functions
    soc/tegra: fuse: move APB DMA into Tegra20 fuse driver
    soc/tegra: Add efuse and apbmisc bindings
    soc/tegra: Add efuse driver for Tegra
    ARM: tegra: move fuse exports to soc/tegra/fuse.h
    ARM: tegra: export apb dma readl/writel
    ARM: tegra: Use a function to get the chip ID
    ARM: tegra: Sort includes alphabetically
    ARM: tegra: Move includes to include/soc/tegra
    ...

    Linus Torvalds
     

07 Aug, 2014

1 commit

  • Pull MIPS updates from Ralf Baechle:
    "This is the main pull request for 3.17. It contains:

    - misc Cavium Octeon, BCM47xx, BCM63xx and Alchemy updates
    - MIPS ptrace updates and cleanups
    - various fixes that will also go to -stable
    - a number of cleanups and small non-critical fixes.
    - NUMA support for the Loongson 3.
    - more support for MSA
    - support for MAAR
    - various FP enhancements and fixes"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (139 commits)
    MIPS: jz4740: remove unnecessary null test before debugfs_remove
    MIPS: Octeon: remove unnecessary null test before debugfs_remove_recursive
    MIPS: ZBOOT: implement stack protector in compressed boot phase
    MIPS: mipsreg: remove duplicate MIPS_CONF4_FTLBSETS_SHIFT
    MIPS: Bonito64: remove a duplicate define
    MIPS: Malta: initialise MAARs
    MIPS: Initialise MAARs
    MIPS: detect presence of MAARs
    MIPS: define MAAR register accessors & bits
    MIPS: mark MSA experimental
    MIPS: Don't build MSA support unless it can be used
    MIPS: consistently clear MSA flags when starting & copying threads
    MIPS: 16 byte align MSA vector context
    MIPS: disable preemption whilst initialising MSA
    MIPS: ensure MSA gets disabled during boot
    MIPS: fix read_msa_* & write_msa_* functions on non-MSA toolchains
    MIPS: fix MSA context for tasks which don't use FP first
    MIPS: init upper 64b of vector registers when MSA is first used
    MIPS: save/disable MSA in lose_fpu
    MIPS: preserve scalar FP CSR when switching vector context
    ...

    Linus Torvalds
     

30 Jul, 2014

2 commits

  • replace au_read/write/sync with __raw_read/write and wmb.

    Signed-off-by: Manuel Lauss
    Cc: Linux-MIPS
    Patchwork: https://patchwork.linux-mips.org/patch/7465/
    Signed-off-by: Ralf Baechle

    Manuel Lauss
     
  • This patch changes the static memory controller registers to offsets
    from base, prefixes them with AU1000_ to avoid silent failures due to
    changed addresses and introduces helpers to access them.

    No functional changes, comparing assembly of a few select functions shows
    no differences.

    Signed-off-by: Manuel Lauss
    Cc: Linux-MIPS
    Patchwork: https://patchwork.linux-mips.org/patch/7463/
    Signed-off-by: Ralf Baechle

    Manuel Lauss
     

29 Jul, 2014

1 commit


28 Jul, 2014

6 commits


22 Jul, 2014

5 commits

  • Fix the following error, which sometimes happens during the NFC data
    transfer:

    atmel_nand 80000000.nand: Time out to wait for interrupt: 0x00010000
    atmel_nand 80000000.nand: something wrong, No XFR_DONE interrupt comes.

    The root cause is that in the interrupt handler, we read the ISR but
    only handle one interrupt. If more than one interrupt arrive at the same
    time, then the second one will be lost.

    During the NFC data transfer. Two NFC interrupts (NFC_CMD_DONE and
    NFC_XFR_DONE) may come at the same time.

    NFC_CMD_DONE means NFC command is sent, and NFC_XFR_DONE means NFC data
    is transferred.

    This patch can handle multiple NFC interrupts at the same time. During
    the NFC data transfer, we need to wait for two NFC interrupts:
    NFC_CMD_DONE and NFC_XFR_DONE.

    Also we separate the completion initialization code to a
    nfc_prepare_interrupt(), which is paired with nfc_wait_interrupt().

    We call nfc_prepare_interrupt() before sending out nfc commands, to make
    sure no interrupt lost.

    Reported-by: Matthieu CRAPET
    Tested-by: Matthieu Crapet
    Signed-off-by: Josh Wu
    Signed-off-by: Brian Norris

    Josh Wu
     
  • In nfc_device_ready(), it's more reasonable to check R/B bit in NFC_SR
    than waiting for the R/B interrupt. It cost less time.

    Signed-off-by: Josh Wu
    Tested-by: Matthieu Crapet
    Signed-off-by: Brian Norris

    Wu, Josh
     
  • Add a new function to read the NFC status. Meantime, this function will
    check if there is any errors in NFC.

    Signed-off-by: Josh Wu
    Tested-by: Matthieu Crapet
    Signed-off-by: Brian Norris

    Wu, Josh
     
  • If the ecc parameter is not the same as definition, when the
    mtd core check these parameters, it will give the error result.

    Take the following as an example:

    Calculate how many bits can be corrected in one page.
    According to the ecc parameters definition,

    one page correct bits = (mtd->writesize * ecc->strength) / ecc->size

    take the following use case as an example:
    mtd->writesize = 2048 bytes
    ecc->strength = 4 bytes (for 512 bytes)

    before this patch, the ecc->size = 2048, so the result is 4 bytes.
    after this patch, the ecc->size = 512, so the result is 16 bytes.

    So, align the ecc parameters the same as definition to correct
    this kind of error.

    Signed-off-by: Bo Shen
    Acked-by: Josh Wu
    Signed-off-by: Brian Norris

    Bo Shen
     
  • Add a converter to retrieve NAND timings from an ONFI NAND timing mode.
    At the moment, only SDR NAND timings are supported.

    Signed-off-by: Boris BREZILLON
    Signed-off-by: Brian Norris

    Boris BREZILLON
     

21 Jul, 2014

1 commit


19 Jul, 2014

2 commits

  • UBI assumes that ubi_attach_info will only contain ubi_ainf_volume
    structures for volumes with at least one LEB.
    In scanning mode this is true because UBI can nicely create a ubi_ainf_volume
    on demand while creating the EBA table.

    For fastmap this is not true, the fastmap on-flash structure has a list of
    all volumes, the ubi_ainf_volume structures are created from this list.
    So it can happen that an empty volume ends up in init_volumes().

    We can easely deal with that by looking into ->leb_count too.

    Signed-off-by: Richard Weinberger
    Signed-off-by: Artem Bityutskiy

    Richard Weinberger
     
  • Pull UBI fixes from Artem Bityutskiy:
    "Two UBI fastmap-related fixes for v3.16:

    - fix UBI fastmap support which we broke in 3.16-rc1 by reversing the
    volumes RB-tree sorting criteria.
    - make sure that we scrub all PEBs where we see bit-flips - we were
    missing some of them when the fastmap feature was enabled"

    * tag 'upstream-3.16-rc6' of git://git.infradead.org/linux-ubifs:
    UBI: fastmap: do not miss bit-flips
    UBI: fix the volumes tree sorting criteria

    Linus Torvalds
     

17 Jul, 2014

1 commit

  • For some NOR flashes, the size of the buffer program has been increased
    from 256 bytes to 512 bytes, and so 2ms maximum timeout can may not be
    sufficient for all different vendor's NOR flash. There is maximum
    timeout information in the CFI area, so we instead of picking a fixed
    value, we can calculate this according to the standard CFI parameters
    parsed at probe time. If we haven't probed this information, or it is
    smaller than 2000us, then specify a minimum value 2000us.

    Tested with Micron JS28F512M29EWx and Micron MT28EW512ABA flash devices.

    Signed-off-by: Bean Huo
    [Brian: fix up comments, use 'max()']
    Signed-off-by: Brian Norris

    Bean Huo
     

16 Jul, 2014

1 commit

  • The return value from 'ubi_io_read_ec_hdr()' was stored in 'err', not in 'ret'.
    This fix makes sure Fastmap-enabled UBI does not miss bit-flip while reading EC
    headers, events and scrubs the affected PEBs.

    This issue was reported by Coverity Scan.

    Artem: improved the commit message.

    Signed-off-by: Brian Norris
    Acked-by: Richard Weinberger
    Signed-off-by: Artem Bityutskiy

    Brian Norris
     

15 Jul, 2014

4 commits

  • The Denali NAND driver reads only 5 bytes of ID, but some Hynix and Samsung
    have size parameters in the 6th byte. As a result, the page and oob size
    for a Hynix H27UAG8T2B were calculated incorrectly and the driver failed to
    load.

    The solution is to read 8 bytes of ID, as expected by the NAND framework.

    Signed-off-by: Graham Moore
    Signed-off-by: Brian Norris

    grmoore@altera.com
     
  • I got the following panic on my fsl p5020ds board.

    Unable to handle kernel paging request for data at address 0x7375627379737465
    Faulting instruction address: 0xc000000000100778
    Oops: Kernel access of bad area, sig: 11 [#1]
    SMP NR_CPUS=24 CoreNet Generic
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.15.0-next-20140613 #145
    task: c0000000fe080000 ti: c0000000fe088000 task.ti: c0000000fe088000
    NIP: c000000000100778 LR: c00000000010073c CTR: 0000000000000000
    REGS: c0000000fe08aa00 TRAP: 0300 Not tainted (3.15.0-next-20140613)
    MSR: 0000000080029000 CR: 24ad2e24 XER: 00000000
    DEAR: 7375627379737465 ESR: 0000000000000000 SOFTE: 1
    GPR00: c0000000000c99b0 c0000000fe08ac80 c0000000009598e0 c0000000fe001d80
    GPR04: 00000000000000d0 0000000000000913 c000000007902b20 0000000000000000
    GPR08: c0000000feaae888 0000000000000000 0000000007091000 0000000000200200
    GPR12: 0000000028ad2e28 c00000000fff4000 c0000000007abe08 0000000000000000
    GPR16: c0000000007ab160 c0000000007aaf98 c00000000060ba68 c0000000007abda8
    GPR20: c0000000007abde8 c0000000feaea6f8 c0000000feaea708 c0000000007abd10
    GPR24: c000000000989370 c0000000008c6228 00000000000041ed c0000000fe00a400
    GPR28: c00000000017c1cc 00000000000000d0 7375627379737465 c0000000fe001d80
    NIP [c000000000100778] .__kmalloc_track_caller+0x70/0x168
    LR [c00000000010073c] .__kmalloc_track_caller+0x34/0x168
    Call Trace:
    [c0000000fe08ac80] [c00000000087e6b8] uevent_sock_list+0x0/0x10 (unreliable)
    [c0000000fe08ad20] [c0000000000c99b0] .kstrdup+0x44/0x90
    [c0000000fe08adc0] [c00000000017c1cc] .__kernfs_new_node+0x4c/0x130
    [c0000000fe08ae70] [c00000000017d7e4] .kernfs_new_node+0x2c/0x64
    [c0000000fe08aef0] [c00000000017db00] .kernfs_create_dir_ns+0x34/0xc8
    [c0000000fe08af80] [c00000000018067c] .sysfs_create_dir_ns+0x58/0xcc
    [c0000000fe08b010] [c0000000002c711c] .kobject_add_internal+0xc8/0x384
    [c0000000fe08b0b0] [c0000000002c7644] .kobject_add+0x64/0xc8
    [c0000000fe08b140] [c000000000355ebc] .device_add+0x11c/0x654
    [c0000000fe08b200] [c0000000002b5988] .add_disk+0x20c/0x4b4
    [c0000000fe08b2c0] [c0000000003a21d4] .add_mtd_blktrans_dev+0x340/0x514
    [c0000000fe08b350] [c0000000003a3410] .mtdblock_add_mtd+0x74/0xb4
    [c0000000fe08b3e0] [c0000000003a32cc] .blktrans_notify_add+0x64/0x94
    [c0000000fe08b470] [c00000000039b5b4] .add_mtd_device+0x1d4/0x368
    [c0000000fe08b520] [c00000000039b830] .mtd_device_parse_register+0xe8/0x104
    [c0000000fe08b5c0] [c0000000003b8408] .of_flash_probe+0x72c/0x734
    [c0000000fe08b750] [c00000000035ba40] .platform_drv_probe+0x38/0x84
    [c0000000fe08b7d0] [c0000000003599a4] .really_probe+0xa4/0x29c
    [c0000000fe08b870] [c000000000359d3c] .__driver_attach+0x100/0x104
    [c0000000fe08b900] [c00000000035746c] .bus_for_each_dev+0x84/0xe4
    [c0000000fe08b9a0] [c0000000003593c0] .driver_attach+0x24/0x38
    [c0000000fe08ba10] [c000000000358f24] .bus_add_driver+0x1c8/0x2ac
    [c0000000fe08bab0] [c00000000035a3a4] .driver_register+0x8c/0x158
    [c0000000fe08bb30] [c00000000035b9f4] .__platform_driver_register+0x6c/0x80
    [c0000000fe08bba0] [c00000000084e080] .of_flash_driver_init+0x1c/0x30
    [c0000000fe08bc10] [c000000000001864] .do_one_initcall+0xbc/0x238
    [c0000000fe08bd00] [c00000000082cdc0] .kernel_init_freeable+0x188/0x268
    [c0000000fe08bdb0] [c0000000000020a0] .kernel_init+0x1c/0xf7c
    [c0000000fe08be30] [c000000000000884] .ret_from_kernel_thread+0x58/0xd4
    Instruction dump:
    41bd0010 480000c8 4bf04eb5 60000000 e94d0028 e93f0000 7cc95214 e8a60008
    7fc9502a 2fbe0000 419e00c8 e93f0022 39200000 88ed06b2 992d06b2
    ---[ end trace b4c9a94804a42d40 ]---

    It seems that the corrupted partition header on my mtd device triggers
    a bug in the ftl. In function build_maps() it will allocate the buffers
    needed by the mtd partition, but if something goes wrong such as kmalloc
    failure, mtd read error or invalid partition header parameter, it will
    free all allocated buffers and then return non-zero. In my case, it
    seems that partition header parameter 'NumTransferUnits' is invalid.

    And the ftl_freepart() is a function which free all the partition
    buffers allocated by build_maps(). Given the build_maps() is a self
    cleaning function, so there is no need to invoke this function even
    if build_maps() return with error. Otherwise it will causes the
    buffers to be freed twice and then weird things would happen.

    Cc: stable@vger.kernel.org
    Signed-off-by: Kevin Hao
    Signed-off-by: Brian Norris

    Kevin Hao
     
  • Fix various whitespace issues.

    No functional changes.

    Signed-off-by: Rob Ward
    Signed-off-by: Brian Norris

    Rob Ward
     
  • Signed-off-by: Sergey Ryazanov
    Acked-by: Marek Vasut
    Signed-off-by: Brian Norris

    Sergey Ryazanov
     

14 Jul, 2014

2 commits

  • This family of chips was long ago supported by the pre-cfi driver.
    CFI code tested on several Zaurus SL-5500 (Collie) 2x16 on 32 bit bus.

    Function is_LH28F640BF() mimics is_m29ew() from cmdset_0002.c

    Buffer write fixes as seen in 2007 patch c/o
    Anti Sullin artecdesign.ee>
    http://comments.gmane.org/gmane.linux.ports.arm.kernel/36733

    [Brian: this patch is semi-urgent, because the following patch switches
    to using CFI detection for a chip which (until now) is unsupported by
    the CFI driver

    9218310 ARM: 8084/1: sa1100: collie: revert back to cfi_probe
    ]

    Signed-off-by: Andrea Adami
    Signed-off-by: Brian Norris

    Andrea Adami
     
  • In commit 67a9ad9b8a6f ("mtd: nand: Warn the user if the selected ECC
    strength is too weak"), a check was added to inform the user when the
    ECC used for a NAND device is weaker than the recommended ECC
    advertised by the NAND chip. However, the warning uses WARN_ON(),
    which has two undesirable side-effects:

    - It just prints to the kernel log the fact that there is a warning
    in this file, at this line, but it doesn't explain anything about
    the warning itself.

    - It dumps a stack trace which is very noisy, for something that the
    user is most likely not able to fix. If a certain ECC used by the
    kernel is weaker than the advertised one, it's most likely to make
    sure the kernel uses an ECC that is compatible with the one used by
    the bootloader, and changing the bootloader may not necessarily be
    easy. Therefore, normal users would not be able to do anything to
    fix this very noisy warning, and will have to suffer from it at
    every kernel boot. At least every time I see this stack trace in my
    kernel boot log, I wonder what new thing is broken, just to realize
    that it's once again this NAND ECC warning.

    Therefore, this commit turns:

    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 1 at /home/thomas/projets/linux-2.6/drivers/mtd/nand/nand_base.c:4051 nand_scan_tail+0x538/0x780()
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper Not tainted 3.16.0-rc3-dirty #4
    [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
    [] (show_stack) from [] (warn_slowpath_common+0x6c/0x8c)
    [] (warn_slowpath_common) from [] (warn_slowpath_null+0x1c/0x24)
    [] (warn_slowpath_null) from [] (nand_scan_tail+0x538/0x780)
    [] (nand_scan_tail) from [] (orion_nand_probe+0x224/0x2e4)
    [] (orion_nand_probe) from [] (platform_drv_probe+0x18/0x4c)
    [] (platform_drv_probe) from [] (really_probe+0x80/0x218)
    [] (really_probe) from [] (__driver_attach+0x98/0x9c)
    [] (__driver_attach) from [] (bus_for_each_dev+0x64/0x94)
    [] (bus_for_each_dev) from [] (bus_add_driver+0x144/0x1ec)
    [] (bus_add_driver) from [] (driver_register+0x78/0xf8)
    [] (driver_register) from [] (platform_driver_probe+0x20/0xb8)
    [] (platform_driver_probe) from [] (do_one_initcall+0x80/0x1d8)
    [] (do_one_initcall) from [] (kernel_init_freeable+0xf4/0x1b4)
    [] (kernel_init_freeable) from [] (kernel_init+0x8/0xec)
    [] (kernel_init) from [] (ret_from_fork+0x14/0x24)
    ---[ end trace 62f87d875aceccb4 ]---

    Into the much shorter, and much more useful:

    nand: WARNING: MT29F2G08ABAEAWP: the ECC used on your system is too weak compared to the one required by the NAND chip

    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Brian Norris

    Thomas Petazzoni
     

13 Jul, 2014

1 commit


12 Jul, 2014

5 commits


09 Jul, 2014

3 commits

  • With the introduction of mtd_block_isreserved(), it's now possible
    to fix the bad and reserved block distribution exposed by ecc_stats,
    instead of accounting all the bad or reserved blocks as 'bad'.

    Signed-off-by: Ezequiel Garcia
    Tested-by: Pekon Gupta
    Signed-off-by: Brian Norris

    Ezequiel Garcia
     
  • In addition to mtd_block_isbad(), which checks if a block is bad or
    reserved, it's needed to check if a block is reserved only (but not
    bad). This commit adds an MTD interface for it, in a similar fashion to
    mtd_block_isbad().

    While here, fix mtd_block_isbad() so the out-of-bounds checking is done
    before the callback check.

    Signed-off-by: Ezequiel Garcia
    Tested-by: Pekon Gupta
    Signed-off-by: Brian Norris

    Ezequiel Garcia
     
  • These new sysfs device attributes allow us to retrieve the ECC and bad
    block stats by poking a sysfs file, which is often more convenient than
    using the ioctl.

    Signed-off-by: Ezequiel Garcia
    Tested-by: Pekon Gupta
    Signed-off-by: Brian Norris

    Ezequiel Garcia
     

06 Jul, 2014

2 commits