Activity log for bug #1608802

Date Who What changed Old value New value Message
2016-08-02 06:11:28 Stefan Weil bug added bug
2016-08-02 06:12:44 Stefan Weil description The QEMU PC emulation of DMA does not behave like real hardware or other virtualization software. From the original bug report (Benjamin David Lunt): Back to the READ_DMA command, it is my conclusion that the READ_DMA command, more precisely, the BUS Master part of QEMU is in error. The tests that people have done to see if it works, is probably the guest finding out that DMA doesn't work and defaulting to PIO, but since the read was successful visually to the user, the user assumed the READ_DMA command works, where the guest actually defaulted back to PIO transfers without notice. My code works on real hardware (numerous machines), Bochs, and Oracle's Virtual Box. ... I have a small test suite, zipped and included at: www.fysnet.net/temp/c8bug.zip Within this zip file is a.img. This is a freeDOS bootable floppy. Emulate it with QEMU and then at the DOS prompt, run c8bug.exe. It will say that the drive is not ready. "Drive never became ready" (along with a few other lines of text) The source for this test suite is also included. c8bug.c is the c source code c8bug.h is the header file ctype.h is a quick way to get 'bit8u' type defines timer.h is a delay routine from another project I have (The base IO addresses are assumed and set at the top of c8bug.c) (compiled with DJGPP for DPMI) q.bat is my command line for QEMU On all other machines and VirtualBox, the controller is ready for me to receive the sector data. "Drive is ready to transmit data..." However, in QEMU, the controller never becomes ready. "Drive never became ready" The bug was reported for QEMU for Windows, but I can confirm that QEMU for Linux also shows that behaviour, while VirtualBox works. The QEMU PC emulation of DMA does not behave like real hardware or other virtualization software. From the original bug report (Benjamin David Lunt):     Back to the READ_DMA command, it is my conclusion that the     READ_DMA command, more precisely, the BUS Master part of QEMU is     in error. The tests that people have done to see if it works, is     probably the guest finding out that DMA doesn't work and defaulting     to PIO, but since the read was successful visually to the user, the     user assumed the READ_DMA command works, where the guest actually     defaulted back to PIO transfers without notice.     My code works on real hardware (numerous machines), Bochs, and Oracle's     Virtual Box.     ...     I have a small test suite, zipped and included at:     www.fysnet.net/temp/c8bug.zip     Within this zip file is a.img. This is a freeDOS bootable     floppy. Emulate it with QEMU and then at the DOS prompt, run     c8bug.exe.     It will say that the drive is not ready.      "Drive never became ready"     (along with a few other lines of text)     The source for this test suite is also included.      c8bug.c is the c source code      c8bug.h is the header file      ctype.h is a quick way to get 'bit8u' type defines      timer.h is a delay routine from another project I have     (The base IO addresses are assumed and set at the top of c8bug.c)     (compiled with DJGPP for DPMI)     q.bat is my command line for QEMU     On all other machines and VirtualBox, the controller is ready     for me to receive the sector data.      "Drive is ready to transmit data..."     However, in QEMU, the controller never becomes ready.      "Drive never became ready" The bug was reported for QEMU for Windows, but I can confirm that QEMU for Linux also shows that behaviour, while VirtualBox works.
2016-08-02 06:13:08 Stefan Weil qemu: status New Confirmed
2020-11-18 10:26:40 Thomas Huth qemu: status Confirmed Incomplete
2021-01-18 04:17:17 Launchpad Janitor qemu: status Incomplete Expired