summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_fwsec.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/gsp_phys_fwsec.h')
-rw-r--r--kernel/gsp_phys_fwsec.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/kernel/gsp_phys_fwsec.h b/kernel/gsp_phys_fwsec.h
new file mode 100644
index 0000000..8e9d71d
--- /dev/null
+++ b/kernel/gsp_phys_fwsec.h
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef GSP_PHYS_FWSEC_H
+#define GSP_PHYS_FWSEC_H
+
+#include <linux/types.h>
+#include <linux/pci.h>
+#include <linux/io.h>
+
+#include "gsp_phys_boot.h"
+
+/*
+ * Real-GSP boot stage 3c: the FWSEC secure-verification run that carves
+ * WPR2/FRTS on the claimed physical GPU, plus the teardown path that removes
+ * WPR2 again before the device is handed back to the distribution driver.
+ *
+ * The stage is disabled by default (gsp_phys_fwsec=N); claim must be enabled
+ * too (gsp_phys_gpu=1 + gsp_phys_hazard_ack=1) and the boot layout (stage 3b)
+ * must have succeeded. Every step logs its register reads; failures abort and
+ * the recovery path is attempted immediately.
+ */
+
+bool gsp_phys_fwsec_enabled(void);
+
+int gsp_phys_fwsec_run(struct gsp_phys_boot *boot, struct pci_dev *pdev,
+ void __iomem *bar0);
+
+/*
+ * Prepare the device for hand-back. If a FWSEC run programmed WPR2, run the
+ * teardown (FWSEC-SB + booter unload) while the module still owns BAR0.
+ * Returns nonzero when WPR2 could not be torn down: the caller must then
+ * refuse to rebind the distribution driver and keep the power-domain locks.
+ */
+int gsp_phys_fwsec_release(struct gsp_phys_boot *boot, struct pci_dev *pdev,
+ void __iomem *bar0);
+
+#endif /* GSP_PHYS_FWSEC_H */