Message ID | 20200221032720.33893-13-alastair@au1.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for OpenCAPI Persistent Memory devices | expand |
On 21/2/20 2:27 pm, Alastair D'Silva wrote: > From: Alastair D'Silva <alastair@d-silva.org> > > These values have been taken from the device specifications. > > Signed-off-by: Alastair D'Silva <alastair@d-silva.org> I've compared these values against the internal version of the device specifications that I have access to, and they appear to match. A few minor comments below, otherwise: Reviewed-by: Andrew Donnellan <ajd@linux.ibm.com> > +#define GLOBAL_MMIO_HCI_ACRW BIT_ULL(0) > +#define GLOBAL_MMIO_HCI_NSCRW BIT_ULL(1) > +#define GLOBAL_MMIO_HCI_AFU_RESET BIT_ULL(2) > +#define GLOBAL_MMIO_HCI_FW_DEBUG BIT_ULL(3) > +#define GLOBAL_MMIO_HCI_CONTROLLER_DUMP BIT_ULL(4) > +#define GLOBAL_MMIO_HCI_CONTROLLER_DUMP_COLLECTED BIT_ULL(5) > +#define GLOBAL_MMIO_HCI_REQ_HEALTH_PERF BIT_ULL(6) The labelling of some of these bits deviates from the standard abbreviations in the spec, which is fine I guess as these names are more descriptive, but maybe add a brief comment with the original abbreviation? > + > +#define ADMIN_COMMAND_HEARTBEAT 0x00u > +#define ADMIN_COMMAND_SHUTDOWN 0x01u > +#define ADMIN_COMMAND_FW_UPDATE 0x02u > +#define ADMIN_COMMAND_FW_DEBUG 0x03u > +#define ADMIN_COMMAND_ERRLOG 0x04u > +#define ADMIN_COMMAND_SMART 0x05u > +#define ADMIN_COMMAND_CONTROLLER_STATS 0x06u > +#define ADMIN_COMMAND_CONTROLLER_DUMP 0x07u > +#define ADMIN_COMMAND_CMD_CAPS 0x08u > +#define ADMIN_COMMAND_MAX 0x08u > + > +#define STATUS_SUCCESS 0x00 > +#define STATUS_MEM_UNAVAILABLE 0x20 There's also a "blocked on account of background task" code, 0x21. > +#define STATUS_BAD_OPCODE 0x50 > +#define STATUS_BAD_REQUEST_PARM 0x51 > +#define STATUS_BAD_DATA_PARM 0x52 > +#define STATUS_DEBUG_BLOCKED 0x70 > +#define STATUS_FAIL 0xFF > + > +#define STATUS_FW_UPDATE_BLOCKED 0x21 > +#define STATUS_FW_ARG_INVALID 0x51 > +#define STATUS_FW_INVALID 0x52 These status codes seem, from the specification, to correspond to the generic error codes above, so perhaps they're not needed.
On Thu, 2020-02-27 at 16:08 +1100, Andrew Donnellan wrote: > On 21/2/20 2:27 pm, Alastair D'Silva wrote: > > From: Alastair D'Silva <alastair@d-silva.org> > > > > These values have been taken from the device specifications. > > > > Signed-off-by: Alastair D'Silva <alastair@d-silva.org> > > I've compared these values against the internal version of the > device > specifications that I have access to, and they appear to match. > > A few minor comments below, otherwise: > > Reviewed-by: Andrew Donnellan <ajd@linux.ibm.com> > > > +#define GLOBAL_MMIO_HCI_ACRW BIT_ULL > > (0) > > +#define GLOBAL_MMIO_HCI_NSCRW BIT_ULL > > (1) > > +#define GLOBAL_MMIO_HCI_AFU_RESET BIT_ULL(2) > > +#define GLOBAL_MMIO_HCI_FW_DEBUG BIT_ULL(3) > > +#define GLOBAL_MMIO_HCI_CONTROLLER_DUMP BIT_ULL > > (4) > > +#define GLOBAL_MMIO_HCI_CONTROLLER_DUMP_COLLECTED BIT_ULL(5) > > +#define GLOBAL_MMIO_HCI_REQ_HEALTH_PERF BIT_ULL > > (6) > > The labelling of some of these bits deviates from the standard > abbreviations in the spec, which is fine I guess as these names are > more > descriptive, but maybe add a brief comment with the original > abbreviation? > Ok > > + > > +#define ADMIN_COMMAND_HEARTBEAT 0x00u > > +#define ADMIN_COMMAND_SHUTDOWN 0x01u > > +#define ADMIN_COMMAND_FW_UPDATE 0x02u > > +#define ADMIN_COMMAND_FW_DEBUG 0x03u > > +#define ADMIN_COMMAND_ERRLOG 0x04u > > +#define ADMIN_COMMAND_SMART 0x05u > > +#define ADMIN_COMMAND_CONTROLLER_STATS 0x06u > > +#define ADMIN_COMMAND_CONTROLLER_DUMP 0x07u > > +#define ADMIN_COMMAND_CMD_CAPS 0x08u > > +#define ADMIN_COMMAND_MAX 0x08u > > + > > +#define STATUS_SUCCESS 0x00 > > +#define STATUS_MEM_UNAVAILABLE 0x20 > > There's also a "blocked on account of background task" code, 0x21. > Ok > > +#define STATUS_BAD_OPCODE 0x50 > > +#define STATUS_BAD_REQUEST_PARM 0x51 > > +#define STATUS_BAD_DATA_PARM 0x52 > > +#define STATUS_DEBUG_BLOCKED 0x70 > > +#define STATUS_FAIL 0xFF > > + > > +#define STATUS_FW_UPDATE_BLOCKED 0x21 > > +#define STATUS_FW_ARG_INVALID 0x51 > > +#define STATUS_FW_INVALID 0x52 > > These status codes seem, from the specification, to correspond to > the > generic error codes above, so perhaps they're not needed. > These will be used in warn_status_fw_update() later, but I'll alias them to make it clear that they are shadowing values
diff --git a/arch/powerpc/platforms/powernv/pmem/ocxl_internal.h b/arch/powerpc/platforms/powernv/pmem/ocxl_internal.h index 0faf3740e9b8..9cf3e42750e7 100644 --- a/arch/powerpc/platforms/powernv/pmem/ocxl_internal.h +++ b/arch/powerpc/platforms/powernv/pmem/ocxl_internal.h @@ -8,6 +8,78 @@ #define LABEL_AREA_SIZE (1UL << PA_SECTION_SHIFT) +#define GLOBAL_MMIO_CHI 0x000 +#define GLOBAL_MMIO_CHIC 0x008 +#define GLOBAL_MMIO_CHIE 0x010 +#define GLOBAL_MMIO_CHIEC 0x018 +#define GLOBAL_MMIO_HCI 0x020 +#define GLOBAL_MMIO_HCIC 0x028 +#define GLOBAL_MMIO_IMA0_OHP 0x040 +#define GLOBAL_MMIO_IMA0_CFP 0x048 +#define GLOBAL_MMIO_IMA1_OHP 0x050 +#define GLOBAL_MMIO_IMA1_CFP 0x058 +#define GLOBAL_MMIO_ACMA_CREQO 0x100 +#define GLOBAL_MMIO_ACMA_CRSPO 0x104 +#define GLOBAL_MMIO_ACMA_CDBO 0x108 +#define GLOBAL_MMIO_ACMA_CDBS 0x10c +#define GLOBAL_MMIO_NSCMA_CREQO 0x120 +#define GLOBAL_MMIO_NSCMA_CRSPO 0x124 +#define GLOBAL_MMIO_NSCMA_CDBO 0x128 +#define GLOBAL_MMIO_NSCMA_CDBS 0x12c +#define GLOBAL_MMIO_CSTS 0x140 +#define GLOBAL_MMIO_FWVER 0x148 +#define GLOBAL_MMIO_CCAP0 0x160 +#define GLOBAL_MMIO_CCAP1 0x168 + +#define GLOBAL_MMIO_CHI_ACRA BIT_ULL(0) +#define GLOBAL_MMIO_CHI_NSCRA BIT_ULL(1) +#define GLOBAL_MMIO_CHI_CRDY BIT_ULL(4) +#define GLOBAL_MMIO_CHI_CFFS BIT_ULL(5) +#define GLOBAL_MMIO_CHI_MA BIT_ULL(6) +#define GLOBAL_MMIO_CHI_ELA BIT_ULL(7) +#define GLOBAL_MMIO_CHI_CDA BIT_ULL(8) +#define GLOBAL_MMIO_CHI_CHFS BIT_ULL(9) + +#define GLOBAL_MMIO_CHI_ALL (GLOBAL_MMIO_CHI_ACRA | \ + GLOBAL_MMIO_CHI_NSCRA | \ + GLOBAL_MMIO_CHI_CRDY | \ + GLOBAL_MMIO_CHI_CFFS | \ + GLOBAL_MMIO_CHI_MA | \ + GLOBAL_MMIO_CHI_ELA | \ + GLOBAL_MMIO_CHI_CDA | \ + GLOBAL_MMIO_CHI_CHFS) + +#define GLOBAL_MMIO_HCI_ACRW BIT_ULL(0) +#define GLOBAL_MMIO_HCI_NSCRW BIT_ULL(1) +#define GLOBAL_MMIO_HCI_AFU_RESET BIT_ULL(2) +#define GLOBAL_MMIO_HCI_FW_DEBUG BIT_ULL(3) +#define GLOBAL_MMIO_HCI_CONTROLLER_DUMP BIT_ULL(4) +#define GLOBAL_MMIO_HCI_CONTROLLER_DUMP_COLLECTED BIT_ULL(5) +#define GLOBAL_MMIO_HCI_REQ_HEALTH_PERF BIT_ULL(6) + +#define ADMIN_COMMAND_HEARTBEAT 0x00u +#define ADMIN_COMMAND_SHUTDOWN 0x01u +#define ADMIN_COMMAND_FW_UPDATE 0x02u +#define ADMIN_COMMAND_FW_DEBUG 0x03u +#define ADMIN_COMMAND_ERRLOG 0x04u +#define ADMIN_COMMAND_SMART 0x05u +#define ADMIN_COMMAND_CONTROLLER_STATS 0x06u +#define ADMIN_COMMAND_CONTROLLER_DUMP 0x07u +#define ADMIN_COMMAND_CMD_CAPS 0x08u +#define ADMIN_COMMAND_MAX 0x08u + +#define STATUS_SUCCESS 0x00 +#define STATUS_MEM_UNAVAILABLE 0x20 +#define STATUS_BAD_OPCODE 0x50 +#define STATUS_BAD_REQUEST_PARM 0x51 +#define STATUS_BAD_DATA_PARM 0x52 +#define STATUS_DEBUG_BLOCKED 0x70 +#define STATUS_FAIL 0xFF + +#define STATUS_FW_UPDATE_BLOCKED 0x21 +#define STATUS_FW_ARG_INVALID 0x51 +#define STATUS_FW_INVALID 0x52 + struct ocxlpmem_function0 { struct pci_dev *pdev; struct ocxl_fn *ocxl_fn;