Re: [PATCH v2 12/24] mpi3mr: add bios_param shost template hook

Tomas Henzl
2021-04-15T11:57:16Z

On 4/7/21 4:04 AM, Kashyap Desai wrote:
> Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com>
> Reviewed-by: Hannes Reinecke <hare@suse.de>
> Cc: sathya.prakash@broadcom.com
> ---
> drivers/scsi/mpi3mr/mpi3mr_os.c | 40 +++++++++++++++++++++++++++++++++
> 1 file changed, 40 insertions(+)
>
> diff --git a/drivers/scsi/mpi3mr/mpi3mr_os.c b/drivers/scsi/mpi3mr/mpi3mr_os.c
> index dd9452de76f8..25539380968d 100644
> --- a/drivers/scsi/mpi3mr/mpi3mr_os.c
> +++ b/drivers/scsi/mpi3mr/mpi3mr_os.c
> @@ -2075,6 +2075,45 @@ static int mpi3mr_build_sg_scmd(struct mpi3mr_ioc *mrioc,
> return ret;
> }
>
> +/**
> + * mpi3mr_bios_param - BIOS param callback
> + * @sdev: SCSI device reference
> + * @bdev: Block device reference
> + * @capacity: Capacity in logical sectors
> + * @params: Parameter array
> + *
> + * Just the parameters with heads/secots/cylinders.
> + *
> + * Return: 0 always
> + */
> +static int mpi3mr_bios_param(struct scsi_device *sdev,
> + struct block_device *bdev, sector_t capacity, int params[])
> +{
> + int heads;
> + int sectors;
> + sector_t cylinders;
> + ulong dummy;
> +
> + heads = 64;
> + sectors = 32;
> +
> + dummy = heads * sectors;
> + cylinders = capacity;
> + sector_div(cylinders, dummy);
> +
> + if ((ulong)capacity >= 0x200000) {
> + heads = 255;
> + sectors = 63;
> + dummy = heads * sectors;
> + cylinders = capacity;
> + sector_div(cylinders, dummy);
> + }
> +
> + params[0] = heads;
> + params[1] = sectors;
> + params[2] = cylinders;
> + return 0;
> +}
>
> /**
> * mpi3mr_map_queues - Map queues callback handler
> @@ -2508,6 +2547,7 @@ static struct scsi_host_template mpi3mr_driver_template = {
> .slave_destroy = mpi3mr_slave_destroy,
> .scan_finished = mpi3mr_scan_finished,
> .scan_start = mpi3mr_scan_start,
> + .bios_param = mpi3mr_bios_param,
> .map_queues = mpi3mr_map_queues,
> .no_write_same = 1,
> .can_queue = 1,
>

Looks good

Reviewed-by: Tomas Henzl <thenzl@redhat.com>