Hi,
Just starting in remote kernel debugging, i tried the kgdboe and followed your instructions.
compiled agains 6.11-rc3 kandidate, and apart from few warnings it looked and loaded OK.
however my journey stopped quit quickly after getting:
Malformed response to offset query, QCfffffffe
after trying to set-up the connect on gdb prompt.
The remote physical kernel/system didn't respond anymore, and i was not able to recover some logging.
compiling agains 6.9.9 gives:
$ make -C /lib/modules/$(uname -r)/build M=$(pwd)
make: Entering directory '/usr/src/linux-headers-6.9.9-custom'
CC [M] /home/arjan/kernel/t/kgdboe/irqsync.o
CC [M] /home/arjan/kernel/t/kgdboe/kgdboe_main.o
CC [M] /home/arjan/kernel/t/kgdboe/kgdboe_io.o
/home/arjan/kernel/t/kgdboe/kgdboe_io.c:28:6: warning: no previous prototype for ‘kgdb_schedule_breakpoint’ [-Wmissing-prototypes]
28 | void kgdb_schedule_breakpoint(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~
/home/arjan/kernel/t/kgdboe/kgdboe_io.c: In function ‘kgdboe_read_char’:
/home/arjan/kernel/t/kgdboe/kgdboe_io.c:88:5: warning: this ‘while’ clause does not guard... [-Wmisleading-indentation]
88 | while (s_IncomingRingBufferReadPosition == s_IncomingRingBufferWritePosition)
| ^~~~~
/home/arjan/kernel/t/kgdboe/kgdboe_io.c:91:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘while’
91 | result = s_IncomingRingBuffer[s_IncomingRingBufferReadPosition++];
| ^~~~~~
/home/arjan/kernel/t/kgdboe/kgdboe_io.c: At top level:
/home/arjan/kernel/t/kgdboe/kgdboe_io.c:126:5: warning: no previous prototype for ‘force_single_cpu_mode’ [-Wmissing-prototypes]
126 | int force_single_cpu_mode(void)
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /home/arjan/kernel/t/kgdboe/kgdboe_io.c:8:
/home/arjan/kernel/t/kgdboe/kgdboe_io.c: In function ‘kgdboe_io_init’:
/home/arjan/kernel/t/kgdboe/tracewrapper.h:8:30: warning: initialization of ‘int *’ from ‘long unsigned int’ makes pointer from integer without a cast [-Wint-conversion]
8 | #define kallsyms_lookup_name ((unsigned long(*)(const char *))kallsyms_lookup_name_address)
| ^
/home/arjan/kernel/t/kgdboe/kgdboe_io.c:175:30: note: in expansion of macro ‘kallsyms_lookup_name’
175 | int *_gro_normal_batch = kallsyms_lookup_name("gro_normal_batch");
| ^~~~~~~~~~~~~~~~~~~~
/home/arjan/kernel/t/kgdboe/tracewrapper.h: At top level:
/home/arjan/kernel/t/kgdboe/tracewrapper.h:23:27: warning: ‘do_lookup_tracepoint’ defined but not used [-Wunused-function]
23 | static struct tracepoint *do_lookup_tracepoint(const char *tracepointName, const char *tracepointPtrName)
| ^~~~~~~~~~~~~~~~~~~~
CC [M] /home/arjan/kernel/t/kgdboe/nethook.o
/home/arjan/kernel/t/kgdboe/nethook.c:96:24: warning: no previous prototype for ‘ndo_get_stats64_hook’ [-Wmissing-prototypes]
96 | DECLARE_NET_API_HOOK2V(ndo_get_stats64, void, struct net_device *, dev, struct rtnl_link_stats64 *, storage)
| ^~~~~~~~~~~~~~~
/home/arjan/kernel/t/kgdboe/nethook.c:86:21: note: in definition of macro ‘DECLARE_NET_API_HOOK2V’
86 | return_type name ## _hook(type1 arg1, type2 arg2) \
| ^~~~
/home/arjan/kernel/t/kgdboe/nethook.c:99:23: warning: no previous prototype for ‘ndo_get_stats_hook’ [-Wmissing-prototypes]
99 | DECLARE_NET_API_HOOK1(ndo_get_stats, struct net_device_stats*, struct net_device *, dev)
| ^~~~~~~~~~~~~
/home/arjan/kernel/t/kgdboe/nethook.c:62:21: note: in definition of macro ‘DECLARE_NET_API_HOOK1’
62 | return_type name ## _hook(type1 arg1) \
| ^~~~
In file included from /home/arjan/kernel/t/kgdboe/nethook.c:13:
/home/arjan/kernel/t/kgdboe/tracewrapper.h:23:27: warning: ‘do_lookup_tracepoint’ defined but not used [-Wunused-function]
23 | static struct tracepoint *do_lookup_tracepoint(const char *tracepointName, const char *tracepointPtrName)
| ^~~~~~~~~~~~~~~~~~~~
CC [M] /home/arjan/kernel/t/kgdboe/netpoll_wrapper.o
CC [M] /home/arjan/kernel/t/kgdboe/poll_copy.o
CC [M] /home/arjan/kernel/t/kgdboe/spinhook.o
CC [M] /home/arjan/kernel/t/kgdboe/timerhook.o
LD [M] /home/arjan/kernel/t/kgdboe/kgdboe.o
MODPOST /home/arjan/kernel/t/kgdboe/Module.symvers
CC [M] /home/arjan/kernel/t/kgdboe/kgdboe.mod.o
LD [M] /home/arjan/kernel/t/kgdboe/kgdboe.ko
make: Leaving directory '/usr/src/linux-headers-6.9.9-custom'
And similar on 6.11-rc3.
root@arjan-ThinkPad-T430:~/nouveau-debug/t/kgdboe# make -C /lib/modules/$(uname -r)/build M=$(pwd)
make: Entering directory '/usr/src/linux-headers-6.11.0-rc3-custom'
CC [M] /root/nouveau-debug/t/kgdboe/irqsync.o
CC [M] /root/nouveau-debug/t/kgdboe/kgdboe_main.o
CC [M] /root/nouveau-debug/t/kgdboe/kgdboe_io.o
/root/nouveau-debug/t/kgdboe/kgdboe_io.c:28:6: warning: no previous prototype for ‘kgdb_schedule_breakpoint’ [-Wmissing-prototypes]
28 | void kgdb_schedule_breakpoint(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~
/root/nouveau-debug/t/kgdboe/kgdboe_io.c: In function ‘kgdboe_read_char’:
/root/nouveau-debug/t/kgdboe/kgdboe_io.c:88:5: warning: this ‘while’ clause does not guard... [-Wmisleading-indentation]
88 | while (s_IncomingRingBufferReadPosition == s_IncomingRingBufferWritePosition)
| ^~~~~
/root/nouveau-debug/t/kgdboe/kgdboe_io.c:91:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘while’
91 | result = s_IncomingRingBuffer[s_IncomingRingBufferReadPosition++];
| ^~~~~~
/root/nouveau-debug/t/kgdboe/kgdboe_io.c: At top level:
/root/nouveau-debug/t/kgdboe/kgdboe_io.c:126:5: warning: no previous prototype for ‘force_single_cpu_mode’ [-Wmissing-prototypes]
126 | int force_single_cpu_mode(void)
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /root/nouveau-debug/t/kgdboe/kgdboe_io.c:8:
/root/nouveau-debug/t/kgdboe/kgdboe_io.c: In function ‘kgdboe_io_init’:
/root/nouveau-debug/t/kgdboe/tracewrapper.h:8:30: warning: initialization of ‘int *’ from ‘long unsigned int’ makes pointer from integer without a cast [-Wint-conversion]
8 | #define kallsyms_lookup_name ((unsigned long(*)(const char *))kallsyms_lookup_name_address)
| ^
/root/nouveau-debug/t/kgdboe/kgdboe_io.c:175:30: note: in expansion of macro ‘kallsyms_lookup_name’
175 | int *_gro_normal_batch = kallsyms_lookup_name("gro_normal_batch");
| ^~~~~~~~~~~~~~~~~~~~
/root/nouveau-debug/t/kgdboe/tracewrapper.h: At top level:
/root/nouveau-debug/t/kgdboe/tracewrapper.h:23:27: warning: ‘do_lookup_tracepoint’ defined but not used [-Wunused-function]
23 | static struct tracepoint *do_lookup_tracepoint(const char *tracepointName, const char *tracepointPtrName)
| ^~~~~~~~~~~~~~~~~~~~
CC [M] /root/nouveau-debug/t/kgdboe/nethook.o
/root/nouveau-debug/t/kgdboe/nethook.c:96:24: warning: no previous prototype for ‘ndo_get_stats64_hook’ [-Wmissing-prototypes]
96 | DECLARE_NET_API_HOOK2V(ndo_get_stats64, void, struct net_device *, dev, struct rtnl_link_stats64 *, storage)
| ^~~~~~~~~~~~~~~
/root/nouveau-debug/t/kgdboe/nethook.c:86:21: note: in definition of macro ‘DECLARE_NET_API_HOOK2V’
86 | return_type name ## _hook(type1 arg1, type2 arg2) \
| ^~~~
/root/nouveau-debug/t/kgdboe/nethook.c:99:23: warning: no previous prototype for ‘ndo_get_stats_hook’ [-Wmissing-prototypes]
99 | DECLARE_NET_API_HOOK1(ndo_get_stats, struct net_device_stats*, struct net_device *, dev)
| ^~~~~~~~~~~~~
/root/nouveau-debug/t/kgdboe/nethook.c:62:21: note: in definition of macro ‘DECLARE_NET_API_HOOK1’
62 | return_type name ## _hook(type1 arg1) \
| ^~~~
In file included from /root/nouveau-debug/t/kgdboe/nethook.c:13:
/root/nouveau-debug/t/kgdboe/tracewrapper.h:23:27: warning: ‘do_lookup_tracepoint’ defined but not used [-Wunused-function]
23 | static struct tracepoint *do_lookup_tracepoint(const char *tracepointName, const char *tracepointPtrName)
| ^~~~~~~~~~~~~~~~~~~~
CC [M] /root/nouveau-debug/t/kgdboe/netpoll_wrapper.o
CC [M] /root/nouveau-debug/t/kgdboe/poll_copy.o
CC [M] /root/nouveau-debug/t/kgdboe/spinhook.o
CC [M] /root/nouveau-debug/t/kgdboe/timerhook.o
LD [M] /root/nouveau-debug/t/kgdboe/kgdboe.o
MODPOST /root/nouveau-debug/t/kgdboe/Module.symvers
CC [M] /root/nouveau-debug/t/kgdboe/kgdboe.mod.o
LD [M] /root/nouveau-debug/t/kgdboe/kgdboe.ko
make: Leaving directory '/usr/src/linux-headers-6.11.0-rc3-custom'
As you may see i'm trying to setup a remote kernel debug for debugging the nouveau driver.
regards
Hi,
Just starting in remote kernel debugging, i tried the kgdboe and followed your instructions.
compiled agains 6.11-rc3 kandidate, and apart from few warnings it looked and loaded OK.
however my journey stopped quit quickly after getting:
Malformed response to offset query, QCfffffffe
after trying to set-up the connect on gdb prompt.
The remote physical kernel/system didn't respond anymore, and i was not able to recover some logging.
compiling agains 6.9.9 gives:
And similar on 6.11-rc3.
As you may see i'm trying to setup a remote kernel debug for debugging the nouveau driver.
regards