Merge tag 'mm-nonmm-stable-2024-05-19-11-56' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Pull non-mm updates from Andrew Morton:
"Mainly singleton patches, documented in their respective changelogs.
Notable series include:
- Some maintenance and performance work for ocfs2 in Heming Zhao's
series "improve write IO performance when fragmentation is high".
- Some ocfs2 bugfixes from Su Yue in the series "ocfs2 bugs fixes
exposed by fstests".
- kfifo header rework from Andy Shevchenko in the series "kfifo:
Clean up kfifo.h".
- GDB script fixes from Florian Rommel in the series "scripts/gdb:
Fixes for $lx_current and $lx_per_cpu".
- After much discussion, a coding-style update from Barry Song
explaining one reason why inline functions are preferred over
macros. The series is "codingstyle: avoid unused parameters for a
function-like macro""
* tag 'mm-nonmm-stable-2024-05-19-11-56' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (62 commits)
fs/proc: fix softlockup in __read_vmcore
nilfs2: convert BUG_ON() in nilfs_finish_roll_forward() to WARN_ON()
scripts: checkpatch: check unused parameters for function-like macro
Documentation: coding-style: ask function-like macros to evaluate parameters
nilfs2: use __field_struct() for a bitwise field
selftests/kcmp: remove unused open mode
nilfs2: remove calls to folio_set_error() and folio_clear_error()
kernel/watchdog_perf.c: tidy up kerneldoc
watchdog: allow nmi watchdog to use raw perf event
watchdog: handle comma separated nmi_watchdog command line
nilfs2: make superblock data array index computation sparse friendly
squashfs: remove calls to set the folio error flag
squashfs: convert squashfs_symlink_read_folio to use folio APIs
scripts/gdb: fix detection of current CPU in KGDB
scripts/gdb: make get_thread_info accept pointers
scripts/gdb: fix parameter handling in $lx_per_cpu
scripts/gdb: fix failing KGDB detection during probe
kfifo: don't use "proxy" headers
media: stih-cec: add missing io.h
media: rc: add missing io.h
...
This commit is contained in:
@@ -26,11 +26,7 @@ def get_current_cpu():
|
||||
if utils.get_gdbserver_type() == utils.GDBSERVER_QEMU:
|
||||
return gdb.selected_thread().num - 1
|
||||
elif utils.get_gdbserver_type() == utils.GDBSERVER_KGDB:
|
||||
tid = gdb.selected_thread().ptid[2]
|
||||
if tid > (0x100000000 - MAX_CPUS - 2):
|
||||
return 0x100000000 - tid - 2
|
||||
else:
|
||||
return tasks.get_thread_info(tasks.get_task_by_pid(tid))['cpu']
|
||||
return gdb.parse_and_eval("kgdb_active.counter")
|
||||
else:
|
||||
raise gdb.GdbError("Sorry, obtaining the current CPU is not yet "
|
||||
"supported with this gdb server.")
|
||||
@@ -152,9 +148,8 @@ Note that VAR has to be quoted as string."""
|
||||
def __init__(self):
|
||||
super(PerCpu, self).__init__("lx_per_cpu")
|
||||
|
||||
def invoke(self, var_name, cpu=-1):
|
||||
var_ptr = gdb.parse_and_eval("&" + var_name.string())
|
||||
return per_cpu(var_ptr, cpu)
|
||||
def invoke(self, var, cpu=-1):
|
||||
return per_cpu(var.address, cpu)
|
||||
|
||||
|
||||
PerCpu()
|
||||
|
||||
@@ -85,7 +85,7 @@ thread_info_type = utils.CachedType("struct thread_info")
|
||||
|
||||
def get_thread_info(task):
|
||||
thread_info_ptr_type = thread_info_type.get_type().pointer()
|
||||
if task.type.fields()[0].type == thread_info_type.get_type():
|
||||
if task_type.get_type().fields()[0].type == thread_info_type.get_type():
|
||||
return task['thread_info']
|
||||
thread_info = task['stack'].cast(thread_info_ptr_type)
|
||||
return thread_info.dereference()
|
||||
|
||||
@@ -196,7 +196,7 @@ def get_gdbserver_type():
|
||||
def probe_kgdb():
|
||||
try:
|
||||
thread_info = gdb.execute("info thread 2", to_string=True)
|
||||
return "shadowCPU0" in thread_info
|
||||
return "shadowCPU" in thread_info
|
||||
except gdb.error:
|
||||
return False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user