Here is how to enable the xen-netback dynamic debug on Oracle VM 3.3 (Xen).
1. Mount debugfs to /sys/kernel/debug if it is not already mounted:
# mount -t debugfs debugfs /sys/kernel/debug
2. Check the list of
# cat /sys/kernel/debug/dynamic_debug/control | grep netback
drivers/net/xen-netback/netback.c:469 [xen_netback]xenvif_check_gop =_ "Bad status %d from copy to DOM%d.\012"
drivers/net/xen-netback/netback.c:1262 [xen_netback]xenvif_tx_build_gops =_ "Can't allocate a skb in start_xmit.\012"
drivers/net/xen-netback/netback.c:1237 [xen_netback]xenvif_tx_build_gops =_ "Bad packet size: %d\012"
drivers/net/xen-netback/netback.c:754 [xen_netback]xenvif_count_requests =_ "Invalid tx request, slot size %u > remaining size %u\012"
drivers/net/xen-netback/netback.c:731 [xen_netback]xenvif_count_requests =_ "Too many slots (%d) exceeding limit (%d), dropping packet\012"
drivers/net/xen-netback/netback.c:1487 [xen_netback]xenvif_tx_submit =_ "Can't setup checksum in net_tx_action\012"
drivers/net/xen-netback/netback.c:968 [xen_netback]xenvif_tx_check_gop =_ "Grant map of %d. frag failed! status: %d pending_idx: %u ref: %u\012"
drivers/net/xen-netback/netback.c:923 [xen_netback]xenvif_tx_check_gop =_ "Grant copy of header failed! status: %d pending_idx: %u ref: %u\012"
drivers/net/xen-netback/xenbus.c:460 [xen_netback]backend_switch_state =_ "%s -> %s\012"
drivers/net/xen-netback/xenbus.c:561 [xen_netback]frontend_changed =_ "%s -> %s\012"
drivers/net/xen-netback/xenbus.c:381 [xen_netback]netback_probe =_ "failed\012"
drivers/net/xen-netback/xenbus.c:353 [xen_netback]netback_probe =_ "Error writing multi-queue-max-queues\012"
drivers/net/xen-netback/xenbus.c:347 [xen_netback]netback_probe =_ "Error writing feature-split-event-channels\012"
drivers/net/xen-netback/interface.c:458 [xen_netback]xenvif_alloc =_ "Successfully created xenvif\012"
3. Enable xen_netback dynamic debug:
# echo -n "module xen_netback +p" > /sys/kernel/debug/dynamic_debug/control
4. Confirm that all xen_netback functions are enabled:
# cat /sys/kernel/debug/dynamic_debug/control | grep netback
drivers/net/xen-netback/netback.c:469 [xen_netback]xenvif_check_gop =p "Bad status %d from copy to DOM%d.\012"
drivers/net/xen-netback/netback.c:1262 [xen_netback]xenvif_tx_build_gops =p "Can't allocate a skb in start_xmit.\012"
drivers/net/xen-netback/netback.c:1237 [xen_netback]xenvif_tx_build_gops =p "Bad packet size: %d\012"
drivers/net/xen-netback/netback.c:754 [xen_netback]xenvif_count_requests =p "Invalid tx request, slot size %u > remaining size %u\012"
drivers/net/xen-netback/netback.c:731 [xen_netback]xenvif_count_requests =p "Too many slots (%d) exceeding limit (%d), dropping packet\012"
drivers/net/xen-netback/netback.c:1487 [xen_netback]xenvif_tx_submit =p "Can't setup checksum in net_tx_action\012"
drivers/net/xen-netback/netback.c:968 [xen_netback]xenvif_tx_check_gop =p "Grant map of %d. frag failed! status: %d pending_idx: %u ref: %u\012"
drivers/net/xen-netback/netback.c:923 [xen_netback]xenvif_tx_check_gop =p "Grant copy of header failed! status: %d pending_idx: %u ref: %u\012"
drivers/net/xen-netback/xenbus.c:460 [xen_netback]backend_switch_state =p "%s -> %s\012"
drivers/net/xen-netback/xenbus.c:561 [xen_netback]frontend_changed =p "%s -> %s\012"
drivers/net/xen-netback/xenbus.c:381 [xen_netback]netback_probe =p "failed\012"
drivers/net/xen-netback/xenbus.c:353 [xen_netback]netback_probe =p "Error writing multi-queue-max-queues\012"
drivers/net/xen-netback/xenbus.c:347 [xen_netback]netback_probe =p "Error writing feature-split-event-channels\012"
drivers/net/xen-netback/interface.c:458 [xen_netback]xenvif_alloc =p "Successfully created xenvif\012"
5. Enable debug level in rsyslog:
5.1. Change the following line in /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
to
*.debug;*.info;mail.none;authpriv.none;cron.none /var/log/messages
5.2. Restart rsyslogd:
# /etc/init.d/rsyslog stop
# /etc/init.d/rsyslog start
Reference:
[1] https://www.kernel.org/doc/html/latest/admin-guide/dynamic-debug-howto.html
[2] https://lwn.net/Articles/434833/
1. Mount debugfs to /sys/kernel/debug if it is not already mounted:
# mount -t debugfs debugfs /sys/kernel/debug
2. Check the list of
# cat /sys/kernel/debug/dynamic_debug/control | grep netback
drivers/net/xen-netback/netback.c:469 [xen_netback]xenvif_check_gop =_ "Bad status %d from copy to DOM%d.\012"
drivers/net/xen-netback/netback.c:1262 [xen_netback]xenvif_tx_build_gops =_ "Can't allocate a skb in start_xmit.\012"
drivers/net/xen-netback/netback.c:1237 [xen_netback]xenvif_tx_build_gops =_ "Bad packet size: %d\012"
drivers/net/xen-netback/netback.c:754 [xen_netback]xenvif_count_requests =_ "Invalid tx request, slot size %u > remaining size %u\012"
drivers/net/xen-netback/netback.c:731 [xen_netback]xenvif_count_requests =_ "Too many slots (%d) exceeding limit (%d), dropping packet\012"
drivers/net/xen-netback/netback.c:1487 [xen_netback]xenvif_tx_submit =_ "Can't setup checksum in net_tx_action\012"
drivers/net/xen-netback/netback.c:968 [xen_netback]xenvif_tx_check_gop =_ "Grant map of %d. frag failed! status: %d pending_idx: %u ref: %u\012"
drivers/net/xen-netback/netback.c:923 [xen_netback]xenvif_tx_check_gop =_ "Grant copy of header failed! status: %d pending_idx: %u ref: %u\012"
drivers/net/xen-netback/xenbus.c:460 [xen_netback]backend_switch_state =_ "%s -> %s\012"
drivers/net/xen-netback/xenbus.c:561 [xen_netback]frontend_changed =_ "%s -> %s\012"
drivers/net/xen-netback/xenbus.c:381 [xen_netback]netback_probe =_ "failed\012"
drivers/net/xen-netback/xenbus.c:353 [xen_netback]netback_probe =_ "Error writing multi-queue-max-queues\012"
drivers/net/xen-netback/xenbus.c:347 [xen_netback]netback_probe =_ "Error writing feature-split-event-channels\012"
drivers/net/xen-netback/interface.c:458 [xen_netback]xenvif_alloc =_ "Successfully created xenvif\012"
3. Enable xen_netback dynamic debug:
# echo -n "module xen_netback +p" > /sys/kernel/debug/dynamic_debug/control
4. Confirm that all xen_netback functions are enabled:
# cat /sys/kernel/debug/dynamic_debug/control | grep netback
drivers/net/xen-netback/netback.c:469 [xen_netback]xenvif_check_gop =p "Bad status %d from copy to DOM%d.\012"
drivers/net/xen-netback/netback.c:1262 [xen_netback]xenvif_tx_build_gops =p "Can't allocate a skb in start_xmit.\012"
drivers/net/xen-netback/netback.c:1237 [xen_netback]xenvif_tx_build_gops =p "Bad packet size: %d\012"
drivers/net/xen-netback/netback.c:754 [xen_netback]xenvif_count_requests =p "Invalid tx request, slot size %u > remaining size %u\012"
drivers/net/xen-netback/netback.c:731 [xen_netback]xenvif_count_requests =p "Too many slots (%d) exceeding limit (%d), dropping packet\012"
drivers/net/xen-netback/netback.c:1487 [xen_netback]xenvif_tx_submit =p "Can't setup checksum in net_tx_action\012"
drivers/net/xen-netback/netback.c:968 [xen_netback]xenvif_tx_check_gop =p "Grant map of %d. frag failed! status: %d pending_idx: %u ref: %u\012"
drivers/net/xen-netback/netback.c:923 [xen_netback]xenvif_tx_check_gop =p "Grant copy of header failed! status: %d pending_idx: %u ref: %u\012"
drivers/net/xen-netback/xenbus.c:460 [xen_netback]backend_switch_state =p "%s -> %s\012"
drivers/net/xen-netback/xenbus.c:561 [xen_netback]frontend_changed =p "%s -> %s\012"
drivers/net/xen-netback/xenbus.c:381 [xen_netback]netback_probe =p "failed\012"
drivers/net/xen-netback/xenbus.c:353 [xen_netback]netback_probe =p "Error writing multi-queue-max-queues\012"
drivers/net/xen-netback/xenbus.c:347 [xen_netback]netback_probe =p "Error writing feature-split-event-channels\012"
drivers/net/xen-netback/interface.c:458 [xen_netback]xenvif_alloc =p "Successfully created xenvif\012"
5. Enable debug level in rsyslog:
5.1. Change the following line in /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
to
*.debug;*.info;mail.none;authpriv.none;cron.none /var/log/messages
5.2. Restart rsyslogd:
# /etc/init.d/rsyslog stop
# /etc/init.d/rsyslog start
Reference:
[1] https://www.kernel.org/doc/html/latest/admin-guide/dynamic-debug-howto.html
[2] https://lwn.net/Articles/434833/