Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Oct 2014 10:57:23 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-arch@freebsd.org
Cc:        Terry Kennedy <TERRY@tmk.com>
Subject:   Re: [rfc] Add boot-time warning messages to PAE kernels
Message-ID:  <5523023.h2nJCgOPoX@ralph.baldwin.cx>
In-Reply-To: <01PDOI9M51BK0003PW@tmk.com>
References:  <01PDOI9M51BK0003PW@tmk.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday, October 13, 2014 12:56:09 AM Terry Kennedy wrote:
>   [Inspired by an unrelated email conversation with jhb@]
> 
>   On the FreeBSD forums and also elsewhere, people frequently ask questions
> about enabling PAE. Generally, this is because they don't know that amd64
> kernels will run on their hardware.
> 
>   I initially proposed a static warning message, similar to the ones that
> happen when a kernel is built with INVARIANTS or WITNESS, with some sort
> of warning that "You probably don't want to do this". On thinking it over
> and discussing with jhb@, I think there are three scenarios that could be
> addressed:
> 
>   1) Boot PAE kernel on any amd64-capable processor - display a warning
>      message stating that the user should consider using the amd64 kernel
>      instead.
> 
>   2) Boot PAE kernel on any processor - display a warning message that
>      driver support is limited on PAE kernels and that they receive less
>      testing than non-PAE kernels.
> 
>   3) [Possibly] Boot i386 kernel on amd64-capable system w/ > 4GB of RAM -
>      display an informational message that the user should consider using
>      the amd64 kernel instead.
> 
>   This way, anyone that still needs to run a PAE kernel can, but the users
> who choose it by accident or mistake will be guided to the amd64 kernel.
> Adding a similar message to i386 kernels on amd64-capable hardware w/ more
> than 4GB of RAM will likewise direct those users toward a more optimal
> kernel. I mention this because I was having a conversation with a user who
> was trying to get ZFS going but "ran out of memory" on a 12GB system due
> to using the i386 kernel.
> 
>   All of this information (processor capability flags and memory size)
> is available early enough in the boot process that the messages can be
> displayed near the beginning of the kernel messages.
> 
>   Non-amd64-capable systems that have > 4GB were always a small subset of
> the population, and that hardware has aged enough that much of it is no
> longer used in its original role as business servers. These are pre-Socket
> 604 systems, for example. amd64-capable hardware has been available for
> more than 10 years from both AMD and Intel at this point.

I actually think we should consider doing this for all i386 kernels regardless 
of the 4GB of RAM check.  Something like this:

diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index 9d98f0e..6fbf419 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -4067,3 +4067,17 @@ outb_(u_short port, u_char data)
 }
 
 #endif /* KDB */
+
+static void
+warn64(void *arg __unused)
+{
+
+	if ((cpu_vendor_id == CPU_VENDOR_INTEL ||
+	    cpu_vendor_id == CPU_VENDOR_AMD ||
+	    cpu_vendor_id == CPU_VENDOR_CENTAUR) &&
+	    amd_feature & AMDID_LM)
+		printf("WARNING: 64-bit capable CPU, consider running "
+		    "FreeBSD/amd64 instead.\n");
+}
+SYSINIT(warn64, SI_SUB_COPYRIGHT, SI_ORDER_THIRD + 3, warn64, NULL);
+SYSINIT(warn64_2, SI_SUB_LAST, SI_ORDER_THIRD + 3, warn64, NULL);


-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5523023.h2nJCgOPoX>