Skip to content

Commit 3197b81

Browse files
committed
Don't default to virtio-serial
virtio-serial does not work with kgdboc. I know it's an unusual use case as one can always just use the qemu gdbserver, but still... root@aa98fce09d67:/# echo a > /dev/hvc0 root@aa98fce09d67:/# echo a > /dev/hvc1 a root@aa98fce09d67:/# echo g > /proc/sysrq-trigger [ 11.997004][ T146] sysrq: DEBUG [ 11.998003][ C9] BUG: kernel NULL pointer dereference, address: 0000000000000248 [ 11.998003][ C9] #PF: supervisor read access in kernel mode [ 11.998003][ C9] #PF: error_code(0x0000) - not-present page [ 11.998003][ C9] PGD 0 P4D 0 [ 11.998003][ C9] Oops: Oops: 0000 [#1] PREEMPT SMP [ 11.998003][ C9] CPU: 9 UID: 0 PID: 146 Comm: bash Not tainted 6.14.0-dev-00032-g11aa3e204678-dirty torvalds#122 [ 11.998003][ C9] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 11.998003][ C9] RIP: 0010:hvc_poll_put_char (drivers/tty/hvc/hvc_console.c:879) [ 11.998003][ C9] Code: 00 00 ff 00 eb e8 e8 e0 7d 2a 00 f3 0f 1e fa 0f 1f 44 00 00 55 48 89 e5 53 48 83 ec 08 48 8b 87 80 00 00 00 88 55 f4 48 8b 00 <48> 8b 98 48 02 00 00 48 8b 83 90 01 00 00 8b bb 8c 01 00 00 ba 01 All code ======== 0: 00 00 add %al,(%rax) 2: ff 00 incl (%rax) 4: eb e8 jmp 0xffffffffffffffee 6: e8 e0 7d 2a 00 call 0x2a7deb b: f3 0f 1e fa endbr64 f: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 14: 55 push %rbp 15: 48 89 e5 mov %rsp,%rbp 18: 53 push %rbx 19: 48 83 ec 08 sub $0x8,%rsp 1d: 48 8b 87 80 00 00 00 mov 0x80(%rdi),%rax 24: 88 55 f4 mov %dl,-0xc(%rbp) 27: 48 8b 00 mov (%rax),%rax 2a:* 48 8b 98 48 02 00 00 mov 0x248(%rax),%rbx <-- trapping instruction 31: 48 8b 83 90 01 00 00 mov 0x190(%rbx),%rax 38: 8b bb 8c 01 00 00 mov 0x18c(%rbx),%edi 3e: ba .byte 0xba 3f: 01 .byte 0x1 Code starting with the faulting instruction =========================================== 0: 48 8b 98 48 02 00 00 mov 0x248(%rax),%rbx 7: 48 8b 83 90 01 00 00 mov 0x190(%rbx),%rax e: 8b bb 8c 01 00 00 mov 0x18c(%rbx),%edi 14: ba .byte 0xba 15: 01 .byte 0x1 [ 11.998003][ C9] RSP: 0018:ffffc90000507950 EFLAGS: 00010086 [ 11.998003][ C9] RAX: 0000000000000000 RBX: ffffffff8279c241 RCX: ffffffff81c712c0 [ 11.998003][ C9] RDX: 000000000000000a RSI: 0000000000000000 RDI: ffff888100a81180 [ 11.998003][ C9] RBP: ffffc90000507960 R08: 0000000000000034 R09: 0000000000000000 [ 11.998003][ C9] R10: 0000000000000001 R11: 0000000000000004 R12: 0000000000000034 [ 11.998003][ C9] R13: ffffffff8279c240 R14: ffffffff8279c274 R15: 00000000ffffffff [ 11.998003][ C9] FS: 00007fcb62844740(0000) GS:ffff88817bc40000(0000) knlGS:0000000000000000 [ 11.998003][ C9] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 11.998003][ C9] CR2: 0000000000000248 CR3: 0000000101d68003 CR4: 0000000000370ef0 [ 11.998003][ C9] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 11.998003][ C9] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 11.998003][ C9] Call Trace: [ 11.998003][ C9] <TASK> [ 11.998003][ C9] ? show_regs (arch/x86/kernel/dumpstack.c:479) [ 11.998003][ C9] ? __die (arch/x86/kernel/dumpstack.c:421 arch/x86/kernel/dumpstack.c:434) [ 11.998003][ C9] ? page_fault_oops (arch/x86/mm/fault.c:714) [ 11.998003][ C9] ? do_user_addr_fault (arch/x86/mm/fault.c:1235) [ 11.998003][ C9] ? exc_page_fault (./arch/x86/include/asm/irqflags.h:37 ./arch/x86/include/asm/irqflags.h:92 arch/x86/mm/fault.c:1488 arch/x86/mm/fault.c:1538) [ 11.998003][ C9] ? asm_exc_page_fault (./arch/x86/include/asm/idtentry.h:623) [ 11.998003][ C9] ? hvc_poll_put_char (drivers/tty/hvc/hvc_console.c:879) [ 11.998003][ C9] kgdboc_put_char (drivers/tty/serial/kgdboc.c:354) [ 11.998003][ C9] kdb_msg_write.part.0 (kernel/debug/kdb/kdb_io.c:574) [ 11.998003][ C9] vkdb_printf (kernel/debug/kdb/kdb_io.c:568 kernel/debug/kdb/kdb_io.c:766) [ 11.998003][ C9] kdb_printf (kernel/debug/kdb/kdb_io.c:901) [ 11.998003][ C9] kdb_main_loop (kernel/debug/kdb/kdb_main.c:1207 kernel/debug/kdb/kdb_main.c:1426) [ 11.998003][ C9] ? module_event (kernel/debug/debug_core.c:880) [ 11.998003][ C9] kdb_stub (kernel/debug/kdb/kdb_debugger.c:47 kernel/debug/kdb/kdb_debugger.c:141) [ 11.998003][ C9] kgdb_cpu_enter (kernel/debug/debug_core.c:740) [ 11.998003][ C9] kgdb_handle_exception (kernel/debug/debug_core.c:865) [ 11.998003][ C9] __kgdb_notify (arch/x86/kernel/kgdb.c:548) [ 11.998003][ C9] kgdb_notify (./arch/x86/include/asm/irqflags.h:154 arch/x86/kernel/kgdb.c:582) [ 11.998003][ C9] notifier_call_chain (kernel/notifier.c:87) [ 11.998003][ C9] notify_die (kernel/notifier.c:223 kernel/notifier.c:588) [ 11.998003][ C9] exc_int3 (arch/x86/kernel/traps.c:811) [ 11.998003][ C9] asm_exc_int3 (./arch/x86/include/asm/idtentry.h:622) [ 11.998003][ C9] RIP: 0010:kgdb_breakpoint (kernel/debug/debug_core.c:1222) [ 11.998003][ C9] Code: e5 5d c3 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 f3 0f 1e fa 0f 1f 44 00 00 55 48 89 e5 f0 ff 05 b4 88 42 01 0f ae f8 cc <0f> ae f8 f0 ff 0d a6 88 42 01 5d c3 66 66 2e 0f 1f 84 00 00 00 00 All code ======== 0: e5 5d in $0x5d,%eax 2: c3 ret 3: 66 66 2e 0f 1f 84 00 data16 cs nopw 0x0(%rax,%rax,1) a: 00 00 00 00 e: 0f 1f 40 00 nopl 0x0(%rax) 12: f3 0f 1e fa endbr64 16: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 1b: 55 push %rbp 1c: 48 89 e5 mov %rsp,%rbp 1f: f0 ff 05 b4 88 42 01 lock incl 0x14288b4(%rip) # 0x14288da 26: 0f ae f8 sfence 29: cc int3 2a:* 0f ae f8 sfence <-- trapping instruction 2d: f0 ff 0d a6 88 42 01 lock decl 0x14288a6(%rip) # 0x14288da 34: 5d pop %rbp 35: c3 ret 36: 66 data16 37: 66 data16 38: 2e cs 39: 0f .byte 0xf 3a: 1f (bad) 3b: 84 00 test %al,(%rax) 3d: 00 00 add %al,(%rax) ... Code starting with the faulting instruction =========================================== 0: 0f ae f8 sfence 3: f0 ff 0d a6 88 42 01 lock decl 0x14288a6(%rip) # 0x14288b0 a: 5d pop %rbp b: c3 ret c: 66 data16 d: 66 data16 e: 2e cs f: 0f .byte 0xf 10: 1f (bad) 11: 84 00 test %al,(%rax) 13: 00 00 add %al,(%rax) ... [ 11.998003][ C9] RSP: 0018:ffffc90000507da8 EFLAGS: 00000202 [ 11.998003][ C9] RAX: 0000000000000001 RBX: 0000000000000000 RCX: 00000000ffffefff [ 11.998003][ C9] RDX: 0000000000000000 RSI: ffffc90000507c48 RDI: 0000000000000067 [ 11.998003][ C9] RBP: ffffc90000507da8 R08: 0000000000004ffb R09: 00000000ffffefff [ 11.998003][ C9] R10: 0000000000000001 R11: ffffffff8244fd20 R12: ffffffff81c1f240 [ 11.998003][ C9] R13: 0000000000000000 R14: 0000000000000067 R15: 000055ce20745a40 [ 11.998003][ C9] ? kgdb_breakpoint (kernel/debug/debug_core.c:1222) [ 11.998003][ C9] sysrq_handle_dbg (kernel/debug/debug_core.c:987) [ 11.998003][ C9] __handle_sysrq (./include/linux/rcupdate.h:882 drivers/tty/sysrq.c:634) [ 11.998003][ C9] write_sysrq_trigger (drivers/tty/sysrq.c:1182) [ 11.998003][ C9] proc_reg_write (./arch/x86/include/asm/atomic.h:85 ./include/linux/atomic/atomic-arch-fallback.h:787 ./include/linux/atomic/atomic-arch-fallback.h:1238 ./include/linux/atomic/atomic-instrumented.h:611 fs/proc/inode.c:205 fs/proc/inode.c:343) [ 11.998003][ C9] vfs_write (fs/read_write.c:677) [ 11.998003][ C9] ksys_write (fs/read_write.c:731) [ 11.998003][ C9] __x64_sys_write (fs/read_write.c:739) [ 11.998003][ C9] x64_sys_call (arch/x86/entry/syscall_64.c:36) [ 11.998003][ C9] do_syscall_64 (arch/x86/entry/common.c:52 arch/x86/entry/common.c:83) [ 11.998003][ C9] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130) [ 11.998003][ C9] RIP: 0033:0x7fcb6293f300 [ 11.998003][ C9] Code: 40 00 48 8b 15 01 9b 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 80 3d e1 22 0e 00 00 74 17 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 58 c3 0f 1f 80 00 00 00 00 48 83 ec 28 48 89 All code ======== 0: 40 00 48 8b rex add %cl,-0x75(%rax) 4: 15 01 9b 0d 00 adc $0xd9b01,%eax 9: f7 d8 neg %eax b: 64 89 02 mov %eax,%fs:(%rdx) e: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax 15: eb b7 jmp 0xffffffffffffffce 17: 0f 1f 00 nopl (%rax) 1a: 80 3d e1 22 0e 00 00 cmpb $0x0,0xe22e1(%rip) # 0xe2302 21: 74 17 je 0x3a 23: b8 01 00 00 00 mov $0x1,%eax 28: 0f 05 syscall 2a:* 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax <-- trapping instruction 30: 77 58 ja 0x8a 32: c3 ret 33: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 3a: 48 83 ec 28 sub $0x28,%rsp 3e: 48 rex.W 3f: 89 .byte 0x89 Code starting with the faulting instruction =========================================== 0: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 6: 77 58 ja 0x60 8: c3 ret 9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 10: 48 83 ec 28 sub $0x28,%rsp 14: 48 rex.W 15: 89 .byte 0x89 [ 11.998003][ C9] RSP: 002b:00007fffbfbfcf78 EFLAGS: 00000202 ORIG_RAX: 0000000000000001 [ 11.998003][ C9] RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007fcb6293f300 [ 11.998003][ C9] RDX: 0000000000000002 RSI: 000055ce20745a40 RDI: 0000000000000001 [ 11.998003][ C9] RBP: 000055ce20745a40 R08: 0000000000000007 R09: 0000000000000073 [ 11.998003][ C9] R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000002 [ 11.998003][ C9] R13: 00007fcb62a1a760 R14: 0000000000000002 R15: 00007fcb62a159e0 [ 11.998003][ C9] </TASK> [ 11.998003][ C9] Modules linked in: [ 11.998003][ C9] KGDB: re-enter exception: ALL breakpoints killed [ 11.998003][ C9] CR2: 0000000000000248 [ 11.998003][ C9] ---[ end trace 0000000000000000 ]---
1 parent 11aa3e2 commit 3197b81

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

