[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen
From: |
stefano.stabellini |
Subject: |
[Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen |
Date: |
Tue, 15 Nov 2011 14:51:08 +0000 |
From: Stefano Stabellini <address@hidden>
Xen doesn't need full RTC emulation in Qemu because the RTC is already
emulated by the hypervisor. In particular we want to avoid the timers
initialization so that Qemu doesn't need to wake up needlessly.
Signed-off-by: Stefano Stabellini <address@hidden>
---
hw/mc146818rtc.c | 36 +++++++++++++++++++++++++++++++++++-
1 files changed, 35 insertions(+), 1 deletions(-)
diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
index 2aaca2f..91242d0 100644
--- a/hw/mc146818rtc.c
+++ b/hw/mc146818rtc.c
@@ -28,6 +28,7 @@
#include "apic.h"
#include "isa.h"
#include "mc146818rtc.h"
+#include "arch_init.h"
//#define DEBUG_CMOS
//#define DEBUG_COALESCED
@@ -614,6 +615,17 @@ static const MemoryRegionOps cmos_ops = {
.old_portio = cmos_portio
};
+static int rtcxen_initfn(ISADevice *dev)
+{
+ int base = 0x70;
+ RTCState *s = DO_UPCAST(RTCState, dev, dev);
+
+ memory_region_init_io(&s->io, &cmos_ops, s, "rtc", 2);
+ isa_register_ioport(dev, &s->io, base);
+
+ return 0;
+}
+
static int rtc_initfn(ISADevice *dev)
{
RTCState *s = DO_UPCAST(RTCState, dev, dev);
@@ -655,7 +667,11 @@ ISADevice *rtc_init(int base_year, qemu_irq intercept_irq)
ISADevice *dev;
RTCState *s;
- dev = isa_create("mc146818rtc");
+ if (xen_available()) {
+ dev = isa_create("mc146818rtcxen");
+ } else {
+ dev = isa_create("mc146818rtc");
+ }
s = DO_UPCAST(RTCState, dev, dev);
qdev_prop_set_int32(&dev->qdev, "base_year", base_year);
qdev_init_nofail(&dev->qdev);
@@ -684,3 +700,21 @@ static void mc146818rtc_register(void)
isa_qdev_register(&mc146818rtc_info);
}
device_init(mc146818rtc_register)
+
+static ISADeviceInfo mc146818rtcxen_info = {
+ .qdev.name = "mc146818rtcxen",
+ .qdev.size = sizeof(RTCState),
+ .qdev.no_user = 1,
+ .qdev.vmsd = &vmstate_rtc,
+ .init = rtcxen_initfn,
+ .qdev.props = (Property[]) {
+ DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980),
+ DEFINE_PROP_END_OF_LIST(),
+ }
+};
+
+static void mc146818rtcxen_register(void)
+{
+ isa_qdev_register(&mc146818rtcxen_info);
+}
+device_init(mc146818rtcxen_register)
--
1.7.2.3
- [Qemu-devel] [PATCH 0/4] prevent Qemu from waking up needlessly, Stefano Stabellini, 2011/11/15
- [Qemu-devel] [PATCH 2/4] xen: do not initialize the interval timer emulator, stefano.stabellini, 2011/11/15
- [Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen,
stefano.stabellini <=
- Re: [Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen, Anthony Liguori, 2011/11/15
- Re: [Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen, Stefano Stabellini, 2011/11/15
- Re: [Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen, Stefano Stabellini, 2011/11/18
- Re: [Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen, Anthony Liguori, 2011/11/18
- Re: [Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen, Anthony Liguori, 2011/11/18
- Re: [Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen, Avi Kivity, 2011/11/20
- Re: [Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen, Anthony Liguori, 2011/11/21
- Re: [Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen, Stefano Stabellini, 2011/11/21
- Re: [Qemu-devel] [PATCH 1/4] xen: introduce mc146818rtcxen, Paolo Bonzini, 2011/11/21
[Qemu-devel] [PATCH 4/4] qemu_calculate_timeout: increase minimum timeout to 1h, stefano.stabellini, 2011/11/15