Patch for Beagle Bone Black eMMC to dump boot partions

From Exploitee.rs
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


About

The patch below is intended to assist in dumping the boot partitions from a connected eMMC flash by patching the kernel provided with the Beagle Bone Black.

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index aaed768..732e6e5 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -889,7 +889,9 @@ void mmc_set_chip_select(struct mmc_host *host, int mode)
  */
 static void __mmc_set_clock(struct mmc_host *host, unsigned int hz)
 {
-	WARN_ON(hz < host->f_min);
+	//maximus64 WARN_ON(hz < host->f_min);
+	if (hz < host->f_min)
+		hz = host->f_min;	
 
 	if (hz > host->f_max)
 		hz = host->f_max;
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 2743b7d..e53d19d 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1028,7 +1028,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
 	/*
 	 * Activate high speed (if supported)
 	 */
-	if (card->ext_csd.hs_max_dtr != 0) {
+	//maximus64 if (card->ext_csd.hs_max_dtr != 0) {
+	if (0) {
 		err = 0;
 		if (card->ext_csd.hs_max_dtr > 52000000 &&
 		    host->caps2 & MMC_CAP2_HS200)
@@ -1077,7 +1078,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
 	/*
 	 * Indicate DDR mode (if supported).
 	 */
-	if (mmc_card_highspeed(card)) {
+	//maximus64 if (mmc_card_highspeed(card)) {
+	if (0) {
 		if ((card->ext_csd.card_type & EXT_CSD_CARD_TYPE_DDR_1_8V)
 			&& ((host->caps & (MMC_CAP_1_8V_DDR |
 			     MMC_CAP_UHS_DDR50))
@@ -1093,7 +1095,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
 	/*
 	 * Indicate HS200 SDR mode (if supported).
 	 */
-	if (mmc_card_hs200(card)) {
+	//maximus64 if (mmc_card_hs200(card)) {
+	if (0) {
 		u32 ext_csd_bits;
 		u32 bus_width = card->host->ios.bus_width;
 
@@ -1133,9 +1136,10 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
 	/*
 	 * Activate wide bus and DDR (if supported).
 	 */
-	if (!mmc_card_hs200(card) &&
-	    (card->csd.mmca_vsn >= CSD_SPEC_VER_4) &&
-	    (host->caps & (MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA))) {
+	//maximus64 if (!mmc_card_hs200(card) &&
+	//    (card->csd.mmca_vsn >= CSD_SPEC_VER_4) &&
+	//    (host->caps & (MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA))) {
+	if (0) {
 		static unsigned ext_csd_bits[][2] = {
 			{ EXT_CSD_BUS_WIDTH_8, EXT_CSD_DDR_BUS_WIDTH_8 },
 			{ EXT_CSD_BUS_WIDTH_4, EXT_CSD_DDR_BUS_WIDTH_4 },
@@ -1235,7 +1239,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
 	/*
 	 * Enable HPI feature (if supported)
 	 */
-	if (card->ext_csd.hpi) {
+	//maximus64 if (card->ext_csd.hpi) {
+	if (0) {
 		err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
 				EXT_CSD_HPI_MGMT, 1,
 				card->ext_csd.generic_cmd6_time);
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 74972c2..8a9f5ff 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -617,9 +617,10 @@ static int mmc_sd_init_uhs_card(struct mmc_card *card)
 	}
 
 	/* Set 4-bit bus width */
-	if ((card->host->caps & MMC_CAP_4_BIT_DATA) &&
-	    (card->scr.bus_widths & SD_SCR_BUS_WIDTH_4)) {
-		err = mmc_app_set_bus_width(card, MMC_BUS_WIDTH_4);
+	//if ((card->host->caps & MMC_CAP_4_BIT_DATA) &&
+	//    (card->		if (err)
 			goto out;
 
@@ -987,10 +988,11 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
 
 		/*
 		 * Switch to wider bus (if supported).
-		 */
-		if ((host->caps & MMC_CAP_4_BIT_DATA) &&
-			(card->scr.bus_widths & SD_SCR_BUS_WIDTH_4)) {
-			err = mmc_app_set_bus_width(card, MMC_BUS_WIDTH_4);
+		 */		
+		//if ((host->caps & MMC_CAP_4_BIT_DATA) &&
+		//	(card->scr.bus_widths &