~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/cxl/event.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/cxl/event.h (Architecture sparc64) and /include/cxl/event.h (Architecture alpha)


  1 /* SPDX-License-Identifier: GPL-2.0 */              1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /* Copyright(c) 2023 Intel Corporation. */          2 /* Copyright(c) 2023 Intel Corporation. */
  3 #ifndef _LINUX_CXL_EVENT_H                          3 #ifndef _LINUX_CXL_EVENT_H
  4 #define _LINUX_CXL_EVENT_H                          4 #define _LINUX_CXL_EVENT_H
  5                                                     5 
  6 #include <linux/types.h>                            6 #include <linux/types.h>
  7 #include <linux/uuid.h>                             7 #include <linux/uuid.h>
  8 #include <linux/workqueue_types.h>                  8 #include <linux/workqueue_types.h>
  9                                                     9 
 10 /*                                                 10 /*
 11  * Common Event Record Format                      11  * Common Event Record Format
 12  * CXL rev 3.0 section 8.2.9.2.1; Table 8-42       12  * CXL rev 3.0 section 8.2.9.2.1; Table 8-42
 13  */                                                13  */
 14 struct cxl_event_record_hdr {                      14 struct cxl_event_record_hdr {
 15         u8 length;                                 15         u8 length;
 16         u8 flags[3];                               16         u8 flags[3];
 17         __le16 handle;                             17         __le16 handle;
 18         __le16 related_handle;                     18         __le16 related_handle;
 19         __le64 timestamp;                          19         __le64 timestamp;
 20         u8 maint_op_class;                         20         u8 maint_op_class;
 21         u8 reserved[15];                           21         u8 reserved[15];
 22 } __packed;                                        22 } __packed;
 23                                                    23 
 24 struct cxl_event_media_hdr {                       24 struct cxl_event_media_hdr {
 25         struct cxl_event_record_hdr hdr;           25         struct cxl_event_record_hdr hdr;
 26         __le64 phys_addr;                          26         __le64 phys_addr;
 27         u8 descriptor;                             27         u8 descriptor;
 28         u8 type;                                   28         u8 type;
 29         u8 transaction_type;                       29         u8 transaction_type;
 30         /*                                         30         /*
 31          * The meaning of Validity Flags from      31          * The meaning of Validity Flags from bit 2 is
 32          * different across DRAM and General M     32          * different across DRAM and General Media records
 33          */                                        33          */
 34         u8 validity_flags[2];                      34         u8 validity_flags[2];
 35         u8 channel;                                35         u8 channel;
 36         u8 rank;                                   36         u8 rank;
 37 } __packed;                                        37 } __packed;
 38                                                    38 
 39 #define CXL_EVENT_RECORD_DATA_LENGTH 0x50          39 #define CXL_EVENT_RECORD_DATA_LENGTH 0x50
 40 struct cxl_event_generic {                         40 struct cxl_event_generic {
 41         struct cxl_event_record_hdr hdr;           41         struct cxl_event_record_hdr hdr;
 42         u8 data[CXL_EVENT_RECORD_DATA_LENGTH];     42         u8 data[CXL_EVENT_RECORD_DATA_LENGTH];
 43 } __packed;                                        43 } __packed;
 44                                                    44 
 45 /*                                                 45 /*
 46  * General Media Event Record                      46  * General Media Event Record
 47  * CXL rev 3.0 Section 8.2.9.2.1.1; Table 8-43     47  * CXL rev 3.0 Section 8.2.9.2.1.1; Table 8-43
 48  */                                                48  */
 49 #define CXL_EVENT_GEN_MED_COMP_ID_SIZE  0x10       49 #define CXL_EVENT_GEN_MED_COMP_ID_SIZE  0x10
 50 struct cxl_event_gen_media {                       50 struct cxl_event_gen_media {
 51         struct cxl_event_media_hdr media_hdr;      51         struct cxl_event_media_hdr media_hdr;
 52         u8 device[3];                              52         u8 device[3];
 53         u8 component_id[CXL_EVENT_GEN_MED_COMP     53         u8 component_id[CXL_EVENT_GEN_MED_COMP_ID_SIZE];
 54         u8 reserved[46];                           54         u8 reserved[46];
 55 } __packed;                                        55 } __packed;
 56                                                    56 
 57 /*                                                 57 /*
 58  * DRAM Event Record - DER                         58  * DRAM Event Record - DER
 59  * CXL rev 3.0 section 8.2.9.2.1.2; Table 3-44     59  * CXL rev 3.0 section 8.2.9.2.1.2; Table 3-44
 60  */                                                60  */
 61 #define CXL_EVENT_DER_CORRECTION_MASK_SIZE         61 #define CXL_EVENT_DER_CORRECTION_MASK_SIZE      0x20
 62 struct cxl_event_dram {                            62 struct cxl_event_dram {
 63         struct cxl_event_media_hdr media_hdr;      63         struct cxl_event_media_hdr media_hdr;
 64         u8 nibble_mask[3];                         64         u8 nibble_mask[3];
 65         u8 bank_group;                             65         u8 bank_group;
 66         u8 bank;                                   66         u8 bank;
 67         u8 row[3];                                 67         u8 row[3];
 68         u8 column[2];                              68         u8 column[2];
 69         u8 correction_mask[CXL_EVENT_DER_CORRE     69         u8 correction_mask[CXL_EVENT_DER_CORRECTION_MASK_SIZE];
 70         u8 reserved[0x17];                         70         u8 reserved[0x17];
 71 } __packed;                                        71 } __packed;
 72                                                    72 
 73 /*                                                 73 /*
 74  * Get Health Info Record                          74  * Get Health Info Record
 75  * CXL rev 3.0 section 8.2.9.8.3.1; Table 8-10     75  * CXL rev 3.0 section 8.2.9.8.3.1; Table 8-100
 76  */                                                76  */
 77 struct cxl_get_health_info {                       77 struct cxl_get_health_info {
 78         u8 health_status;                          78         u8 health_status;
 79         u8 media_status;                           79         u8 media_status;
 80         u8 add_status;                             80         u8 add_status;
 81         u8 life_used;                              81         u8 life_used;
 82         u8 device_temp[2];                         82         u8 device_temp[2];
 83         u8 dirty_shutdown_cnt[4];                  83         u8 dirty_shutdown_cnt[4];
 84         u8 cor_vol_err_cnt[4];                     84         u8 cor_vol_err_cnt[4];
 85         u8 cor_per_err_cnt[4];                     85         u8 cor_per_err_cnt[4];
 86 } __packed;                                        86 } __packed;
 87                                                    87 
 88 /*                                                 88 /*
 89  * Memory Module Event Record                      89  * Memory Module Event Record
 90  * CXL rev 3.0 section 8.2.9.2.1.3; Table 8-45     90  * CXL rev 3.0 section 8.2.9.2.1.3; Table 8-45
 91  */                                                91  */
 92 struct cxl_event_mem_module {                      92 struct cxl_event_mem_module {
 93         struct cxl_event_record_hdr hdr;           93         struct cxl_event_record_hdr hdr;
 94         u8 event_type;                             94         u8 event_type;
 95         struct cxl_get_health_info info;           95         struct cxl_get_health_info info;
 96         u8 reserved[0x3d];                         96         u8 reserved[0x3d];
 97 } __packed;                                        97 } __packed;
 98                                                    98 
 99 union cxl_event {                                  99 union cxl_event {
100         struct cxl_event_generic generic;         100         struct cxl_event_generic generic;
101         struct cxl_event_gen_media gen_media;     101         struct cxl_event_gen_media gen_media;
102         struct cxl_event_dram dram;               102         struct cxl_event_dram dram;
103         struct cxl_event_mem_module mem_module    103         struct cxl_event_mem_module mem_module;
104         /* dram & gen_media event header */       104         /* dram & gen_media event header */
105         struct cxl_event_media_hdr media_hdr;     105         struct cxl_event_media_hdr media_hdr;
106 } __packed;                                       106 } __packed;
107                                                   107 
108 /*                                                108 /*
109  * Common Event Record Format; in event logs      109  * Common Event Record Format; in event logs
110  * CXL rev 3.0 section 8.2.9.2.1; Table 8-42      110  * CXL rev 3.0 section 8.2.9.2.1; Table 8-42
111  */                                               111  */
112 struct cxl_event_record_raw {                     112 struct cxl_event_record_raw {
113         uuid_t id;                                113         uuid_t id;
114         union cxl_event event;                    114         union cxl_event event;
115 } __packed;                                       115 } __packed;
116                                                   116 
117 enum cxl_event_type {                             117 enum cxl_event_type {
118         CXL_CPER_EVENT_GENERIC,                   118         CXL_CPER_EVENT_GENERIC,
119         CXL_CPER_EVENT_GEN_MEDIA,                 119         CXL_CPER_EVENT_GEN_MEDIA,
120         CXL_CPER_EVENT_DRAM,                      120         CXL_CPER_EVENT_DRAM,
121         CXL_CPER_EVENT_MEM_MODULE,                121         CXL_CPER_EVENT_MEM_MODULE,
122 };                                                122 };
123                                                   123 
124 #define CPER_CXL_DEVICE_ID_VALID                  124 #define CPER_CXL_DEVICE_ID_VALID                BIT(0)
125 #define CPER_CXL_DEVICE_SN_VALID                  125 #define CPER_CXL_DEVICE_SN_VALID                BIT(1)
126 #define CPER_CXL_COMP_EVENT_LOG_VALID             126 #define CPER_CXL_COMP_EVENT_LOG_VALID           BIT(2)
127 struct cxl_cper_event_rec {                       127 struct cxl_cper_event_rec {
128         struct {                                  128         struct {
129                 u32 length;                       129                 u32 length;
130                 u64 validation_bits;              130                 u64 validation_bits;
131                 struct cper_cxl_event_devid {     131                 struct cper_cxl_event_devid {
132                         u16 vendor_id;            132                         u16 vendor_id;
133                         u16 device_id;            133                         u16 device_id;
134                         u8 func_num;              134                         u8 func_num;
135                         u8 device_num;            135                         u8 device_num;
136                         u8 bus_num;               136                         u8 bus_num;
137                         u16 segment_num;          137                         u16 segment_num;
138                         u16 slot_num; /* bits     138                         u16 slot_num; /* bits 2:0 reserved */
139                         u8 reserved;              139                         u8 reserved;
140                 } __packed device_id;             140                 } __packed device_id;
141                 struct cper_cxl_event_sn {        141                 struct cper_cxl_event_sn {
142                         u32 lower_dw;             142                         u32 lower_dw;
143                         u32 upper_dw;             143                         u32 upper_dw;
144                 } __packed dev_serial_num;        144                 } __packed dev_serial_num;
145         } __packed hdr;                           145         } __packed hdr;
146                                                   146 
147         union cxl_event event;                    147         union cxl_event event;
148 } __packed;                                       148 } __packed;
149                                                   149 
150 struct cxl_cper_work_data {                       150 struct cxl_cper_work_data {
151         enum cxl_event_type event_type;           151         enum cxl_event_type event_type;
152         struct cxl_cper_event_rec rec;            152         struct cxl_cper_event_rec rec;
153 };                                                153 };
154                                                   154 
155 #ifdef CONFIG_ACPI_APEI_GHES                      155 #ifdef CONFIG_ACPI_APEI_GHES
156 int cxl_cper_register_work(struct work_struct     156 int cxl_cper_register_work(struct work_struct *work);
157 int cxl_cper_unregister_work(struct work_struc    157 int cxl_cper_unregister_work(struct work_struct *work);
158 int cxl_cper_kfifo_get(struct cxl_cper_work_da    158 int cxl_cper_kfifo_get(struct cxl_cper_work_data *wd);
159 #else                                             159 #else
160 static inline int cxl_cper_register_work(struc    160 static inline int cxl_cper_register_work(struct work_struct *work)
161 {                                                 161 {
162         return 0;                                 162         return 0;
163 }                                                 163 }
164                                                   164 
165 static inline int cxl_cper_unregister_work(str    165 static inline int cxl_cper_unregister_work(struct work_struct *work)
166 {                                                 166 {
167         return 0;                                 167         return 0;
168 }                                                 168 }
169 static inline int cxl_cper_kfifo_get(struct cx    169 static inline int cxl_cper_kfifo_get(struct cxl_cper_work_data *wd)
170 {                                                 170 {
171         return 0;                                 171         return 0;
172 }                                                 172 }
173 #endif                                            173 #endif
174                                                   174 
175 #endif /* _LINUX_CXL_EVENT_H */                   175 #endif /* _LINUX_CXL_EVENT_H */
176                                                   176 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php