]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sif: EPSC_API_VERSION(2,10) - EPSC_DIAG_COUNTERS
authorKnut Omang <knut.omang@oracle.com>
Fri, 12 Aug 2016 11:45:06 +0000 (13:45 +0200)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Fri, 12 Aug 2016 19:18:12 +0000 (12:18 -0700)
Adding a new EPSC command EPSC_DIAG_COUNTERS
to get Diag counter values via mailbox.

Orabug: 24374612

Modified-by: Knut Omang <knut.omang@oracle.com>
Signed-off-by: Knut Omang <knut.omang@oracle.com>
drivers/infiniband/hw/sif/psif_api.h
drivers/infiniband/hw/sif/psif_hw_data.h
drivers/infiniband/hw/sif/psif_hw_data_be.h
drivers/infiniband/hw/sif/psif_hw_data_le.h
drivers/infiniband/hw/sif/psif_hw_print.c
drivers/infiniband/hw/sif/psif_hw_print.h
drivers/infiniband/hw/sif/version.c
drivers/infiniband/hw/sif/versioninfo.h

index 425ededc1609348ad65625d42b2112bc3976de9a..1b991507cda4f084ba3a6f90b2ca8c1cbe438c4a 100644 (file)
@@ -43,7 +43,7 @@ typedef uint64_t __be64;
  * Update when new operations are added or otherwise
  * backward compatible changes are made
  */
-#define EPSC_MINOR_VERSION 9
+#define EPSC_MINOR_VERSION 10
 
 /*
  * Macros for EPSC API #if checking in code
index 75984f568119e591d85bda79db91d2db7c16ec83..a4975bf1134c9b86c569fb6b3ef040935feeb300 100644 (file)
@@ -59,7 +59,7 @@ enum psif_enum_extent {
        PSIF_EPSC_DEGRADE_CAUSE_EXTENT   = 0x7u,
        PSIF_EPSC_ATOMIC_CAP_EXTENT      = 0x3u,
        PSIF_EPSC_CSR_STATUS_EXTENT      = 0x100u,
-       PSIF_EPSC_CSR_OPCODE_EXTENT      = 0x50u,
+       PSIF_EPSC_CSR_OPCODE_EXTENT      = 0x51u,
        PSIF_EPSC_CSR_FLAGS_EXTENT       = 0x5u,
        PSIF_VLINK_STATE_EXTENT  = 0x11u,
        PSIF_EPSC_CSR_MODIFY_DEVICE_FLAGS_EXTENT         = 0x3u,
@@ -1278,8 +1278,10 @@ enum psif_epsc_csr_opcode {
        EPSC_VIMMA_CTRL  = 0x4bu,
        /* EPSC BER (Bit Error Report) Data */
        EPSC_BER_DATA    = 0x4eu,
+       /* IB Diag Counters */
+       EPSC_DIAG_COUNTERS       = 0x4fu,
        /** EOF marker - must be last and highest in this enum type. */
-       EPSC_LAST_OP     = 0x4fu,
+       EPSC_LAST_OP     = 0x50u,
        /* Padding out to required bits allocated */
        PSIF_EPSC_CSR_OPCODE_FIELD_MAX   = 0xffu
 }; /* enum psif_epsc_csr_opcode [ 8 bits] */
index 49dca085ec8e10c846ce6a8c2afcf2421bef0e2c..33efe13ed05ccb8d11954646ea54e4e5bd73db7a 100644 (file)
@@ -1848,6 +1848,36 @@ struct psif_eq_entry {
        u32     seq_num;
 } PSIF_PACKED_ALIGNED32; /* struct psif_eq_entry [64 byte] */
 
+/**
+ * \brief Definition of struct returned by EPSC_QUERY_ON_CHIP_TEMP
+ * \details
+ * This struct contain temperatures in Centigrades from several PSIF chip internal sensors.
+ * Naming of struct memebers reflect PSIF ASIC internal module names.
+ * \par Width
+ *      64 bit
+ * \par Used in
+ * the parameter for the PSIF_QUERY sub-operation EPSC_QUERY_ON_CHIP_TEMP - index field input ignored
+ * \par Classification
+ *      internal, development
+ */
+
+struct psif_epsc_query_on_chip_temp {
+       /* Sample max value */
+       u16     max:8;
+       /* Default main sensor */
+       u16     main:8;
+       /* ARM cores */
+       u16     eps:8;
+       /* IB cores */
+       u16     ibu:8;
+       /* Transaction core */
+       u16     tsu:8;
+       /* PCI core */
+       u16     peu:8;
+       /* Future sensors */
+       u16     noname:16;
+} PSIF_PACKED_ALIGNED; /* struct psif_epsc_query_on_chip_temp [ 8 byte] */
+
 /**
  * \brief Definition of struct returned by EPSC_QUERY_EXTERNAL_PORT_INFO
  * \details
@@ -2808,6 +2838,20 @@ struct psif_epsc_csr_ber_data {
        u32     len;
 } PSIF_PACKED_ALIGNED; /* struct psif_epsc_csr_ber_data [24 byte] */
 
