Date: Wed, 04 May 2011 13:29:22 +0200 From: Philip Soeberg <philip-freebsd1@soeberg.net> To: freebsd-hackers@freebsd.org Subject: Re: Runtime check for PAE option on BSD 6+ i386 Message-ID: <4DC13892.1020004@soeberg.net> In-Reply-To: <20110503174339.GI48734@deviant.kiev.zoral.com.ua> References: <4DBFFEC2.4010506@soeberg.net> <201105031144.32862.jhb@freebsd.org> <20110503174339.GI48734@deviant.kiev.zoral.com.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
On 03-05-2011 19:43, Kostik Belousov wrote: > On Tue, May 03, 2011 at 11:44:32AM -0400, John Baldwin wrote: >> On Tuesday, May 03, 2011 9:10:26 am Philip Soeberg wrote: >>> Hi fellow FreeBSD hackers, >>> >>> I've been using the following poor-man's approach in my driver init for >>> ages in an attempt at detecting PAE option on BSD 6 (or greater) i386 >>> kernels, as I depend on dmabus(9) but provide a loadable kernel module only. >>> >>> >>> >>> if (sizeof(void*) == 4) { >>> if (((uint64_t)(cnt.v_page_count * cnt.v_page_size) / 1073741824) >>> >= 4) { >>> printf("FreeBSD i386 detected with PAE option enabled. FreeBSD >>> PAE type\n"); >>> printf("kernels does not support loadable modules which use DMA. >>> Please\n"); >>> printf("reconfigure your kernel for non-PAE or switch to amd64 >>> kernel.\n"); >>> return EFAULT; >>> } >>> } >>> <<< >> Hmmm, even this isn't really accurate as some folks may choose to enable PAE >> even with< 4GB to get PG_NX functionality. >> >>> afaik there's a sysctl method of checking this per BSD7 (or is it 8?), >>> but what about BSD6? Any hints on how I can runtime detect the above? >> Definitely a kern.features.pae sysctl in 7. I don't see anything similar in >> 6. > Read %cr4 and test the bit there. Ha, as always there exist a simple elegant solution.. thanks, that method had escaped me.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4DC13892.1020004>