Page MenuHomeFreeBSD

D49592.id152923.diff
No OneTemporary

D49592.id152923.diff

diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c
--- a/sys/amd64/amd64/trap.c
+++ b/sys/amd64/amd64/trap.c
@@ -163,6 +163,8 @@
&uprintf_signal, 0,
"Print debugging information on trap signal to ctty");
+bool print_efirt_faults = true;
+
/*
* Control L1D flush on return from NMI.
*
@@ -431,8 +433,11 @@
*/
if ((td->td_pflags & TDP_EFIRT) != 0 &&
curpcb->pcb_onfault != NULL && type != T_PAGEFLT) {
- trap_diag(frame, 0);
- printf("EFI RT fault %s\n", traptype_to_msg(type));
+ if (print_efirt_faults) {
+ trap_diag(frame, 0);
+ printf("EFI RT fault %s\n",
+ traptype_to_msg(type));
+ }
frame->tf_rip = (long)curpcb->pcb_onfault;
return;
}
diff --git a/sys/arm/arm/trap-v6.c b/sys/arm/arm/trap-v6.c
--- a/sys/arm/arm/trap-v6.c
+++ b/sys/arm/arm/trap-v6.c
@@ -65,6 +65,8 @@
#include <sys/dtrace_bsd.h>
#endif
+bool print_efirt_faults;
+
extern char cachebailout[];
struct ksig {
diff --git a/sys/arm64/arm64/trap.c b/sys/arm64/arm64/trap.c
--- a/sys/arm64/arm64/trap.c
+++ b/sys/arm64/arm64/trap.c
@@ -85,6 +85,8 @@
int (*dtrace_invop_jump_addr)(struct trapframe *);
+bool print_efirt_faults;
+
typedef void (abort_handler)(struct thread *, struct trapframe *, uint64_t,
uint64_t, int);
diff --git a/sys/dev/efidev/efirt.c b/sys/dev/efidev/efirt.c
--- a/sys/dev/efidev/efirt.c
+++ b/sys/dev/efidev/efirt.c
@@ -123,11 +123,15 @@
}
static struct mtx efi_lock;
-static SYSCTL_NODE(_hw, OID_AUTO, efi, CTLFLAG_RWTUN | CTLFLAG_MPSAFE, NULL,
+SYSCTL_NODE(_hw, OID_AUTO, efi, CTLFLAG_RWTUN | CTLFLAG_MPSAFE, NULL,
"EFI");
static bool efi_poweroff = true;
SYSCTL_BOOL(_hw_efi, OID_AUTO, poweroff, CTLFLAG_RWTUN, &efi_poweroff, 0,
"If true, use EFI runtime services to power off in preference to ACPI");
+extern bool print_efirt_faults;
+SYSCTL_BOOL(_hw_efi, OID_AUTO, print_faults, CTLFLAG_RWTUN,
+ &print_efirt_faults, 0,
+ "Print fault information on trap from EFIRT calls");
static bool
efi_is_in_map(struct efi_md *map, int ndesc, int descsz, vm_offset_t addr)
diff --git a/sys/riscv/riscv/trap.c b/sys/riscv/riscv/trap.c
--- a/sys/riscv/riscv/trap.c
+++ b/sys/riscv/riscv/trap.c
@@ -75,6 +75,7 @@
#endif
int (*dtrace_invop_jump_addr)(struct trapframe *);
+bool print_efirt_faults;
/* Called from exception.S */
void do_trap_supervisor(struct trapframe *);

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 22, 11:11 AM (12 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31972748
Default Alt Text
D49592.id152923.diff (2 KB)

Event Timeline