Commit 5676be2f authored by Sukadev Bhattiprolu's avatar Sukadev Bhattiprolu Committed by Michael Ellerman

powerpc/vas: Define vas_win_paste_addr()

Define an interface that the NX drivers can use to find the physical
paste address of a send window. This interface is expected to be used
with the mmap() operation of the NX driver's device. i.e the user space
process can use driver's mmap() operation to map the send window's paste
address into their address space and then use copy and paste instructions
to submit the CRBs to the NX engine.

Note that kernel drivers will use vas_paste_crb() directly and don't need
this interface.
Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 9d2a4d71
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
#ifndef _ASM_POWERPC_VAS_H #ifndef _ASM_POWERPC_VAS_H
#define _ASM_POWERPC_VAS_H #define _ASM_POWERPC_VAS_H
struct vas_window;
/* /*
* Min and max FIFO sizes are based on Version 1.05 Section 3.1.4.25 * Min and max FIFO sizes are based on Version 1.05 Section 3.1.4.25
* (Local FIFO Size Register) of the VAS workbook. * (Local FIFO Size Register) of the VAS workbook.
...@@ -165,4 +167,9 @@ int vas_copy_crb(void *crb, int offset); ...@@ -165,4 +167,9 @@ int vas_copy_crb(void *crb, int offset);
*/ */
int vas_paste_crb(struct vas_window *win, int offset, bool re); int vas_paste_crb(struct vas_window *win, int offset, bool re);
/*
* Return the power bus paste address associated with @win so the caller
* can map that address into their address space.
*/
extern u64 vas_win_paste_addr(struct vas_window *win);
#endif /* __ASM_POWERPC_VAS_H */ #endif /* __ASM_POWERPC_VAS_H */
...@@ -40,6 +40,16 @@ static void compute_paste_address(struct vas_window *window, u64 *addr, int *len ...@@ -40,6 +40,16 @@ static void compute_paste_address(struct vas_window *window, u64 *addr, int *len
pr_debug("Txwin #%d: Paste addr 0x%llx\n", winid, *addr); pr_debug("Txwin #%d: Paste addr 0x%llx\n", winid, *addr);
} }
u64 vas_win_paste_addr(struct vas_window *win)
{
u64 addr;
compute_paste_address(win, &addr, NULL);
return addr;
}
EXPORT_SYMBOL(vas_win_paste_addr);
static inline void get_hvwc_mmio_bar(struct vas_window *window, static inline void get_hvwc_mmio_bar(struct vas_window *window,
u64 *start, int *len) u64 *start, int *len)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment