All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] scsi: ufs: continue to boot even with Boot LUN is disabled
@ 2017-09-22 10:31 Huanlin Ke
  2017-09-26 21:33 ` Subhash Jadavani
  2017-09-28  1:46 ` Martin K. Petersen
  0 siblings, 2 replies; 3+ messages in thread
From: Huanlin Ke @ 2017-09-22 10:31 UTC (permalink / raw)
  To: vinholikatti; +Cc: jejb, martin.petersen, linux-scsi, linux-kernel, kehuanlin

Several configurable fields of the Device Descriptor and the Unit
Descriptors determine the Boot LUN status. The bBootEnable field and
the bBootLunEn attribute is set to zero by default, so the Boot LUN is
disabled by default.

At which point the scsi device add for Boot LUN will fail, but we can
continue to use the ufs device in fact. This failure shouldn't abort the
device boot.

Signed-off-by: Huanlin Ke <kehuanlin@pinecone.net>
---
 drivers/scsi/ufs/ufshcd.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 794a460..bff84be 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -5998,25 +5998,22 @@ static int ufshcd_scsi_add_wlus(struct ufs_hba *hba)
 	}
 	scsi_device_put(hba->sdev_ufs_device);
 
-	sdev_boot = __scsi_add_device(hba->host, 0, 0,
-		ufshcd_upiu_wlun_to_scsi_wlun(UFS_UPIU_BOOT_WLUN), NULL);
-	if (IS_ERR(sdev_boot)) {
-		ret = PTR_ERR(sdev_boot);
-		goto remove_sdev_ufs_device;
-	}
-	scsi_device_put(sdev_boot);
-
 	sdev_rpmb = __scsi_add_device(hba->host, 0, 0,
 		ufshcd_upiu_wlun_to_scsi_wlun(UFS_UPIU_RPMB_WLUN), NULL);
 	if (IS_ERR(sdev_rpmb)) {
 		ret = PTR_ERR(sdev_rpmb);
-		goto remove_sdev_boot;
+		goto remove_sdev_ufs_device;
 	}
 	scsi_device_put(sdev_rpmb);
+
+	sdev_boot = __scsi_add_device(hba->host, 0, 0,
+		ufshcd_upiu_wlun_to_scsi_wlun(UFS_UPIU_BOOT_WLUN), NULL);
+	if (IS_ERR(sdev_boot))
+		dev_err(hba->dev, "%s: BOOT WLUN not found\n", __func__);
+	else
+		scsi_device_put(sdev_boot);
 	goto out;
 
-remove_sdev_boot:
-	scsi_remove_device(sdev_boot);
 remove_sdev_ufs_device:
 	scsi_remove_device(hba->sdev_ufs_device);
 out:
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] scsi: ufs: continue to boot even with Boot LUN is disabled
  2017-09-22 10:31 [PATCH] scsi: ufs: continue to boot even with Boot LUN is disabled Huanlin Ke
@ 2017-09-26 21:33 ` Subhash Jadavani
  2017-09-28  1:46 ` Martin K. Petersen
  1 sibling, 0 replies; 3+ messages in thread
From: Subhash Jadavani @ 2017-09-26 21:33 UTC (permalink / raw)
  To: Huanlin Ke
  Cc: vinholikatti, jejb, martin.petersen, linux-scsi, linux-kernel,
	kehuanlin, linux-scsi-owner

On 2017-09-22 03:31, Huanlin Ke wrote:
> Several configurable fields of the Device Descriptor and the Unit
> Descriptors determine the Boot LUN status. The bBootEnable field and
> the bBootLunEn attribute is set to zero by default, so the Boot LUN is
> disabled by default.
> 
> At which point the scsi device add for Boot LUN will fail, but we can
> continue to use the ufs device in fact. This failure shouldn't abort 
> the
> device boot.
> 
> Signed-off-by: Huanlin Ke <kehuanlin@pinecone.net>
> ---
>  drivers/scsi/ufs/ufshcd.c | 19 ++++++++-----------
>  1 file changed, 8 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> index 794a460..bff84be 100644
> --- a/drivers/scsi/ufs/ufshcd.c
> +++ b/drivers/scsi/ufs/ufshcd.c
> @@ -5998,25 +5998,22 @@ static int ufshcd_scsi_add_wlus(struct ufs_hba 
> *hba)
>  	}
>  	scsi_device_put(hba->sdev_ufs_device);
> 
> -	sdev_boot = __scsi_add_device(hba->host, 0, 0,
> -		ufshcd_upiu_wlun_to_scsi_wlun(UFS_UPIU_BOOT_WLUN), NULL);
> -	if (IS_ERR(sdev_boot)) {
> -		ret = PTR_ERR(sdev_boot);
> -		goto remove_sdev_ufs_device;
> -	}
> -	scsi_device_put(sdev_boot);
> -
>  	sdev_rpmb = __scsi_add_device(hba->host, 0, 0,
>  		ufshcd_upiu_wlun_to_scsi_wlun(UFS_UPIU_RPMB_WLUN), NULL);
>  	if (IS_ERR(sdev_rpmb)) {
>  		ret = PTR_ERR(sdev_rpmb);
> -		goto remove_sdev_boot;
> +		goto remove_sdev_ufs_device;
>  	}
>  	scsi_device_put(sdev_rpmb);
> +
> +	sdev_boot = __scsi_add_device(hba->host, 0, 0,
> +		ufshcd_upiu_wlun_to_scsi_wlun(UFS_UPIU_BOOT_WLUN), NULL);
> +	if (IS_ERR(sdev_boot))
> +		dev_err(hba->dev, "%s: BOOT WLUN not found\n", __func__);
> +	else
> +		scsi_device_put(sdev_boot);
>  	goto out;
> 
> -remove_sdev_boot:
> -	scsi_remove_device(sdev_boot);
>  remove_sdev_ufs_device:
>  	scsi_remove_device(hba->sdev_ufs_device);
>  out:

Looks good to me.
Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>

-- 
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] scsi: ufs: continue to boot even with Boot LUN is disabled
  2017-09-22 10:31 [PATCH] scsi: ufs: continue to boot even with Boot LUN is disabled Huanlin Ke
  2017-09-26 21:33 ` Subhash Jadavani
@ 2017-09-28  1:46 ` Martin K. Petersen
  1 sibling, 0 replies; 3+ messages in thread
From: Martin K. Petersen @ 2017-09-28  1:46 UTC (permalink / raw)
  To: Huanlin Ke
  Cc: vinholikatti, jejb, martin.petersen, linux-scsi, linux-kernel, kehuanlin


Huanlin,

> Several configurable fields of the Device Descriptor and the Unit
> Descriptors determine the Boot LUN status. The bBootEnable field and
> the bBootLunEn attribute is set to zero by default, so the Boot LUN is
> disabled by default.
>
> At which point the scsi device add for Boot LUN will fail, but we can
> continue to use the ufs device in fact. This failure shouldn't abort the
> device boot.

Applied to 4.15/scsi-queue. Thank you!

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-09-28  1:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-22 10:31 [PATCH] scsi: ufs: continue to boot even with Boot LUN is disabled Huanlin Ke
2017-09-26 21:33 ` Subhash Jadavani
2017-09-28  1:46 ` Martin K. Petersen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.