RE: [External] Re: [PATCH 3/5] s390, dcssblk: Allow a NULL-kaddr to ->direct_access()

From: Huaisheng HS1 Ye
Date: Tue Jul 24 2018 - 05:47:08 EST


From: Christian Borntraeger <borntraeger@xxxxxxxxxx>
Sent: Tuesday, July 24, 2018 4:54 PM
> On 07/24/2018 10:45 AM, Huaisheng Ye wrote:
> > From: Huaisheng Ye <yehs1@xxxxxxxxxx>
> >
> > dcssblk_direct_access() needs to check the validity of second rank
> > pointer kaddr for NULL assignment. If kaddr equals to NULL, it
> > doesn't need to calculate the value.
> >
> > Signed-off-by: Huaisheng Ye <yehs1@xxxxxxxxxx>
> > ---
> > drivers/s390/block/dcssblk.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/s390/block/dcssblk.c b/drivers/s390/block/dcssblk.c
> > index 0a312e4..9c13dc5 100644
> > --- a/drivers/s390/block/dcssblk.c
> > +++ b/drivers/s390/block/dcssblk.c
> > @@ -915,7 +915,8 @@ static DEVICE_ATTR(save, S_IWUSR | S_IRUSR, dcssblk_save_show,
> > unsigned long dev_sz;
> >
> > dev_sz = dev_info->end - dev_info->start + 1;
> > - *kaddr = (void *) dev_info->start + offset;
> > + if (kaddr)
> > + *kaddr = (void *) dev_info->start + offset;
>
> So you are trading of a load + add (dev_info->start should be cache hot) against a
> compare+branch . Not sure that this is always a win.

Hmm...the calculation process of pfn is more complicated than kaddr. I think you agree to check pfn but not sure kaddr, right?
From the logical consistency of code, I think it shall be better to give pfn and kaddr similar treatment.

Cheers,
Huaisheng Ye