[PATCH V2 3/6] cxl: Update implementation service layer
Andrew Donnellan
andrew.donnellan at au1.ibm.com
Tue Mar 21 13:56:51 AEDT 2017
On 21/03/17 03:17, Frederic Barrat wrote:
>
>
> Le 14/03/2017 à 12:08, Christophe Lombard a écrit :
>> The service layer API (in cxl.h) lists some low-level functions whose
>> implementation is different on PSL8, PSL9 and XSL:
>> - Init implementation for the adapter and the afu.
>> - Invalidate TLB/SLB.
>> - Attach process for dedicated/directed models.
>> - Handle psl interrupts.
>> - Debug registers for the adapter and the afu.
>> - Traces.
>> Each environment implements its own functions, and the common code uses
>> them through function pointers, defined in cxl_service_layer_ops.
>>
>> Signed-off-by: Christophe Lombard <clombard at linux.vnet.ibm.com>
>> ---
>> drivers/misc/cxl/cxl.h | 34 ++++++++++++++++++++++---------
>> drivers/misc/cxl/debugfs.c | 16 +++++++--------
>> drivers/misc/cxl/guest.c | 2 +-
>> drivers/misc/cxl/irq.c | 2 +-
>> drivers/misc/cxl/native.c | 50
>> +++++++++++++++++++++++++++-------------------
>> drivers/misc/cxl/pci.c | 47
>> +++++++++++++++++++++++++++++--------------
>> 6 files changed, 97 insertions(+), 54 deletions(-)
>>
>> diff --git a/drivers/misc/cxl/cxl.h b/drivers/misc/cxl/cxl.h
>> index 4d1b704..3e03a66 100644
>> --- a/drivers/misc/cxl/cxl.h
>> +++ b/drivers/misc/cxl/cxl.h
>> @@ -553,13 +553,23 @@ struct cxl_context {
>> struct mm_struct *mm;
>> };
>>
>> +struct cxl_irq_info;
>> +
>> struct cxl_service_layer_ops {
>> int (*adapter_regs_init)(struct cxl *adapter, struct pci_dev *dev);
>> + int (*invalidate_all)(struct cxl *adapter);
>> int (*afu_regs_init)(struct cxl_afu *afu);
>> + int (*sanitise_afu_regs)(struct cxl_afu *afu);
>> int (*register_serr_irq)(struct cxl_afu *afu);
>> void (*release_serr_irq)(struct cxl_afu *afu);
>> - void (*debugfs_add_adapter_sl_regs)(struct cxl *adapter, struct
>> dentry *dir);
>> - void (*debugfs_add_afu_sl_regs)(struct cxl_afu *afu, struct
>> dentry *dir);
>> + irqreturn_t (*handle_interrupt)(int irq, struct cxl_context *ctx,
>> struct cxl_irq_info *irq_info);
>> + irqreturn_t (*fail_irq)(struct cxl_afu *afu, struct cxl_irq_info
>> *irq_info);
>> + int (*activate_dedicated_process)(struct cxl_afu *afu);
>> + int (*attach_afu_directed)(struct cxl_context *ctx, u64 wed, u64
>> amr);
>> + int (*attach_dedicated_process)(struct cxl_context *ctx, u64 wed,
>> u64 amr);
>> + void (*update_dedicated_ivtes)(struct cxl_context *ctx);
>> + void (*debugfs_add_adapter_regs)(struct cxl *adapter, struct
>> dentry *dir);
>> + void (*debugfs_add_afu_regs)(struct cxl_afu *afu, struct dentry
>> *dir);
>> void (*psl_irq_dump_registers)(struct cxl_context *ctx);
>> void (*err_irq_dump_registers)(struct cxl *adapter);
>> void (*debugfs_stop_trace)(struct cxl *adapter);
>> @@ -805,16 +815,21 @@ void afu_irq_name_free(struct cxl_context *ctx);
>>
>> #ifdef CONFIG_DEBUG_FS
>>
>> +int cxl_attach_afu_directed_psl(struct cxl_context *ctx, u64 wed, u64
>> amr);
>> +int cxl_activate_dedicated_process_psl(struct cxl_afu *afu);
>> +int cxl_attach_dedicated_process_psl(struct cxl_context *ctx, u64
>> wed, u64 amr);
>> +void cxl_update_dedicated_ivtes_psl(struct cxl_context *ctx);
>> +
>
>
> I don't think those prototypes are meant to be dependent on CONFIG_DEBUG_FS
Whoops, looks like I screwed that up when I rebased. :/
--
Andrew Donnellan OzLabs, ADL Canberra
andrew.donnellan at au1.ibm.com IBM Australia Limited
More information about the Linuxppc-dev
mailing list