summaryrefslogtreecommitdiffstats
path: root/cachepc/uspt.c
diff options
context:
space:
mode:
Diffstat (limited to 'cachepc/uspt.c')
-rw-r--r--cachepc/uspt.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/cachepc/uspt.c b/cachepc/uspt.c
index 793c1ba..49c316d 100644
--- a/cachepc/uspt.c
+++ b/cachepc/uspt.c
@@ -31,14 +31,15 @@ sevstep_uspt_is_initialized()
}
int
-sevstep_uspt_send_and_block(uint64_t fault_gfn, uint32_t error_code)
+sevstep_uspt_send_and_block(uint64_t inst_fault_gfn, uint32_t inst_fault_err,
+ uint64_t data_fault_gfn, uint32_t data_fault_err)
{
struct cpc_track_event event;
ktime_t deadline;
read_lock(&event_lock);
if (!sevstep_uspt_is_initialized()) {
- pr_warn("Sevstep: uspt_send_and_block: ctx not initialized!\n");
+ pr_warn("Sevstep: ctx not initialized!\n");
read_unlock(&event_lock);
return 1;
}
@@ -46,16 +47,18 @@ sevstep_uspt_send_and_block(uint64_t fault_gfn, uint32_t error_code)
write_lock(&event_lock);
if (last_sent_eventid != last_acked_eventid) {
- pr_warn("Sevstep: uspt_send_and_block: "
- "event id_s out of sync, aborting. Fix this later\n");
+ pr_warn("Sevstep: event id_s out of sync, aborting\n");
write_unlock(&event_lock);
return 1;
} else {
last_sent_eventid++;
}
event.id = last_sent_eventid;
- event.fault_gfn = fault_gfn;
- event.fault_err = error_code;
+ event.inst_fault_gfn = inst_fault_gfn;
+ event.inst_fault_err = inst_fault_err;
+ event.data_fault_avail = (data_fault_err != 0);
+ event.data_fault_gfn = data_fault_gfn;
+ event.data_fault_err = data_fault_err;
event.timestamp_ns = ktime_get_real_ns();
event.retinst = cachepc_retinst;
@@ -64,12 +67,11 @@ sevstep_uspt_send_and_block(uint64_t fault_gfn, uint32_t error_code)
write_unlock(&event_lock);
/* wait for ack with timeout */
- pr_warn("Sevstep: uspt_send_and_block: Begin wait for event ack");
+ // pr_warn("Sevstep: uspt_send_and_block: Begin wait for event ack");
deadline = ktime_get_ns() + 2000000000ULL; /* 1s in ns */
while (!sevstep_uspt_is_event_done(sent_event.id)) {
if (ktime_get_ns() > deadline) {
- pr_warn("Sevstep: uspt_send_and_block: "
- "Waiting for ack of event %llu timed out",
+ pr_warn("Sevstep: Timeout waiting for ack of event %llu ",
sent_event.id);
return 3;
}