From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Kda5c-0001sC-4p for qemu-devel@nongnu.org; Wed, 10 Sep 2008 20:31:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Kda5a-0001rv-Jj for qemu-devel@nongnu.org; Wed, 10 Sep 2008 20:31:15 -0400 Received: from [199.232.76.173] (port=50335 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Kda5a-0001rs-EG for qemu-devel@nongnu.org; Wed, 10 Sep 2008 20:31:14 -0400 Received: from an-out-0708.google.com ([209.85.132.250]:57202) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Kda5a-0004O7-7U for qemu-devel@nongnu.org; Wed, 10 Sep 2008 20:31:14 -0400 Received: by an-out-0708.google.com with SMTP id d18so12080and.130 for ; Wed, 10 Sep 2008 17:31:13 -0700 (PDT) Message-ID: <48C8669D.2000103@codemonkey.ws> Date: Wed, 10 Sep 2008 19:30:21 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] Don't use QEMU_VERSION in ATA/ATAPI replies to IDENTIFY cmds References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Marc Bevand wrote: > 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. > Wouldn't it be better to just use whatever QEMU_VERSION is right now with a big fat comment? At least then, any VM made with QEMU 0.9.1 won't require reactivation. No point in breaking everyone by changing it to 1.0. Regards, Anthony Liguori > 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: > > >