aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio
diff options
context:
space:
mode:
authorEric Farman <farman@linux.ibm.com>2019-06-06 22:28:28 +0200
committerCornelia Huck <cohuck@redhat.com>2019-06-17 13:30:25 +0200
commit8aabf0edae4a6cc82042785079075aebf7cd5c79 (patch)
tree88bf05ae764f131bb329a0a6e2b3a5bd0ba3d7f5 /drivers/s390/cio
parentvfio-ccw: Rearrange pfn_array and pfn_array_table arrays (diff)
downloadlinux-dev-8aabf0edae4a6cc82042785079075aebf7cd5c79.tar.xz
linux-dev-8aabf0edae4a6cc82042785079075aebf7cd5c79.zip
vfio-ccw: Adjust the first IDAW outside of the nested loops
Now that pfn_array_table[] is always an array of 1, it seems silly to check for the very first entry in an array in the middle of two nested loops, since we know it'll only ever happen once. Let's move this outside the loops to simplify things, even though the "k" variable is still necessary. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Message-Id: <20190606202831.44135-7-farman@linux.ibm.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'drivers/s390/cio')
-rw-r--r--drivers/s390/cio/vfio_ccw_cp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/s390/cio/vfio_ccw_cp.c b/drivers/s390/cio/vfio_ccw_cp.c
index 86a0e76ef2b5..ab9f8f0d1b44 100644
--- a/drivers/s390/cio/vfio_ccw_cp.c
+++ b/drivers/s390/cio/vfio_ccw_cp.c
@@ -201,11 +201,12 @@ static inline void pfn_array_table_idal_create_words(
pa = pat->pat_pa + i;
for (j = 0; j < pa->pa_nr; j++) {
idaws[k] = pa->pa_pfn[j] << PAGE_SHIFT;
- if (k == 0)
- idaws[k] += pa->pa_iova & (PAGE_SIZE - 1);
k++;
}
}
+
+ /* Adjust the first IDAW, since it may not start on a page boundary */
+ idaws[0] += pat->pat_pa->pa_iova & (PAGE_SIZE - 1);
}