* Re: [RFC PATCH v1 03/10] s390/cio: Squash cp_free and cp_unpin_free
[not found] <7f33c9d8-cead-e81a-a5cf-0da7fa938ab8@linux.ibm.com>
@ 2018-11-14 18:12 ` Pierre Morel
0 siblings, 0 replies; only message in thread
From: Pierre Morel @ 2018-11-14 18:12 UTC (permalink / raw)
To: linux-s390, kvm
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 2321 bytes --]
On 09/11/2018 03:39, Eric Farman wrote:
> The routine cp_free() does nothing but call cp_unpin_free(), and while
> most places call cp_free() there is one caller of cp_unpin_free().
>
> Let's avoid the confusion, and make cp_free() do all the work.
>
> Signed-off-by: Eric Farman <farman@linux.ibm.com>
> ---
> drivers/s390/cio/vfio_ccw_cp.c | 30 ++++++++++++------------------
> 1 file changed, 12 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/s390/cio/vfio_ccw_cp.c b/drivers/s390/cio/vfio_ccw_cp.c
> index 70a006ba4d05..a5a701451ef8 100644
> --- a/drivers/s390/cio/vfio_ccw_cp.c
> +++ b/drivers/s390/cio/vfio_ccw_cp.c
> @@ -329,22 +329,6 @@ static void ccwchain_cda_free(struct ccwchain *chain, int idx)
> kfree((void *)(u64)ccw->cda);
> }
>
> -/* Unpin the pages then free the memory resources. */
> -static void cp_unpin_free(struct channel_program *cp)
> -{
> - struct ccwchain *chain, *temp;
> - int i;
> -
> - list_for_each_entry_safe(chain, temp, &cp->ccwchain_list, next) {
> - for (i = 0; i < chain->ch_len; i++) {
> - pfn_array_table_unpin_free(chain->ch_pat + i,
> - cp->mdev);
> - ccwchain_cda_free(chain, i);
> - }
> - ccwchain_free(chain);
> - }
> -}
> -
> /**
> * ccwchain_calc_length - calculate the length of the ccw chain.
> * @iova: guest physical address of the target ccw chain
> @@ -695,7 +679,7 @@ int cp_init(struct channel_program *cp, struct device *mdev, union orb *orb)
> /* Now loop for its TICs. */
> ret = ccwchain_loop_tic(chain, cp);
> if (ret)
> - cp_unpin_free(cp);
> + cp_free(cp);
> /* It is safe to force: if not set but idals used
> * ccwchain_calc_length returns an error.
> */
> @@ -715,7 +699,17 @@ int cp_init(struct channel_program *cp, struct device *mdev, union orb *orb)
> */
> void cp_free(struct channel_program *cp)
> {
> - cp_unpin_free(cp);
> + struct ccwchain *chain, *temp;
> + int i;
> +
> + list_for_each_entry_safe(chain, temp, &cp->ccwchain_list, next) {
> + for (i = 0; i < chain->ch_len; i++) {
> + pfn_array_table_unpin_free(chain->ch_pat + i,
> + cp->mdev);
> + ccwchain_cda_free(chain, i);
> + }
> + ccwchain_free(chain);
> + }
> }
>
> /**
>
LGTM
Reviewed-by: Pierre Morel<pmorel@linux.ibm.com>
--
Pierre Morel
Linux/KVM/QEMU in B�blingen - Germany
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2018-11-14 18:12 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <7f33c9d8-cead-e81a-a5cf-0da7fa938ab8@linux.ibm.com>
2018-11-14 18:12 ` [RFC PATCH v1 03/10] s390/cio: Squash cp_free and cp_unpin_free Pierre Morel
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.