diff options
Diffstat (limited to 'gitlab/issues/target_missing/host_missing/accel_missing/2307.toml')
| -rw-r--r-- | gitlab/issues/target_missing/host_missing/accel_missing/2307.toml | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gitlab/issues/target_missing/host_missing/accel_missing/2307.toml b/gitlab/issues/target_missing/host_missing/accel_missing/2307.toml new file mode 100644 index 00000000..8b81b227 --- /dev/null +++ b/gitlab/issues/target_missing/host_missing/accel_missing/2307.toml @@ -0,0 +1,49 @@ +id = 2307 +title = "QEMU Windows COM port filenames not recognized i.e. \\\\.\\COM19 or \\\\.\\CNCA0" +state = "opened" +created_at = "2024-04-24T12:54:33.755Z" +closed_at = "n/a" +labels = ["Chardev", "hostos: Windows"] +url = "https://gitlab.com/qemu-project/qemu/-/issues/2307" +host-os = "Windows 10" +host-arch = "x64" +qemu-version = "QEMU emulator version 8.1.0 (v8.1.0-12034-g129566d84e)" +guest-os = "n/a" +guest-arch = "n/a" +description = "n/a" +reproduce = """1. Run qemu-system-arm with the comand line above. +2. QEMU fails with `qemu-system-arm.exe: -gdb \\\\.\\CNCA8: '\\\\.\\CNCA8' is not a valid char driver` +3. ```qemu-system-arm.exe -machine mps2-an500 -gdb \\\\.\\COM19 +qemu-system-arm.exe: -gdb \\\\.\\COM19: '\\\\.\\COM19' is not a valid char driver +```""" +additional = """Windows allows COM ports numbered 10 and higher to be prefixed with a `\\\\.\\` escape as in `\\\\.\\COM17`. Such COM port assignments are not uncommon when a plurality of USB serial adapters. +Equally problematic are virtual COM port designations such as `\\\\.\\CNCA8` created by the Windows 10x64 driver package known as `com0com`: https://pete.akeo.ie/2011/07/com0com-signed-drivers.html + +Upon checking the source pulled from the Github mirror an initial fix was to simply modify /chardev/char.c, but this appears insufficient. Sadly. + +Please ask if more information is required. I am actively working on extending an existing QEMU machine emulation. A patch to fix this problem is below. Please comment if applicable. + +Jerry. + +``` +diff --git a/chardev/char.c b/chardev/char.c +index 3c43fb1278..7a3f342c72 100644 +--- a/chardev/char.c ++++ b/chardev/char.c +@@ -418,6 +418,13 @@ QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename, + qemu_opt_set(opts, "path", filename, &error_abort); + return opts; + } ++ // JME ++ if (strstart(filename, "\\\\\\\\.\\\\", NULL)) { ++ qemu_opt_set(opts, "backend", "serial", &error_abort); ++ qemu_opt_set(opts, "path", filename, &error_abort); ++ return opts; ++ } ++ + if (strstart(filename, "file:", &p)) { + qemu_opt_set(opts, "backend", "file", &error_abort); + qemu_opt_set(opts, "path", p, &error_abort); + +``` +/label ~"kind::Bug"""" |