From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932517AbcKASRw (ORCPT ); Tue, 1 Nov 2016 14:17:52 -0400 Received: from skprod3.natinst.com ([130.164.80.24]:44592 "EHLO ni.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754099AbcKASRY (ORCPT ); Tue, 1 Nov 2016 14:17:24 -0400 From: Zach Brown To: CC: , , , , , Subject: [PATCH v4 0/5] mtd: use ONFI bad blocks per LUN to calculate UBI bad PEB limit Date: Tue, 1 Nov 2016 13:16:25 -0500 Message-ID: <1478024190-13713-1-git-send-email-zach.brown@ni.com> X-Mailer: git-send-email 2.7.4 X-MIMETrack: Itemize by SMTP Server on US-AUS-MGWOut2/AUS/H/NIC(Release 8.5.3FP6 HF1218|December 12, 2014) at 11/01/2016 01:16:20 PM, Serialize by Router on US-AUS-MGWOut2/AUS/H/NIC(Release 8.5.3FP6 HF1218|December 12, 2014) at 11/01/2016 01:16:20 PM, Serialize complete at 11/01/2016 01:16:20 PM MIME-Version: 1.0 Content-Type: text/plain X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-11-01_04:,, signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609300000 definitions=main-1611010314 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org For ONFI-compliant NAND devices, the ONFI parameters report the maximum number of bad blocks per LUN that will be encountered over the lifetime of the device, so we can use that information to get a more accurate (and smaller) value for the UBI bad PEB limit. The ONFI parameter "maxiumum number of bad blocks per LUN" is the max number of bad blocks that each individual LUN will ever ecounter. It is not the number of bad blocks to reserve for the nand device per LUN in the device. This means that in the worst case a UBI device spanning X LUNs will encounter "maximum number of bad blocks per LUN" * X bad blocks. The implementation in this patch assumes this worst case and allocates bad block accordingly. These patches are ordered in terms of their dependencies, but ideally, all 5 would need to be applied for this to work as intended. v1: * Changed commit message to address concerns from v1[1] about this patch set making best case assumptions. v2: * Provided helper function for _max_bad_blocks * Two new patches * First new patch adds bb_per_lun and blocks_per_lun to nand_chip struct * Second new patch sets the new fields during nand_flash_detect_onfi * Max bad blocks calculation now uses the new nand_chip fields v3: * Changed bb_per_lun and blocks_per_lun to bb_per_die and blocks_per_die * Corrected type of bb_per_die and blocks_per_die from little endian to host unsigned int [1] http://lkml.iu.edu/hypermail/linux/kernel/1505.1/04822.html Jeff Westfahl (2): mtd: introduce function max_bad_blocks mtd: ubi: use 'max_bad_blocks' to compute bad_peb_limit if available Zach Brown (3): mtd: nand: Add bb_per_die and blocks_per_die fields to nand_chip mtd: nand: implement 'max_bad_blocks' mtd function mtd: nand: set bb_per_die and blocks_per_die for ONFI compliant chips drivers/mtd/mtdpart.c | 13 +++++++++++++ drivers/mtd/nand/nand_base.c | 39 +++++++++++++++++++++++++++++++++++++++ drivers/mtd/ubi/build.c | 4 ++++ include/linux/mtd/mtd.h | 11 +++++++++++ include/linux/mtd/nand.h | 5 +++++ 5 files changed, 72 insertions(+) -- 2.7.4