|
@@ -3664,11 +3664,35 @@ device_initcall(setup_xmon_sysrq);
|
|
|
#endif /* CONFIG_MAGIC_SYSRQ */
|
|
|
|
|
|
#ifdef CONFIG_DEBUG_FS
|
|
|
+static void clear_all_bpt(void)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+
|
|
|
+ /* clear/unpatch all breakpoints */
|
|
|
+ remove_bpts();
|
|
|
+ remove_cpu_bpts();
|
|
|
+
|
|
|
+ /* Disable all breakpoints */
|
|
|
+ for (i = 0; i < NBPTS; ++i)
|
|
|
+ bpts[i].enabled = 0;
|
|
|
+
|
|
|
+ /* Clear any data or iabr breakpoints */
|
|
|
+ if (iabr || dabr.enabled) {
|
|
|
+ iabr = NULL;
|
|
|
+ dabr.enabled = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ printf("xmon: All breakpoints cleared\n");
|
|
|
+}
|
|
|
+
|
|
|
static int xmon_dbgfs_set(void *data, u64 val)
|
|
|
{
|
|
|
xmon_on = !!val;
|
|
|
xmon_init(xmon_on);
|
|
|
|
|
|
+ /* make sure all breakpoints removed when disabling */
|
|
|
+ if (!xmon_on)
|
|
|
+ clear_all_bpt();
|
|
|
return 0;
|
|
|
}
|
|
|
|