.dev/startvm.sh

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ nopreempt=0
88
network=1
99
fs_type=9pfs
1010
no_user_aslr=0
11-
no_virtio_serial=0
11+
virtio_serial=0
1212
tmux=0
1313

1414
exec_args=""
@@ -28,8 +28,8 @@ function show_help () {
2828
echo " vhd (Uses .dev/vda.vhd)"
2929
echo " (rm .dev/vda.vhd to repopulate the disk image)"
3030
echo " --no-user-aslr Disable user-space ASLR (default: no)"
31-
echo " --no-virtio-serial"
32-
echo " Disable virtio-serial and use PCI serial instead (default: no)"
31+
echo " --virtio-serial"
32+
echo " Use virtio-serial instead of PCI serial (default: no)"
3333
echo " --no-preempt Disable preemption (default: no)"
3434
echo ""
3535
exit 1
@@ -69,8 +69,8 @@ while [ "${1:-}" != '' ]; do
6969
--no-user-aslr )
7070
no_user_aslr=1
7171
;;
72-
--no-virtio-serial )
73-
no_virtio_serial=1
72+
--virtio-serial )
73+
virtio_serial=1
7474
;;
7575
--no-preempt )
7676
nopreempt=1
@@ -165,10 +165,10 @@ elif [[ $fs_type == "vhd" ]]; then
165165
root_cmd="root=/dev/vda rw"
166166
fi
167167