+/**
+ * Structure for EPSC_DIAG_COUNTERS
+ */
+struct psif_epsc_csr_diag_counters {
+       /* Buffer address in host memory */
+       u64     host_addr;
+       /* MMU supplied by the driver */
+       struct psif_mmu_cntx    mmu_cntx;
+       /* UF number */
+       u32     uf;
+       /* Buffer length in bytes */
+       u32     len;
+} PSIF_PACKED_ALIGNED; /* struct psif_epsc_csr_diag_counters [24 byte] */
+
 /* Public API for mailbox requests details */
 union psif_epsc_csr_details {
        /* Anonymous data */
@@ -2878,6 +2922,8 @@ union psif_epsc_csr_details {
        struct psif_epsc_csr_vimma_ctrl vimma_ctrl;
        /* BER data query */
        struct psif_epsc_csr_ber_data   ber;
+       /* DIAG counters query */
+       struct psif_epsc_csr_diag_counters      diag;
 } PSIF_PACKED; /* union psif_epsc_csr_details [88 byte] */
 
 /**
index c28eb5ca8b9458fb6119a8898d682575e3ad1747..19af0dcaea8a885aed7c8d518ceb5f9ba6b42bf6 100644 (file)
@@ -1848,6 +1848,36 @@ struct psif_eq_entry {
        u32     noname:32;
 } PSIF_PACKED_ALIGNED32; /* struct psif_eq_entry [64 byte] */
 
+/**
+ * \brief Definition of struct returned by EPSC_QUERY_ON_CHIP_TEMP
+ * \details
+ * This struct contain temperatures in Centigrades from several PSIF chip internal sensors.
+ * Naming of struct memebers reflect PSIF ASIC internal module names.
+ * \par Width
+ *      64 bit
+ * \par Used in
+ * the parameter for the PSIF_QUERY sub-operation EPSC_QUERY_ON_CHIP_TEMP - index field input ignored
+ * \par Classification
+ *      internal, development
+ */
+
+struct psif_epsc_query_on_chip_temp {
+       /* Future sensors */
+       u16     noname:16;
+       /* PCI core */
+       u16     peu:8;
+       /* Transaction core */
+       u16     tsu:8;
+       /* IB cores */
+       u16     ibu:8;
+       /* ARM cores */
+       u16     eps:8;
+       /* Default main sensor */
+       u16     main:8;
+       /* Sample max value */
+       u16     max:8;
+} PSIF_PACKED_ALIGNED; /* struct psif_epsc_query_on_chip_temp [ 8 byte] */
+
 /**
  * \brief Definition of struct returned by EPSC_QUERY_EXTERNAL_PORT_INFO
  * \details
@@ -2808,6 +2838,20 @@ struct psif_epsc_csr_ber_data {
        u32     port;
 } PSIF_PACKED_ALIGNED; /* struct psif_epsc_csr_ber_data [24 byte] */
 
+/**
+ * Structure for EPSC_DIAG_COUNTERS
+ */
+struct psif_epsc_csr_diag_counters {
+       /* Buffer address in host memory */
+       u64     host_addr;
+       /* MMU supplied by the driver */
+       struct psif_mmu_cntx    mmu_cntx;
+       /* Buffer length in bytes */
+       u32     len;
+       /* UF number */
+       u32     uf;
+} PSIF_PACKED_ALIGNED; /* struct psif_epsc_csr_diag_counters [24 byte] */
+
 /* Public API for mailbox requests details */
 union psif_epsc_csr_details {
        /* Anonymous data */
@@ -2878,6 +2922,8 @@ union psif_epsc_csr_details {
        struct psif_epsc_csr_vimma_ctrl vimma_ctrl;
        /* BER data query */
        struct psif_epsc_csr_ber_data   ber;
+       /* DIAG counters query */
+       struct psif_epsc_csr_diag_counters      diag;
 } PSIF_PACKED; /* union psif_epsc_csr_details [88 byte] */
 
 /**
index c2ae32db514da3d24404be8401aa0cbfd2145917..d9a074fa9280f019ef13ac2ac052820e7dd3f7c6 100644 (file)
@@ -1443,6 +1443,8 @@ const char *string_enum_psif_epsc_csr_opcode(enum psif_epsc_csr_opcode val)
                return "EPSC_VIMMA_CTRL";
        case EPSC_BER_DATA:
                return "EPSC_BER_DATA";
+       case EPSC_DIAG_COUNTERS:
+               return "EPSC_DIAG_COUNTERS";
        case EPSC_LAST_OP:
                return "EPSC_LAST_OP";
        case PSIF_EPSC_CSR_OPCODE_FIELD_MAX:
@@ -4456,6 +4458,28 @@ void write_struct_psif_epsc_csr_ber_data(XFILE *fd,
        xprintf(fd, "}");
 } /* end write_..._psif_epsc_csr_ber_data(psif_epsc_csr_ber_data data) */
 
+void write_struct_psif_epsc_csr_diag_counters(XFILE *fd,
+       int network_order,
+       const struct psif_epsc_csr_diag_counters *data)
+{
+       u64 swap[3];
+
+       if (network_order) {
+               copy_convert_to_sw(swap, (volatile void *)data, 24);
+               data = (struct psif_epsc_csr_diag_counters *)swap;
+       }
+       xprintf(fd, "{");
+       xprintf(fd, " .host_addr = ");
+       write_bits_u64(fd, 64, data->host_addr);
+       xprintf(fd, ", .mmu_cntx = ");
+       write_struct_psif_mmu_cntx(fd, 0, &(data->mmu_cntx));
+       xprintf(fd, ", .len = ");
+       write_bits_u32(fd, 32, data->len);
+       xprintf(fd, ", .uf = ");
+       write_bits_u32(fd, 32, data->uf);
+       xprintf(fd, "}");
+} /* end write_..._psif_epsc_csr_diag_counters(psif_epsc_csr_diag_counters data) */
+
 void write_union_psif_epsc_csr_details(XFILE *fd,
        int network_order,
        const union psif_epsc_csr_details *data)
@@ -4537,6 +4561,8 @@ void write_union_psif_epsc_csr_details(XFILE *fd,
        write_struct_psif_epsc_csr_vimma_ctrl(fd, 0, &(data->vimma_ctrl));
        xprintf(fd, ", .ber = ");
        write_struct_psif_epsc_csr_ber_data(fd, 0, &(data->ber));
+       xprintf(fd, ", .diag = ");
+       write_struct_psif_epsc_csr_diag_counters(fd, 0, &(data->diag));
        xprintf(fd, "}");
 } /* end write_..._psif_epsc_csr_details(psif_epsc_csr_details data) */
 
index 47018e5ffe046b91f3d0fda0c5fc83e65fc9312f..861ff62a829a1afaee9e9b87a75e3a004794284d 100644 (file)
@@ -416,6 +416,9 @@ void write_struct_psif_epsc_csr_vimma_ctrl(XFILE *fd,
 void write_struct_psif_epsc_csr_ber_data(XFILE *fd,
        int network_order,
        const struct psif_epsc_csr_ber_data *data);
+void write_struct_psif_epsc_csr_diag_counters(XFILE *fd,
+       int network_order,
+       const struct psif_epsc_csr_diag_counters *data);
 void write_union_psif_epsc_csr_details(XFILE *fd,
        int network_order,
        const union psif_epsc_csr_details *data);
index 7a2f5dfbd78ff590494af95ad40c97a5a0bccdd4..ae3dc70455d43fad4a92e1c7173cedcda24010ea 100644 (file)
@@ -3,14 +3,13 @@
 #include "version.h"
 
 struct sif_version sif_version = {
-.git_repo = "sifdrv [origin/master]",
-.last_commit = "titan_1.0.0.2 pqp: Be less aggressive in invoking cond_resched()",
-.git_status = """?? drivers/\n"
-,
-.build_git_time = "Tue, 26 Jul 2016 15:46:06 +0000",
+.git_repo = "sifdrv [non public commit]",
+.last_commit = "titan_1.0.0.3 transform: Update used version of EPSC_API",
+.git_status = "",
+.build_git_time = "Fri, 12 Aug 2016 11:24:07 +0000",
 .build_user = "komang",
 
 .git_psifapi_repo = "psifapi [origin/master]",
-.last_psifapi_commit = "titan_1.0.0.2 EPSC_API_VERSION(2,8) - New EPSC_QUERY_ON_CHIP_TEMP",
+.last_psifapi_commit = "titan_1.0.0.3 EPSC_API_VERSION(2,10) - EPSC_DIAG_COUNTERS",
 .git_psifapi_status = "",
 };
index e6d46bf9d2372dc0b8469ee287510c8ae486a585..2b7d562364ad7f88c33b753060f3b71d44fdab06 100644 (file)
@@ -1,6 +1,6 @@
 /* Misc driver release info */
 
-#define BUILD_DATE "2016-07-26"
-#define BUILD_TIME "15:46:06"
-#define BUILD_EPOCH 1469547966
-#define TITAN_RELEASE "1.0.0.2"
+#define BUILD_DATE "2016-08-12"
+#define BUILD_TIME "11:24:07"
+#define BUILD_EPOCH 1471001047
+#define TITAN_RELEASE "1.0.0.3"