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>