Hi , all Do we Slove it? Dear Darryl Dixon, I see you find a bug like it in 2004 .This ii the link https://lists.nongnu.org/archive/html/qemu-devel/2004-08/msg00272.html Do you know make qemu support hardware flow control?
在 2022-03-17 14:13:45,"付小明" <fxm16...@163.com> 写道: Could you provide more detail, please? For a bug report it is useful to know: * what you were trying to do * what happened * what you expected to happen * full details like the QEMU command line * what guest software you were running Ideally, the report should have everything we need to be able to reproduce the problem ourselves. --》 the machine's guest is linux, the machine's host is centos.qemu not support serial hardware flow control in the guest , use the serial hardware flow control by the minicom. I find the guest serial stty -F /dev/ttyS0 -a is crtscts. But host the serial stty -F /dev/ttyS0 -a is -crtscts. Xiaoming Fu At 2022-03-16 21:27:40, "付小明" <fxm16...@163.com> wrote: YES, I trace. But I do not find regular. In the guest ,I use the minicom to test. minicomcrts.txt is the qemu log of use hardware flow control minicomnocrts.txt is the qemu log of not use hardware flow control I add qemu log in serial.c, you can see it. >Ah, so is the guest changing the speed/parity etc but that's having the >side effect of clearing the flags, because CHR_IOCTL_SERIAL_SET_PARAMS >calls tty_serial_init? ----> speed/parity etc is see LCR harware flow control is see MCR You can test is 1、the guest is linux;the host is linux. You can use the minicom -s to set hardware flow control or not set hardware flow control 2、qemu arg : -chardev tty,id=charserial0,path=/dev/ttyS0 -device pci-serial,chardev=charserial0,id=serial0,bus=pci.0,addr=0x17 -add-fd set=5,fd=28 3、libvirt xml: <serial type="dev"> <source path="/dev/ttyS0"/> <target type="pci-serial"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x17" function="0x0"/> </serial> I am looking forward to your reply Xiaoming Fu 在 2022-03-16 19:28:01,"Dr. David Alan Gilbert" <dgilb...@redhat.com> 写道: >* 付小明 (fxm16...@163.com) wrote: >> the function relation is >> serial_ioport_write(serial.c) -> serial_update_parameters(serial.c) -> >> qemu_chr_fe_ioctl(serial.c) -> tty_serial_ioctl(char-serial.c) -> >> tty_serial_init(char-serial.c) >> >> >> in tty_serial_init: tty.c_cflag &= ~(CSIZE | PARENB | PARODD | CRTSCTS | >> CSTOPB); is set no hardware flow control(-crtscts) >> tty.c_cflag |= CRTSCTS is set hardware fow control(crtscts) > >Ah, so is the guest changing the speed/parity etc but that's having the >side effect of clearing the flags, because CHR_IOCTL_SERIAL_SET_PARAMS >calls tty_serial_init? > >I think you'd need to show a trace of all the serial ioport writes to >explain what's happening. > >Dave > >> >> >> >> 2、the app in the guest set the speed, parity,data_bits,stop_bits, qemu can >> get them by the function serial_update_parameters. But qemu can not get >> the hardware flow control of the guest set。 >> 3、I find some knowledge. Hardware flow control is RTS/CTS . We can see MCR. >> >> >> >> So I try code like this : >> >> if ((s->mcr & 0x02) && (s->mcr & 0x01) && ((~(s->msr)) & 0x10)) { >> >> up_crtscts = 1; >> >> } else { >> >> up_crtscts = 0; >> >> } >> >> But RTS is no right. Because the RTS is enable when set hardware flow >> control and not set hardware flow control .This is may a qemu bug >> I think the RTS is enable when set hardware flow control ; the RTS is not >> enable when not set hardware flow control. >> >> >> I need your help! I am looking forward your reply! >> >> >> 在 2022-03-16 18:32:59,"Dr. David Alan Gilbert" <dgilb...@redhat.com> 写道: >> >* 付小明 (fxm16...@163.com) wrote: >> >> hi all >> >> information >> >> -chardev tty,id=charserial0,path=/dev/ttyS0 -device >> >> pci-serial,chardev=charserial0,id=serial0,bus=pci.0,addr=0x17 -add-fd >> >> set=5,fd=28 -chardev tty,id=charserial1,path=/dev/ttyS1 -device >> >> pci-serial,chardev=charserial1,id=serial1,bus=pci.0,addr=0x18 -add-fd >> >> set=6,fd=29 -chardev tty,id=charserial2,path=/dev/ttyS2 -device >> >> pci-serial,chardev=charserial2,id=serial2,bus=pci.0,addr=0x19 -add-fd >> >> set=7,fd=30 -chardev tty,id=charserial3,path=/dev/ttyS3 -device >> >> pci-serial,chardev=charserial3,id=serial3,bus=pci.0,addr=0x1a >> > >> >Hi, >> > It's a while since I tried it; I think I would try adding debug to >> >see if char-serial.c tty_serial_ioctl is called. >> > >> >Dave >> > >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> At 2022-03-16 14:38:47, "付小明" <fxm16...@163.com> wrote: >> >> >> >> >> >> >> >> >> >> HI ,ALL >> >> Nice to meet you! I need your help. I find a bug in qemu. qemu not >> >> support serial hardware flow control >> >> 1、Problem: the machine's guest is windows, the machine's host is centos. >> >> The qemu emulation pci-serial. >> >> A printer (model is BTP-2001cp)use the serial to print. The machine >> >> connect the printer by serial port. >> >> The data printed by the printer is missing some data.You can see picture >> >> 1 is lost some data, picture 2 is normal.Because the printer need >> >> hardware flow control. >> >> This is a bug: >> >> the machine's guest is windows, the machine's host is centos. The qemu >> >> emulation pci-serial. >> >> A printer (model is BTP-2001cp)use the serial to print. The machine >> >> connect the printer by serial port. >> >> The data printed by the printer is missing some data >> >> because qemu not support serial hardware flow control。 >> >> 2、Problem: the machine's guest is linux, the machine's host is >> >> centos.qemu not support serial hardware flow control >> >> in the guest , use the serial hardware flow control by minicom. I find >> >> the guest serial stty -F /dev/ttyS0 -a is crtscts. But host the serial >> >> stty -F /dev/ttyS0 -a is -crtscts. >> >> >> >> >> >> I need your help! I am looking forward your reply >> >> >> >> >> >> >> >> >> >> Xiaoming Fu >> >> >> >> >> >> -------- Forwarding messages -------- >> >> From: "付小明" <fxm16...@163.com> >> >> Date: 2022-03-15 10:11:11 >> >> To: "Peter Maydell" <peter.mayd...@linaro.org> >> >> Cc: "QEMU Developers" <qemu-devel@nongnu.org> >> >> Subject: Re:Re: set qemu support serial crtscts >> >> >> >> Hi, Peter and all developers >> >> Yes, I need to describe it clearly. >> >> 1、I want make the qemu serial support crtscts >> >> 2、Problem: the machine's guest is windows, the machine's host is centos. >> >> The qemu emulation pci-serial. >> >> A printer (model is BTP-2001cp)use the serial to print. The machine >> >> connect the printer by serial port. >> >> The data printed by the printer is missing some data.You can see picture >> >> 1 is lost some data, picture 2 is normal. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> At 2021-04-14 21:24:20, "Peter Maydell" <peter.mayd...@linaro.org> wrote: >> >> >On Wed, 14 Apr 2021 at 14:18, 付小明 <fxm16...@163.com> wrote: >> >> >> >> >> >> HI, I have find qemu serial not support crtscts. This result some >> >> >> machine not communication, because this machine need crtscts >> >> > >> >> >Could you provide more detail, please? For a bug report it >> >> >is useful to know: >> >> > * what you were trying to do >> >> > * what happened >> >> > * what you expected to happen >> >> > * full details like the QEMU command line >> >> > * what guest software you were running >> >> > >> >> >Ideally, the report should have everything we need to be >> >> >able to reproduce the problem ourselves. >> >> > >> >> >thanks >> >> >-- PMM >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> > >> > >> > >> >-- >> >Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK > > > > > >-- >Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK