From: Pekka Enberg Date: Mon, 28 Nov 2011 19:02:19 +0000 (+0200) Subject: kvm tools, rtc: Nonvolatile BIOS memory support X-Git-Tag: next-20111129~3^2~2 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=be778308e879d3529e92fb4fecebde48fcafc6a5;p=karo-tx-linux.git kvm tools, rtc: Nonvolatile BIOS memory support This adds a ->cmos_data array to 'struct rtc_device' that is used to emulate nonvolatile BIOS memory and the RTC registers. Signed-off-by: Pekka Enberg --- diff --git a/tools/kvm/hw/rtc.c b/tools/kvm/hw/rtc.c index 0dc6223832e0..6d4a05af7029 100644 --- a/tools/kvm/hw/rtc.c +++ b/tools/kvm/hw/rtc.c @@ -26,6 +26,7 @@ struct rtc_device { u8 cmos_idx; + u8 cmos_data[128]; }; static struct rtc_device rtc; @@ -66,6 +67,9 @@ static bool cmos_ram_data_in(struct ioport *ioport, struct kvm *kvm, u16 port, v case RTC_YEAR: ioport__write8(data, bin2bcd(tm->tm_year)); break; + default: + ioport__write8(data, rtc.cmos_data[rtc.cmos_idx]); + break; } return true; @@ -73,6 +77,16 @@ static bool cmos_ram_data_in(struct ioport *ioport, struct kvm *kvm, u16 port, v static bool cmos_ram_data_out(struct ioport *ioport, struct kvm *kvm, u16 port, void *data, int size) { + switch (rtc.cmos_idx) { + case RTC_REG_C: + case RTC_REG_D: + /* Read-only */ + break; + default: + rtc.cmos_data[rtc.cmos_idx] = ioport__read8(data); + break; + } + return true; }