All of lore.kernel.org
 help / color / mirror / Atom feed
* 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.