|
@@ -310,3 +310,109 @@ typedef union pal_cache_line_id_u {
|
|
|
start : 8, /* 47-40 lsb of data to
|
|
|
* invert
|
|
|
*/
|
|
|
+ length : 8, /* 55-48 #bits to
|
|
|
+ * invert
|
|
|
+ */
|
|
|
+ trigger : 8; /* 63-56 Trigger error
|
|
|
+ * by doing a load
|
|
|
+ * after the write
|
|
|
+ */
|
|
|
+
|
|
|
+ } pclid_info_write;
|
|
|
+} pal_cache_line_id_u_t;
|
|
|
+
|
|
|
+#define pclid_read_part pclid_info_read.part
|
|
|
+#define pclid_read_way pclid_info_read.way
|
|
|
+#define pclid_read_level pclid_info_read.level
|
|
|
+#define pclid_read_cache_type pclid_info_read.cache_type
|
|
|
+
|
|
|
+#define pclid_write_trigger pclid_info_write.trigger
|
|
|
+#define pclid_write_length pclid_info_write.length
|
|
|
+#define pclid_write_start pclid_info_write.start
|
|
|
+#define pclid_write_mesi pclid_info_write.mesi
|
|
|
+#define pclid_write_part pclid_info_write.part
|
|
|
+#define pclid_write_way pclid_info_write.way
|
|
|
+#define pclid_write_level pclid_info_write.level
|
|
|
+#define pclid_write_cache_type pclid_info_write.cache_type
|
|
|
+
|
|
|
+/* Processor cache line part encodings */
|
|
|
+#define PAL_CACHE_LINE_ID_PART_DATA 0 /* Data */
|
|
|
+#define PAL_CACHE_LINE_ID_PART_TAG 1 /* Tag */
|
|
|
+#define PAL_CACHE_LINE_ID_PART_DATA_PROT 2 /* Data protection */
|
|
|
+#define PAL_CACHE_LINE_ID_PART_TAG_PROT 3 /* Tag protection */
|
|
|
+#define PAL_CACHE_LINE_ID_PART_DATA_TAG_PROT 4 /* Data+tag
|
|
|
+ * protection
|
|
|
+ */
|
|
|
+typedef struct pal_cache_line_info_s {
|
|
|
+ pal_status_t pcli_status; /* Return status of the read cache line
|
|
|
+ * info call.
|
|
|
+ */
|
|
|
+ u64 pcli_data; /* 64-bit data, tag, protection bits .. */
|
|
|
+ u64 pcli_data_len; /* data length in bits */
|
|
|
+ pal_cache_line_state_t pcli_cache_line_state; /* mesi state */
|
|
|
+
|
|
|
+} pal_cache_line_info_t;
|
|
|
+
|
|
|
+
|
|
|
+/* Machine Check related crap */
|
|
|
+
|
|
|
+/* Pending event status bits */
|
|
|
+typedef u64 pal_mc_pending_events_t;
|
|
|
+
|
|
|
+#define PAL_MC_PENDING_MCA (1 << 0)
|
|
|
+#define PAL_MC_PENDING_INIT (1 << 1)
|
|
|
+
|
|
|
+/* Error information type */
|
|
|
+typedef u64 pal_mc_info_index_t;
|
|
|
+
|
|
|
+#define PAL_MC_INFO_PROCESSOR 0 /* Processor */
|
|
|
+#define PAL_MC_INFO_CACHE_CHECK 1 /* Cache check */
|
|
|
+#define PAL_MC_INFO_TLB_CHECK 2 /* Tlb check */
|
|
|
+#define PAL_MC_INFO_BUS_CHECK 3 /* Bus check */
|
|
|
+#define PAL_MC_INFO_REQ_ADDR 4 /* Requestor address */
|
|
|
+#define PAL_MC_INFO_RESP_ADDR 5 /* Responder address */
|
|
|
+#define PAL_MC_INFO_TARGET_ADDR 6 /* Target address */
|
|
|
+#define PAL_MC_INFO_IMPL_DEP 7 /* Implementation
|
|
|
+ * dependent
|
|
|
+ */
|
|
|
+
|
|
|
+#define PAL_TLB_CHECK_OP_PURGE 8
|
|
|
+
|
|
|
+typedef struct pal_process_state_info_s {
|
|
|
+ u64 reserved1 : 2,
|
|
|
+ rz : 1, /* PAL_CHECK processor
|
|
|
+ * rendezvous
|
|
|
+ * successful.
|
|
|
+ */
|
|
|
+
|
|
|
+ ra : 1, /* PAL_CHECK attempted
|
|
|
+ * a rendezvous.
|
|
|
+ */
|
|
|
+ me : 1, /* Distinct multiple
|
|
|
+ * errors occurred
|
|
|
+ */
|
|
|
+
|
|
|
+ mn : 1, /* Min. state save
|
|
|
+ * area has been
|
|
|
+ * registered with PAL
|
|
|
+ */
|
|
|
+
|
|
|
+ sy : 1, /* Storage integrity
|
|
|
+ * synched
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ co : 1, /* Continuable */
|
|
|
+ ci : 1, /* MC isolated */
|
|
|
+ us : 1, /* Uncontained storage
|
|
|
+ * damage.
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ hd : 1, /* Non-essential hw
|
|
|
+ * lost (no loss of
|
|
|
+ * functionality)
|
|
|
+ * causing the
|
|
|
+ * processor to run in
|
|
|
+ * degraded mode.
|
|
|
+ */
|