[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDEN
From: |
Marc Bevand |
Subject: |
[Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds |
Date: |
Wed, 10 Sep 2008 20:19:30 -0400 |
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:
- [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds,
Marc Bevand <=
- Re: [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds, Anthony Liguori, 2008/09/10
- Re: [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds, Marc Bevand, 2008/09/10
- Re: [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds, Glauber Costa, 2008/09/10
- Re: [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds, Marc Bevand, 2008/09/10
- Re: [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds, Jamie Lokier, 2008/09/11
- Re: [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds, Glauber Costa, 2008/09/11
- Re: [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds, Jamie Lokier, 2008/09/11
- Re: [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds, Paul Brook, 2008/09/11
- Re: [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds, Avi Kivity, 2008/09/11
- Re: [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds, Ian Kirk, 2008/09/11