Date: Mon, 13 Oct 2014 09:27:44 -0600 From: Warner Losh <imp@bsdimp.com> To: John Baldwin <jhb@freebsd.org> Cc: Terry Kennedy <TERRY@tmk.com>, freebsd-arch@freebsd.org Subject: Re: [rfc] Add boot-time warning messages to PAE kernels Message-ID: <BB035582-27C3-47B7-A288-70A4C0F65629@bsdimp.com> In-Reply-To: <5523023.h2nJCgOPoX@ralph.baldwin.cx> References: <01PDOI9M51BK0003PW@tmk.com> <5523023.h2nJCgOPoX@ralph.baldwin.cx>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail=_620F4880-9C5B-47F5-ADD4-5AF82A7891A0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=windows-1252
On Oct 13, 2014, at 8:57 AM, John Baldwin <jhb@freebsd.org> wrote:
> On Monday, October 13, 2014 12:56:09 AM Terry Kennedy wrote:
>> [Inspired by an unrelated email conversation with jhb@]
>>=20
>> 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.
>>=20
>> 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:
>>=20
>> 1) Boot PAE kernel on any amd64-capable processor - display a =
warning
>> message stating that the user should consider using the amd64 =
kernel
>> instead.
>>=20
>> 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.
>>=20
>> 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.
>>=20
>> 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.
>>=20
>> 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.
>>=20
>> 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.
>=20
> I actually think we should consider doing this for all i386 kernels =
regardless=20
> of the 4GB of RAM check. Something like this:
>=20
> 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)
> }
>=20
> #endif /* KDB */
> +
> +static void
> +warn64(void *arg __unused)
> +{
> +
> + if ((cpu_vendor_id =3D=3D CPU_VENDOR_INTEL ||
> + cpu_vendor_id =3D=3D CPU_VENDOR_AMD ||
> + cpu_vendor_id =3D=3D 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);
Where=92s warn64_2 defined :)
I=92d add a && !stfu_warn64 in there somewhere that=92s set as a =
tunable. It
is a good seat belt for the newbie running the wrong thing (though maybe
7 years too late), but experienced users may wish to stifle it for =
organizational
reasons. Some organizations have a no warning policy where they have to
do something about the warnings, even if there=92s nothing to do. =
Providing
an easy way to STFU the warning would allow them to run with a stock =
kernel
or perhaps (if done as a config option instead) a custom kernel config.
Warner
--Apple-Mail=_620F4880-9C5B-47F5-ADD4-5AF82A7891A0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename=signature.asc
Content-Type: application/pgp-signature;
name=signature.asc
Content-Description: Message signed with OpenPGP using GPGMail
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org
iQIcBAEBCgAGBQJUO+9wAAoJEGwc0Sh9sBEAIj0P/0noRLNVVIA3MjATgM4griDQ
NuCOtocflpisAiluWvmcKbPoaeen22sFKxoqaY2cYz4T4szhCdDEZe63vShlZIpW
N1QlnArfP4gu3Aijcf6oxgTkqEnzHn0PZmXUopS/60dqSLWft8Q8ZzBOX7o+fP1s
gvRmL5vaf8W5w2yzOEFVCIbZNk5rykKb1cNKqmxU8GYuAQWXWniJPRm9J+9NftFG
sKKqDJHo+Sjj4NW7MwuhQDktV6XhKuLvoDSi4UgYGb87JvFV3EOJmitjaebGMoNI
Yx80Ch1QJ4ki9mLFTmBWak9JjJ1MbuNO/nd8B1vS8yOZrmJq38ecu3s9QZD9Y2QU
zmTxJPxMM+vovQtM7dCD5446xAf5+TdHJVihVUuQ5Q8MZ07IsUc1Z/BB8u3kHj15
rNoIxA+jjqcHain8ub9SrbUtsSb8xswRXuSZL8c7yAhyoOM+pGmzCKCZmDHYxZdN
P6R+HHzLJgR4LAIlfqs14W3S7wyBPmgbmG6lXFu3qU3LoqxMTRphKG5SQqN94AMa
nENNmVcGaP+a6PsSXPybt4XLB9JWezBFFGiizt6Jg3ncHhpy1nPhV8/DVwVngDec
BgB2X0DDRtPHyVrwh7xsw+WOxUmSAHdHWca1bL23ecvLYAH2VsszS9vMPDzX4ho2
X95akGqpYYWhWJ9oCCAA
=Luaj
-----END PGP SIGNATURE-----
--Apple-Mail=_620F4880-9C5B-47F5-ADD4-5AF82A7891A0--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BB035582-27C3-47B7-A288-70A4C0F65629>
