From: "Leonardo E. Reiter" <lreiter@win4lin.com>
To: QEMU Developer Mailing List <qemu-devel@nongnu.org>
Subject: [Qemu-devel] [PATCH] -win2k-hack performance+DMA support
Date: Thu, 02 Feb 2006 13:38:27 -0500 [thread overview]
Message-ID: <43E251A3.2070706@win4lin.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 718 bytes --]
Attached is a patch which greatly speeds up disk writes when using
-win2k-hack to install Windows 2000. It only delays every 16th
interrupt, which after rigorous testing is still enough to overcome the
"Windows 2000 disk full" bug. If you are really adventurous you can try
it every 32nd time, but for me that caused problems during some
installations, so I thought it was too aggressive.
This patch also adds -win2k-hack functionality to DMA writes, since DMA
now works in the latest CVS QEMU.
Enjoy,
Leo Reiter
--
Leonardo E. Reiter
Vice President of Product Development, CTO
Win4Lin, Inc.
Virtual Computing from Desktop to Data Center
Main: +1 512 339 7979
Fax: +1 512 532 6501
http://www.win4lin.com
[-- Attachment #2: qemu-win2k-hack-perf.patch --]
[-- Type: text/x-patch, Size: 1951 bytes --]
Index: hw/ide.c
===================================================================
RCS file: /cvsroot/qemu/qemu/hw/ide.c,v
retrieving revision 1.39
diff -a -u -r1.39 ide.c
--- hw/ide.c 1 Feb 2006 22:20:12 -0000 1.39
+++ hw/ide.c 2 Feb 2006 01:48:25 -0000
@@ -336,6 +336,7 @@
uint8_t *data_end;
uint8_t io_buffer[MAX_MULT_SECTORS*512 + 4];
QEMUTimer *sector_write_timer; /* only used for win2k instal hack */
+ uint32_t irq_count; /* counts IRQs when using win2k install hack */
} IDEState;
#define BM_STATUS_DMAING 0x01
@@ -712,7 +713,7 @@
ide_set_sector(s, sector_num + n);
#ifdef TARGET_I386
- if (win2k_install_hack) {
+ if (win2k_install_hack && ((++s->irq_count % 16) == 0)) {
/* It seems there is a bug in the Windows 2000 installer HDD
IDE driver which fills the disk with empty logs when the
IDE write IRQ comes too early. This hack tries to correct
@@ -750,7 +751,19 @@
if (n == 0) {
/* end of transfer */
s->status = READY_STAT | SEEK_STAT;
- ide_set_irq(s);
+#ifdef TARGET_I386
+ if (win2k_install_hack && ((++s->irq_count % 16) == 0)) {
+ /* It seems there is a bug in the Windows 2000 installer
+ HDD IDE driver which fills the disk with empty logs
+ when the IDE write IRQ comes too early. This hack tries
+ to correct that at the expense of slower write
+ performances. Use this option _only_ to install Windows
+ 2000. You must disable it for normal use. */
+ qemu_mod_timer(s->sector_write_timer,
+ qemu_get_clock(vm_clock) + (ticks_per_sec / 1000));
+ } else
+#endif
+ ide_set_irq(s);
return 0;
}
if (n > MAX_MULT_SECTORS)
next reply other threads:[~2006-02-02 18:41 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-02 18:38 Leonardo E. Reiter [this message]
2006-02-09 14:03 ` [Qemu-devel] [PATCH] -win2k-hack performance+DMA support Brad Campbell
2006-02-09 19:35 ` Leonardo E. Reiter
2006-04-20 0:32 ` Troy Benjegerdes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=43E251A3.2070706@win4lin.com \
--to=lreiter@win4lin.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).