Re: [PATCH 0/3] Fix preemption errors in watchpoints
From: Benjamin Gray <hidden>
Date: 2023-08-29 06:44:23
On 29/8/23 4:34 pm, Benjamin Gray wrote:
When enabling debug config options relating to preemption, several bugs appear in the kernel log. With this series applied, the breakpoint code no longer prints bugs when running the powerpc/ptrace selftests. Benjamin Gray (3): powerpc/watchpoints: Disable preemption in thread_change_pc() powerpc/watchpoint: Disable pagefaults when getting user instruction powerpc/watchpoints: Annotate atomic context in more places arch/powerpc/kernel/hw_breakpoint.c | 16 +++++++++++++++- arch/powerpc/kernel/hw_breakpoint_constraints.c | 7 ++++++- 2 files changed, 21 insertions(+), 2 deletions(-) -- 2.41.0
The particular config is below, used by appending to a ppc64le_guest_defconfig. Not all options are relevant. Tested on a Power8 and Power10 machine (1 and 2 watchpoints). CONFIG_LOCALVERSION="-watchpoint-sleep" CONFIG_GENERIC_IRQ_DEBUGFS=y CONFIG_PREEMPT=y CONFIG_PRINTK_INDEX=y CONFIG_CGROUP_DEBUG=y CONFIG_PPC_KUAP_DEBUG=y CONFIG_SCOM_DEBUGFS=y CONFIG_UDBG_RTAS_CONSOLE=y CONFIG_RELOCATABLE_TEST=y CONFIG_PM_DEBUG=y CONFIG_PM_ADVANCED_DEBUG=y CONFIG_STATIC_KEYS_SELFTEST=y CONFIG_MODULE_DEBUG=y CONFIG_MODULE_STATS=y CONFIG_MODULE_DEBUG_AUTOLOAD_DUPS_TRACE=y CONFIG_CMA_DEBUGFS=y CONFIG_CMA_SYSFS=y CONFIG_PERCPU_STATS=y CONFIG_USERFAULTFD=y CONFIG_VALIDATE_FS_PARSER=y CONFIG_EXT4_DEBUG=y CONFIG_HARDENED_USERCOPY=y CONFIG_FORTIFY_SOURCE=y CONFIG_DYNAMIC_DEBUG=y CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y CONFIG_DEBUG_INFO_SPLIT=y CONFIG_GDB_SCRIPTS=y CONFIG_READABLE_ASM=y CONFIG_NET_DEV_REFCNT_TRACKER=y CONFIG_NET_NS_REFCNT_TRACKER=y CONFIG_DEBUG_NET=y CONFIG_DEBUG_PAGEALLOC=y CONFIG_SLUB_DEBUG_ON=y CONFIG_PTDUMP_DEBUGFS=y CONFIG_DEBUG_KMEMLEAK=y CONFIG_PER_VMA_LOCK_STATS=y CONFIG_DEBUG_OBJECTS=y CONFIG_DEBUG_OBJECTS_SELFTEST=y CONFIG_DEBUG_OBJECTS_FREE=y CONFIG_DEBUG_OBJECTS_TIMERS=y CONFIG_DEBUG_OBJECTS_WORK=y CONFIG_DEBUG_OBJECTS_RCU_HEAD=y CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y CONFIG_SHRINKER_DEBUG=y CONFIG_SCHED_STACK_END_CHECK=y CONFIG_DEBUG_VM=y CONFIG_DEBUG_VM_MAPLE_TREE=y CONFIG_DEBUG_VM_RB=y CONFIG_DEBUG_VM_PGFLAGS=y CONFIG_DEBUG_VM_PGTABLE=y CONFIG_DEBUG_VIRTUAL=y CONFIG_DEBUG_PER_CPU_MAPS=y CONFIG_DEBUG_SHIRQ=y CONFIG_WQ_WATCHDOG=y CONFIG_DEBUG_TIMEKEEPING=y CONFIG_DEBUG_PREEMPT=y CONFIG_PROVE_LOCKING=y CONFIG_LOCK_STAT=y CONFIG_DEBUG_ATOMIC_SLEEP=y CONFIG_DEBUG_LOCKING_API_SELFTESTS=y CONFIG_CSD_LOCK_WAIT_DEBUG=y CONFIG_DEBUG_IRQFLAGS=y CONFIG_WARN_ALL_UNSEEDED_RANDOM=y CONFIG_DEBUG_NOTIFIERS=y CONFIG_DEBUG_CREDENTIALS=y CONFIG_RCU_CPU_STALL_CPUTIME=y CONFIG_RCU_EQS_DEBUG=y CONFIG_DEBUG_WQ_FORCE_RR_CPU=y CONFIG_CPU_HOTPLUG_STATE_CONTROL=y CONFIG_LATENCYTOP=y CONFIG_PPC_IRQ_SOFT_MASK_DEBUG=y CONFIG_PPC_RFI_SRR_DEBUG=y