6b938ac910
Once the adapter context is created, it needs to be started by assigning the MMIO space for the context and by enabling the process element in the link. This commit adds the skeleton for starting the context and assigns the context specific MMIO space. Master contexts have access to the global MMIO space while the rest have access to the context specific space. Signed-off-by: Uma Krishnan <ukrishn@linux.vnet.ibm.com> Acked-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
48 lines
1.7 KiB
C
48 lines
1.7 KiB
C
/*
|
|
* CXL Flash Device Driver
|
|
*
|
|
* Written by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>, IBM Corporation
|
|
* Uma Krishnan <ukrishn@linux.vnet.ibm.com>, IBM Corporation
|
|
*
|
|
* Copyright (C) 2018 IBM Corporation
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version
|
|
* 2 of the License, or (at your option) any later version.
|
|
*/
|
|
|
|
/* OCXL hardware AFU associated with the host */
|
|
struct ocxl_hw_afu {
|
|
struct ocxlflash_context *ocxl_ctx; /* Host context */
|
|
struct pci_dev *pdev; /* PCI device */
|
|
struct device *dev; /* Generic device */
|
|
bool perst_same_image; /* Same image loaded on perst */
|
|
|
|
struct ocxl_fn_config fcfg; /* DVSEC config of the function */
|
|
struct ocxl_afu_config acfg; /* AFU configuration data */
|
|
|
|
int fn_actag_base; /* Function acTag base */
|
|
int fn_actag_enabled; /* Function acTag number enabled */
|
|
int afu_actag_base; /* AFU acTag base */
|
|
int afu_actag_enabled; /* AFU acTag number enabled */
|
|
|
|
phys_addr_t ppmmio_phys; /* Per process MMIO space */
|
|
phys_addr_t gmmio_phys; /* Global AFU MMIO space */
|
|
void __iomem *gmmio_virt; /* Global MMIO map */
|
|
|
|
struct idr idr; /* IDR to manage contexts */
|
|
int max_pasid; /* Maximum number of contexts */
|
|
bool is_present; /* Function has AFUs defined */
|
|
};
|
|
|
|
struct ocxlflash_context {
|
|
struct ocxl_hw_afu *hw_afu; /* HW AFU back pointer */
|
|
struct address_space *mapping; /* Mapping for pseudo filesystem */
|
|
bool master; /* Whether this is a master context */
|
|
int pe; /* Process element */
|
|
|
|
phys_addr_t psn_phys; /* Process mapping */
|
|
u64 psn_size; /* Process mapping size */
|
|
};
|