summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_booter.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/gsp_phys_booter.c')
-rw-r--r--kernel/gsp_phys_booter.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/kernel/gsp_phys_booter.c b/kernel/gsp_phys_booter.c
index 90a0a27..69a749a 100644
--- a/kernel/gsp_phys_booter.c
+++ b/kernel/gsp_phys_booter.c
@@ -7596,6 +7596,35 @@ static int gsp_phys_state_show(struct seq_file *m, void *v)
GSP_PHYS_RMCALL_GUEST_PT_LINES_PER_PAGE);
}
{
+ /*
+ * P6b wave-1.5/wave-2 deferred guest releases and copy
+ * authorship: the sema service's held-release lifecycle plus
+ * the deferral/hardware-primary parameter state. pending is the
+ * current hold gauge (releases waiting on the forwarded copy);
+ * copy_skipped is the withheld software copies, copy_soft/
+ * copy_fail the service-thread fallback copies; the rest are
+ * monotonic counters.
+ */
+ u64 g_copy_skipped = 0, g_copy_soft = 0, g_copy_fail = 0;
+ u64 g_deferred = 0, g_applied = 0;
+ u64 g_fallback = 0, g_pending = 0, g_overflow = 0;
+ u64 g_engaged = 0, g_timeouts = 0, g_canceled = 0;
+
+ gsp_sema_service_fwd_hold_stats(&g_copy_skipped, &g_copy_soft,
+ &g_copy_fail, &g_deferred,
+ &g_applied, &g_fallback,
+ &g_pending, &g_overflow,
+ &g_engaged, &g_timeouts,
+ &g_canceled);
+ seq_printf(m,
+ "work_guard: copy_skipped=%llu deferred=%llu applied=%llu fallback=%llu pending=%llu overflow=%llu engaged=%llu timeouts=%llu canceled=%llu defer_param=%u copy_soft=%llu copy_fail=%llu hw_primary_param=%u\n",
+ g_copy_skipped, g_deferred, g_applied, g_fallback,
+ g_pending, g_overflow, g_engaged, g_timeouts,
+ g_canceled, gsp_phys_work_defer_release_enabled(),
+ g_copy_soft, g_copy_fail,
+ gsp_phys_work_hw_primary_enabled());
+ }
+ {
char guest_ram[512];
gsp_phys_guest_ram_state(guest_ram, sizeof(guest_ram));