Skip to content

Any plans for recent kernels? (6.11) #21

@iafilius

Description

@iafilius

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions