diff --git a/components/bootloader/zynqmp_fsbl/xfsbl_main.c b/components/bootloader/zynqmp_fsbl/xfsbl_main.c
index 1fd23da..ae3040a 100644
--- a/components/bootloader/zynqmp_fsbl/xfsbl_main.c
+++ b/components/bootloader/zynqmp_fsbl/xfsbl_main.c
@@ -339,6 +339,8 @@ void XFsbl_PrintFsblBanner(void )
 	XFsbl_Printf(DEBUG_PRINT_ALWAYS,
                  "Release %d.%d   %s  -  %s\r\n",
                  SDK_RELEASE_YEAR, SDK_RELEASE_QUARTER,__DATE__,__TIME__);
+	XFsbl_Printf(DEBUG_PRINT_ALWAYS,
+                 "BSC variant with fallback recover (v0.1.0) \n\r");
 #endif
 
 	/**
diff --git a/components/bootloader/zynqmp_fsbl/xfsbl_misc.c b/components/bootloader/zynqmp_fsbl/xfsbl_misc.c
index aeb7cf5..2235e3c 100644
--- a/components/bootloader/zynqmp_fsbl/xfsbl_misc.c
+++ b/components/bootloader/zynqmp_fsbl/xfsbl_misc.c
@@ -364,7 +364,7 @@ u32 XFsbl_Htonl(u32 Value1)
  *
  ******************************************************************************/
 void XFsbl_MakeSdFileName(char *XFsbl_SdEmmcFileName,
-		u32 MultibootReg, u32 DrvNum)
+		u32 MultibootReg, u32 DrvNum, u32 FlbkOn)
 {
 
 	u32 Index;
@@ -372,7 +372,18 @@ void XFsbl_MakeSdFileName(char *XFsbl_SdEmmcFileName,
 	u32 FileNameLen;
 	u32 MultiBootNum = MultibootReg;
 
-	if (0x0U == MultiBootNum)
+	if (0x0U != FlbkOn)
+	{
+		/* SD file name is FLBK.BIN when FlbkOn is not 0 */
+		if (DrvNum == XFSBL_SD_DRV_NUM_0) {
+			(void)XFsbl_Strcpy((char *)XFsbl_SdEmmcFileName, "FLBK.BIN");
+		}
+		else {
+			/* For second SD instance, include drive number 1 as well */
+			(void)XFsbl_Strcpy((char *)XFsbl_SdEmmcFileName, "1:/FLBK.BIN");
+		}
+	}
+	else if (0x0U == MultiBootNum)
 	{
 		/* SD file name is BOOT.BIN when Multiboot register value is 0 */
 		if (DrvNum == XFSBL_SD_DRV_NUM_0) {
diff --git a/components/bootloader/zynqmp_fsbl/xfsbl_misc.h b/components/bootloader/zynqmp_fsbl/xfsbl_misc.h
index 9a6eea3..0185b7d 100644
--- a/components/bootloader/zynqmp_fsbl/xfsbl_misc.h
+++ b/components/bootloader/zynqmp_fsbl/xfsbl_misc.h
@@ -81,7 +81,7 @@ char *XFsbl_Strcpy(char *DestPtr, const char *SrcPtr);
 char * XFsbl_Strcat(char* Str1Ptr, const char* Str2Ptr);
 int XFsbl_Strcmp(const char* Str1Ptr, const char* Str2Ptr);
 void XFsbl_MakeSdFileName(char *XFsbl_SdEmmcFileName,
-		u32 MultibootReg, u32 DrvNum);
+		u32 MultibootReg, u32 DrvNum, u32 FlbkOn);
 u32 XFsbl_GetDrvNumSD(u32 DeviceFlags);
 u32 XFsbl_Htonl(u32 Value1);
 u32 XFsbl_PowerUpIsland(u32 PwrIslandMask);
diff --git a/components/bootloader/zynqmp_fsbl/xfsbl_sd.c b/components/bootloader/zynqmp_fsbl/xfsbl_sd.c
index 06cb472..0d37707 100644
--- a/components/bootloader/zynqmp_fsbl/xfsbl_sd.c
+++ b/components/bootloader/zynqmp_fsbl/xfsbl_sd.c
@@ -66,7 +66,7 @@
 
 /************************** Function Prototypes ******************************/
 extern void XFsbl_MakeSdFileName(char *XFsbl_SdEmmcFileName,
-		u32 MultibootReg, u32 DrvNum);
+		u32 MultibootReg, u32 DrvNum, u32 FlbkOn);
 
 extern u32 XFsbl_GetDrvNumSD(u32 DeviceFlags);
 
@@ -93,6 +93,9 @@ u32 XFsbl_SdInit(u32 DeviceFlags)
 	u32 MultiBootOffset=0U;
 	TCHAR *path;
 	u32 DrvNum;
+	char *fallback_file;
+	FIL fallbackFil;
+	u32 FlbkOn = 0;
 
 	DrvNum = XFsbl_GetDrvNumSD(DeviceFlags);
 
@@ -105,8 +108,8 @@ u32 XFsbl_SdInit(u32 DeviceFlags)
 	}
 
 	/* Register volume work area, initialize device */
-	rc = f_mount(&fatfs, path, 0);
-	XFsbl_Printf(DEBUG_INFO,"SD: rc= %.8x\n\r", rc);
+	rc = f_mount(&fatfs, path, 1/*Mount now*/);
+	XFsbl_Printf(DEBUG_INFO,"SD: path='%s' rc= %.8x\n\r", path, rc);
 
 	if (rc != FR_OK) {
 		Status = XFSBL_ERROR_SD_INIT;
@@ -120,9 +123,30 @@ u32 XFsbl_SdInit(u32 DeviceFlags)
         MultiBootOffset = XFsbl_In32(CSU_CSU_MULTI_BOOT);
 
 	/**
+	 * Check if fallback is enabled
+	 */
+	fallback_file = DrvNum == XFSBL_SD_DRV_NUM_0 ? "FLBK.TXT" : "1:/FLBK.TXT";
+	XFsbl_Printf(DEBUG_INFO,"Checking fallback trigger file: '%s'\n\r", fallback_file);
+	rc = f_open(&fallbackFil, fallback_file, FA_CREATE_NEW);
+	if (rc == FR_EXIST) {
+		//Previous boot failed -> Fallback mode ON
+		XFsbl_Printf(DEBUG_INFO,"    Found fallback trigger file. Fallback mode ON\n\r");
+		FlbkOn = 1;
+	} else if (rc == FR_OK) {
+		//Previous boot seems to be valid
+		XFsbl_Printf(DEBUG_INFO,"    Created fallback trigger file. Fallback mode OFF\n\r");
+		f_close(&fallbackFil);
+	} else {
+		XFsbl_Printf(DEBUG_INFO,"    Error opening trigger file: rc= %.8x\n\r", rc);
+		Status = XFSBL_ERROR_SD_F_OPEN;
+		XFsbl_Printf(DEBUG_GENERAL,"XFSBL_ERROR_SD_F_OPEN\n\r");
+		goto END;
+	}
+
+	/**
 	 * Create boot image name
 	 */
-	XFsbl_MakeSdFileName(boot_file, MultiBootOffset, DrvNum);
+	XFsbl_MakeSdFileName(boot_file, MultiBootOffset, DrvNum, FlbkOn);
 
 	rc = f_open(&fil, boot_file, FA_READ);
 	if (rc) {