168-
if [[ $no_virtio_serial == 0 ]]; then
169-
console_cmd="console=hvc0 kgdboc=hvc1"
170-
else
168+
if [[ $virtio_serial == 0 ]]; then
171169
console_cmd="console=ttyS0,115200 kgdboc=ttyS1,115200"
170+
else
171+
console_cmd="console=hvc0 kgdboc=hvc1"
172172
fi
173173

174174
if [[ $tmux == 1 ]]; then
@@ -225,16 +225,16 @@ if [[ $network == 1 ]]; then
225225
)
226226
fi
227227

228-
if [[ $no_virtio_serial == 0 ]]; then
228+
if [[ $virtio_serial == 0 ]]; then
229229
qemuFlags+=(
230-
-device "virtio-serial-pci,id=virtio-serial0"
231-
-device "virtconsole,chardev=stdio"
232-
-device "virtconsole,chardev=kgdb"
230+
-device "pci-serial,chardev=stdio"
231+
-device "pci-serial,chardev=kgdb"
233232
)
234233
else
235234
qemuFlags+=(
236-
-device "pci-serial,chardev=stdio"
237-
-device "pci-serial,chardev=kgdb"
235+
-device "virtio-serial-pci,id=virtio-serial0"
236+
-device "virtconsole,chardev=stdio"
237+
-device "virtconsole,chardev=kgdb"
238238
)
239239
fi
240240

0 commit comments

Comments
 (0)