From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36592) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bxKAM-00045w-NV for qemu-devel@nongnu.org; Thu, 20 Oct 2016 16:42:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bxKAJ-0006cW-Lf for qemu-devel@nongnu.org; Thu, 20 Oct 2016 16:42:18 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54244) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1bxKAJ-0006c2-Gx for qemu-devel@nongnu.org; Thu, 20 Oct 2016 16:42:15 -0400 Date: Thu, 20 Oct 2016 16:51:48 -0200 From: Eduardo Habkost Message-ID: <20161020185148.GJ5057@thinpad.lan.raisama.net> References: <1476878743-144953-12-git-send-email-imammedo@redhat.com> <1476975522-154506-1-git-send-email-imammedo@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1476975522-154506-1-git-send-email-imammedo@redhat.com> Subject: [Qemu-devel] [PATCH] fixup! pc: add 'etc/boot-cpus' fw_cfg file for machine with more than 255 CPUs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Igor Mammedov Cc: qemu-devel@nongnu.org, liuxiaojian6@huawei.com, mst@redhat.com, rkrcmar@redhat.com, peterx@redhat.com, kevin@koconnor.net, kraxel@redhat.com, pbonzini@redhat.com, lersek@redhat.com, chao.gao@intel.com On Thu, Oct 20, 2016 at 04:58:42PM +0200, Igor Mammedov wrote: > Currently firmware uses 1 byte at 0x5F offset in RTC CMOS > to get number of CPUs present at boot. However 1 byte is > not enough to handle more than 255 CPUs. So add a new > fw_cfg file that would allow QEMU to tell it. > For compat reasons add file only for machine types that > support more than 255 CPUs. > > Signed-off-by: Igor Mammedov I suggest squashing this into the patch, to clarify why we are setting it to 0. Signed-off-by: Eduardo Habkost --- hw/i386/pc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index c6f6747..a03b384 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1225,6 +1225,10 @@ static void pc_build_feature_control_file(PCMachineState *pcms) static void rtc_set_cpus_count(ISADevice *rtc, uint16_t cpus_count) { if (cpus_count > 0xff) { + /* If the number of CPUs can't be represented in 8 bits, the + * BIOS must use "etc/boot-cpus". Set RTC field to 0 just + * to make old BIOSes fail more predictably. + */ rtc_set_memory(rtc, 0x5f, 0); } else { rtc_set_memory(rtc, 0x5f, cpus_count - 1); -- 2.7.4 -- Eduardo