[PATCH v4 6/9] powerpc/pseries/vas: Close windows with DLPAR core removal

Nicholas Piggin npiggin at gmail.com
Wed Feb 23 18:23:19 AEDT 2022


Excerpts from Haren Myneni's message of February 20, 2022 6:00 am:
> 
> The hypervisor assigns vas credits (windows) for each LPAR based
> on the number of cores configured in that system. The OS is
> expected to release credits when cores are removed, and may
> allocate more when cores are added. So there is a possibility of
> using excessive credits (windows) in the LPAR and the hypervisor
> expects the system to close the excessive windows so that NX load
> can be equally distributed across all LPARs in the system.
> 
> When the OS closes the excessive windows in the hypervisor,
> it sets the window status in-active and invalidates window
> virtual address mapping. The user space receives paste instruction
> failure if any NX requests are issued on the in-active window.

Thanks for adding this paragraph. Then presumably userspace can
update their windows and be able to re-try with an available open
window?

in-active can be one word, not hyphenated.


> 
> This patch also adds the notifier for core removal/add to close
> windows in the hypervisor if the system lost credits (core
> removal) and reopen windows in the hypervisor when the previously
> lost credits are available.
> 
> Signed-off-by: Haren Myneni <haren at linux.ibm.com>
> ---
>  arch/powerpc/include/asm/vas.h       |   2 +
>  arch/powerpc/platforms/pseries/vas.c | 207 +++++++++++++++++++++++++--
>  arch/powerpc/platforms/pseries/vas.h |   3 +
>  3 files changed, 204 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/vas.h b/arch/powerpc/include/asm/vas.h
> index 27251af18c65..6baf7b9ffed4 100644
> --- a/arch/powerpc/include/asm/vas.h
> +++ b/arch/powerpc/include/asm/vas.h
> @@ -34,6 +34,8 @@
>   */
>  #define VAS_WIN_ACTIVE		0x0	/* Used in platform independent */
>  					/* vas mmap() */
> +/* Window is closed in the hypervisor due to lost credit */
> +#define VAS_WIN_NO_CRED_CLOSE	0x00000001

I thought we were getting a different status for software
status vs status rturned by hypervisor?

> diff --git a/arch/powerpc/platforms/pseries/vas.h b/arch/powerpc/platforms/pseries/vas.h
> index 2872532ed72a..701363cfd7c1 100644
> --- a/arch/powerpc/platforms/pseries/vas.h
> +++ b/arch/powerpc/platforms/pseries/vas.h
> @@ -83,6 +83,9 @@ struct vas_cop_feat_caps {
>  struct vas_caps {
>  	struct vas_cop_feat_caps caps;
>  	struct list_head list;	/* List of open windows */
> +	int nr_close_wins;	/* closed windows in the hypervisor for DLPAR */
> +	int nr_open_windows;	/* Number of successful open windows */
> +	u8 feat;		/* Feature type */
>  };

Still not entirely sold on the idea that nr_open_windows is a feature
or capability, but if the code works out easier this way, sometimes
these little hacks are reasonable.

Thanks,
Nick


More information about the Linuxppc-dev mailing list