qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds
@ 2008-09-11  0:19 Marc Bevand
  2008-09-11  0:30 ` Anthony Liguori
  0 siblings, 1 reply; 12+ messages in thread
From: Marc Bevand @ 2008-09-11  0:19 UTC (permalink / raw)
  To: qemu-devel

At boottime, the licensing mechanism in Windows examines the reply to
ATA/ATAPI IDENTIFY commands to determine if the hardware has been
upgraded and whether Windows needs to be "reactivated" or not.

I can confirm this because my Windows XP VM asked for reactivation
after a QEMU upgrade and I was able to remove the need for
reactivation by applying a patch similar to the one below (the
versions were all hardcoded to "0.9.0" -- the version of QEMU I was
running before).

To prevent this kind of problem from happening again, I suggest QEMU
stops returning its constantly changing version (QEMU_VERSION) in
replies to IDENTIFY commands. Instead a constant version string
such as "1.0" should be returned.

Comments ?

-marc


Index: hw/ide.c
===================================================================
--- hw/ide.c	(revision 5193)
+++ hw/ide.c	(working copy)
@@ -549,7 +549,7 @@
     put_le16(p + 20, 3); /* XXX: retired, remove ? */
     put_le16(p + 21, 512); /* cache size in sectors */
     put_le16(p + 22, 4); /* ecc bytes */
-    padstr((char *)(p + 23), QEMU_VERSION, 8); /* firmware version */
+    padstr((char *)(p + 23), "1.0", 8); /* firmware version */
     padstr((char *)(p + 27), "QEMU HARDDISK", 40); /* model */
 #if MAX_MULT_SECTORS > 1
     put_le16(p + 47, 0x8000 | MAX_MULT_SECTORS);
@@ -615,7 +615,7 @@
     put_le16(p + 20, 3); /* buffer type */
     put_le16(p + 21, 512); /* cache size in sectors */
     put_le16(p + 22, 4); /* ecc bytes */
-    padstr((char *)(p + 23), QEMU_VERSION, 8); /* firmware version */
+    padstr((char *)(p + 23), "1.0", 8); /* firmware version */
     padstr((char *)(p + 27), "QEMU DVD-ROM", 40); /* model */
     put_le16(p + 48, 1); /* dword I/O (XXX: should not be set on CDROM) */
 #ifdef USE_DMA_CDROM
@@ -669,7 +669,7 @@
     snprintf(buf, sizeof(buf), "QM%05d", s->drive_serial);
     padstr((char *)(p + 10), buf, 20);	/* Serial number in ASCII */
     put_le16(p + 22, 0x0004);			/* ECC bytes */
-    padstr((char *) (p + 23), QEMU_VERSION, 8);	/* Firmware Revision */
+    padstr((char *) (p + 23), "1.0", 8);	/* Firmware Revision */
     padstr((char *) (p + 27), "QEMU MICRODRIVE", 40);/* Model number */
 #if MAX_MULT_SECTORS > 1
     put_le16(p + 47, 0x8000 | MAX_MULT_SECTORS);
@@ -1821,7 +1821,7 @@
         buf[7] = 0; /* reserved */
         padstr8(buf + 8, 8, "QEMU");
         padstr8(buf + 16, 16, "QEMU DVD-ROM");
-        padstr8(buf + 32, 4, QEMU_VERSION);
+        padstr8(buf + 32, 4, "1.0");
         ide_atapi_cmd_reply(s, 36, max_len);
         break;
     case GPCMD_GET_CONFIGURATION:

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2008-09-11 15:55 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-11  0:19 [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds Marc Bevand
2008-09-11  0:30 ` Anthony Liguori
2008-09-11  1:19   ` Marc Bevand
2008-09-11  1:40     ` Glauber Costa
2008-09-11  3:34       ` Marc Bevand
2008-09-11  8:18         ` Jamie Lokier
2008-09-11 11:44           ` Glauber Costa
2008-09-11 11:56             ` Jamie Lokier
2008-09-11 13:58               ` Paul Brook
2008-09-11 14:11                 ` Avi Kivity
2008-09-11 15:16                 ` Ian Kirk
2008-09-11 15:55                   ` Paul Brook

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).