Re: [PATCH v4 03/16] powerpc/vas: Add platform specific user window operations
From: Haren Myneni <haren@linux.ibm.com>
Date: 2021-06-03 20:25:20
Also in:
linuxppc-dev
On Thu, 2021-06-03 at 14:05 +1000, Nicholas Piggin wrote:
Excerpts from Haren Myneni's message of May 21, 2021 7:30 pm:quoted
PowerNV uses registers to open/close VAS windows, and getting the paste address. Whereas the hypervisor calls are used on PowerVM. This patch adds the platform specific user space window operations and register with the common VAS user space interface.Basic idea makes sense. I don't understand this code in detail though. A couple of things,quoted
Signed-off-by: Haren Myneni <haren@linux.ibm.com> --- arch/powerpc/include/asm/vas.h | 14 +++++- arch/powerpc/platforms/book3s/vas-api.c | 52 ++++++++++++----- ---- arch/powerpc/platforms/powernv/vas-window.c | 46 +++++++++++++++++- 3 files changed, 89 insertions(+), 23 deletions(-)diff --git a/arch/powerpc/include/asm/vas.hb/arch/powerpc/include/asm/vas.h index 6076adf9ab4f..668303198772 100644--- a/arch/powerpc/include/asm/vas.h +++ b/arch/powerpc/include/asm/vas.h@@ -5,6 +5,7 @@ #ifndef _ASM_POWERPC_VAS_H #define _ASM_POWERPC_VAS_H +#include <uapi/asm/vas-api.h> struct vas_window;@@ -48,6 +49,16 @@ enum vas_cop_type { VAS_COP_TYPE_MAX, }; +/* + * User space window operations used for powernv and powerVM + */ +struct vas_user_win_ops { + struct vas_window * (*open_win)(struct vas_tx_win_open_attr *, + enum vas_cop_type); + u64 (*paste_addr)(void *); + int (*close_win)(void *);Without looking further into the series, why do these two take void * when the first returns a vas_window * which appears to be the required argument to these?
Yes, vas_window * should be passed instead of void * for paste_addr() / close_win()
quoted
+static struct vas_user_win_ops vops = { + .open_win = vas_user_win_open, + .paste_addr = vas_user_win_paste_addr, + .close_win = vas_user_win_close, +};const? Thanks, Nick