]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - queue-3.18/mmc-block-allow-more-than-8-partitions-per-card.patch
fix up powerpc patch headers, I messed up.
[thirdparty/kernel/stable-queue.git] / queue-3.18 / mmc-block-allow-more-than-8-partitions-per-card.patch
CommitLineData
de78ab3b
SL
1From 3e09eac23f9a4bad835758bb23ece58acdb5836a Mon Sep 17 00:00:00 2001
2From: Colin Cross <ccross@android.com>
3Date: Thu, 22 Oct 2015 10:00:41 -0700
4Subject: mmc: block: Allow more than 8 partitions per card
5
6[ Upstream commit 382c55f88ffeb218c446bf0c46d0fc25d2795fe2 ]
7
8It is quite common for Android devices to utilize more
9then 8 partitions on internal eMMC storage.
10
11The vanilla kernel can support this via
12CONFIG_MMC_BLOCK_MINORS, however that solution caps the
13system to 256 minors total, which limits the number of
14mmc cards the system can support.
15
16This patch, which has been carried for quite awhile in
17the AOSP common tree, provides an alternative solution
18that doesn't seem to limit the total card count. So I
19wanted to submit it for consideration upstream.
20
21This patch sets the GENHD_FL_EXT_DEVT flag, which will
22allocate minor number in major 259 for partitions past
23disk->minors.
24
25It also removes the use of disk_devt to determine devidx
26from md->disk. md->disk->first_minor is always initialized
27from devidx and can always be used to recover it.
28
29Cc: Ulf Hansson <ulf.hansson@linaro.org>
30Cc: Adrian Hunter <adrian.hunter@intel.com>
31Cc: Ben Hutchings <ben@decadent.org.uk>
32Cc: Chuanxiao Dong <chuanxiao.dong@intel.com>
33Cc: Shawn Lin <shawn.lin@rock-chips.com>
34Cc: Austin S Hemmelgarn <ahferroin7@gmail.com>
35Cc: Arnd Bergmann <arnd@arndb.de>
36Cc: Android Kernel Team <kernel-team@android.com>
37Cc: linux-mmc@vger.kernel.org
38Signed-off-by: Colin Cross <ccross@android.com>
39[jstultz: Added context to commit message]
40Signed-off-by: John Stultz <john.stultz@linaro.org>
41Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
42Signed-off-by: Sasha Levin <sashal@kernel.org>
43---
44 drivers/mmc/card/block.c | 7 ++-----
45 1 file changed, 2 insertions(+), 5 deletions(-)
46
47diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
48index dec6b0ec4def..8688ac7a45da 100644
49--- a/drivers/mmc/card/block.c
50+++ b/drivers/mmc/card/block.c
51@@ -166,11 +166,7 @@ static struct mmc_blk_data *mmc_blk_get(struct gendisk *disk)
52
53 static inline int mmc_get_devidx(struct gendisk *disk)
54 {
55- int devmaj = MAJOR(disk_devt(disk));
56- int devidx = MINOR(disk_devt(disk)) / perdev_minors;
57-
58- if (!devmaj)
59- devidx = disk->first_minor / perdev_minors;
60+ int devidx = disk->first_minor / perdev_minors;
61 return devidx;
62 }
63
64@@ -2152,6 +2148,7 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
65 md->disk->queue = md->queue.queue;
66 md->disk->driverfs_dev = parent;
67 set_disk_ro(md->disk, md->read_only || default_ro);
68+ md->disk->flags = GENHD_FL_EXT_DEVT;
69 if (area_type & (MMC_BLK_DATA_AREA_RPMB | MMC_BLK_DATA_AREA_BOOT))
70 md->disk->flags |= GENHD_FL_NO_PART_SCAN;
71
72--
732.19.1
74