From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=34759 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OyVEj-00012H-DB for qemu-devel@nongnu.org; Wed, 22 Sep 2010 15:44:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OyVEh-0004a1-NP for qemu-devel@nongnu.org; Wed, 22 Sep 2010 15:44:13 -0400 Received: from a.mx.secunet.com ([195.81.216.161]:44189) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OyVEh-0004XY-F6 for qemu-devel@nongnu.org; Wed, 22 Sep 2010 15:44:11 -0400 Message-ID: <4C9A5C61.7030508@secunet.com> Date: Wed, 22 Sep 2010 21:43:29 +0200 From: Mathias Krause MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] CMOS file support References: <1284645517-32743-1-git-send-email-mathias.krause@secunet.com> <4C9251C6.2090705@codemonkey.ws> <4C930F9B.5010007@secunet.com> <4C936CDC.1030207@codemonkey.ws> In-Reply-To: <4C936CDC.1030207@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org, Markus Armbruster On 17.09.2010 15:27, Anthony Liguori wrote: > On 09/17/2010 01:50 AM, Mathias Krause wrote: >> Am 16.09.2010 19:20 schrieb Anthony Liguori: >> >>> Instead of using FILE, I'd suggest using a BlockDriver to read and write >>> the data. >>> >> I'll fix that as soon as I figured how to use this interface. >> >> >>> I think it would be very nice to add write support too so that writes to >>> CMOS were persisted across boots. >>> >> Indeed. Also I would like to have a command line interface like '-cmos >> cmos.bin' instead of the ugly '-global mc146818rtc.file=cmos.bin'. But >> I'm not aware how to create such an alias. Any pointers? >> > > Unfortunately, it's a little complicated although it should get better > in the future. The right way to do this today would be: > > -drive file=cmos.bin,if=none,id=nvram -global mc146818rtc.drive=nvram > > The use of -drive is historic. We'll have a better option in the future > that will look something like: > > -blockdev file=cmos.bin,id=nvram -global mc146818rtc.drive=nvram Well, I guess "better" lies in the eye of the beholder, then ;) > But in either case, I'd suggest adding an -nvram option that was: > > -nvram > > Which would do: > > drive_add(optarg, "if=none,id=nvram"); > > And then in the RTC code, default drive to nvram. I managed to add the nvram option but how do I get a reference to the drive back in the RTC code? Would I just loop with drive_get(IF_NONE, 0, i) until the id of the returned drive is "nvram"? Doesn't sound right but I've found no better solution due to the lack of an drive_get_by_id() function. > It gets a little tough to handle the case of in memory CMOS. I don't quite get your point here. The content of the drive is copied in the RTC init routine into a private char array. How could the type of the drive may be a problem here? Regards, Mathias