cxl: New hcalls to support cxl adapters
The hypervisor calls provide an interface with a coherent platform facility and function. It matches version 0.16 of the 'PAPR changes' document. The following hcalls are supported: H_ATTACH_CA_PROCESS Attach a process element to a coherent platform function. H_DETACH_CA_PROCESS Detach a process element from a coherent platform function. H_CONTROL_CA_FUNCTION Allow the partition to manipulate or query certain coherent platform function behaviors. H_COLLECT_CA_INT_INFO Collect interrupt info about a coherent. platform function after an interrupt occurred H_CONTROL_CA_FAULTS Control the operation of a coherent platform function after a fault occurs. H_DOWNLOAD_CA_FACILITY Support for downloading a base adapter image to the coherent platform facility, and for validating the entire image after the download. H_CONTROL_CA_FACILITY Allow the partition to manipulate or query certain coherent platform facility behaviors. Co-authored-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com> Signed-off-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com> Signed-off-by: Christophe Lombard <clombard@linux.vnet.ibm.com> Reviewed-by: Manoj Kumar <manoj@linux.vnet.ibm.com> Acked-by: Ian Munsie <imunsie@au1.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

parent
c0efa9aee8
commit
444c4ba461
@@ -162,6 +162,32 @@ int cxl_alloc_sst(struct cxl_context *ctx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* print buffer content as integers when debugging */
|
||||
void cxl_dump_debug_buffer(void *buf, size_t buf_len)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
int i, *ptr;
|
||||
|
||||
/*
|
||||
* We want to regroup up to 4 integers per line, which means they
|
||||
* need to be in the same pr_devel() statement
|
||||
*/
|
||||
ptr = (int *) buf;
|
||||
for (i = 0; i * 4 < buf_len; i += 4) {
|
||||
if ((i + 3) * 4 < buf_len)
|
||||
pr_devel("%.8x %.8x %.8x %.8x\n", ptr[i], ptr[i + 1],
|
||||
ptr[i + 2], ptr[i + 3]);
|
||||
else if ((i + 2) * 4 < buf_len)
|
||||
pr_devel("%.8x %.8x %.8x\n", ptr[i], ptr[i + 1],
|
||||
ptr[i + 2]);
|
||||
else if ((i + 1) * 4 < buf_len)
|
||||
pr_devel("%.8x %.8x\n", ptr[i], ptr[i + 1]);
|
||||
else
|
||||
pr_devel("%.8x\n", ptr[i]);
|
||||
}
|
||||
#endif /* DEBUG */
|
||||
}
|
||||
|
||||
/* Find a CXL adapter by it's number and increase it's refcount */
|
||||
struct cxl *get_cxl_adapter(int num)
|
||||
{
|
||||
|
Reference in New Issue
Block a user