From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:37724) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UIgVP-0004ik-Tt for qemu-devel@nongnu.org; Thu, 21 Mar 2013 10:30:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UIgVB-0004Mb-RW for qemu-devel@nongnu.org; Thu, 21 Mar 2013 10:30:06 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51894) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UIgVB-0004Ii-Kz for qemu-devel@nongnu.org; Thu, 21 Mar 2013 10:29:57 -0400 From: Igor Mammedov Date: Thu, 21 Mar 2013 15:28:42 +0100 Message-Id: <1363876125-8264-10-git-send-email-imammedo@redhat.com> In-Reply-To: <1363876125-8264-1-git-send-email-imammedo@redhat.com> References: <1363876125-8264-1-git-send-email-imammedo@redhat.com> Subject: [Qemu-devel] [PATCH 09/12] rtc: update rtc_cmos on CPU hot-plug List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, peter.maydell@linaro.org, aliguori@us.ibm.com, ehabkost@redhat.com, mst@redhat.com, jan.kiszka@siemens.com, stefano.stabellini@eu.citrix.com, claudio.fontana@huawei.com, armbru@redhat.com, quintela@redhat.com, lcapitulino@redhat.com, blauwirbel@gmail.com, yang.z.zhang@intel.com, alex.williamson@redhat.com, aderumier@odiso.com, kraxel@redhat.com, anthony.perard@citrix.com, pbonzini@redhat.com, afaerber@suse.de, rth@twiddle.net ... so that on reboot BIOS could read current available CPU count Signed-off-by: Igor Mammedov --- hw/mc146818rtc.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c index a2119ad..c32ab92 100644 --- a/hw/mc146818rtc.c +++ b/hw/mc146818rtc.c @@ -82,6 +82,7 @@ typedef struct RTCState { Notifier clock_reset_notifier; LostTickPolicy lost_tick_policy; Notifier suspend_notifier; + Notifier cpu_added_notifier; } RTCState; static void rtc_set_time(RTCState *s); @@ -759,6 +760,14 @@ static void rtc_notify_suspend(Notifier *notifier, void *data) rtc_set_memory(&s->dev, 0xF, 0xFE); } +static void rtc_notify_cpu_added(Notifier *notifier, void *data) +{ + RTCState *s = container_of(notifier, RTCState, cpu_added_notifier); + + /* increment the number of CPUs */ + s->cmos_data[0x5f] += 1; +} + static void rtc_reset(void *opaque) { RTCState *s = opaque; @@ -852,6 +861,9 @@ static int rtc_initfn(ISADevice *dev) s->suspend_notifier.notify = rtc_notify_suspend; qemu_register_suspend_notifier(&s->suspend_notifier); + s->cpu_added_notifier.notify = rtc_notify_cpu_added; + qemu_register_cpu_add_notifier(&s->cpu_added_notifier); + memory_region_init_io(&s->io, &cmos_ops, s, "rtc", 2); isa_register_ioport(dev, &s->io, base); -- 1.7.1