In 2.6, having /proc/mtrr support in a kernel run on a system which
lacks MTRR support (like my crusoe) results in /proc/mtrr existing, but
giving EIO if you try to read it. On 2.4, it is detected as not existing
and not created. Is this the new intentional behaviour, or just a bug?
On Tue, Nov 18, 2003 at 09:12:34PM -0800, [email protected] wrote:
> In 2.6, having /proc/mtrr support in a kernel run on a system which
> lacks MTRR support (like my crusoe) results in /proc/mtrr existing, but
> giving EIO if you try to read it. On 2.4, it is detected as not existing
> and not created. Is this the new intentional behaviour, or just a bug?
Need something like this perhaps ?
--- 1/arch/i386/kernel/cpu/mtrr/if.c~ 2003-11-19 16:00:10.000000000 +0000
+++ 2/arch/i386/kernel/cpu/mtrr/if.c 2003-11-19 16:09:25.000000000 +0000
@@ -352,6 +352,14 @@
static int __init mtrr_if_init(void)
{
+ struct cpuinfo_x86 *c = &boot_cpu_data;
+
+ if ((!cpu_has(c, X86_FEATURE_MTRR)) ||
+ (!cpu_has(c, X86_FEATURE_K6_MTRR)) ||
+ (!cpu_has(c, X86_FEATURE_CYRIX_ARR)) ||
+ (!cpu_has(c, X86_FEATURE_CENTAUR_MCR)))
+ return -ENODEV;
+
proc_root_mtrr =
create_proc_entry("mtrr", S_IWUSR | S_IRUGO, &proc_root);
if (proc_root_mtrr) {
On Wed, Nov 19, 2003 at 04:10:44PM +0000, Dave Jones wrote:
> On Tue, Nov 18, 2003 at 09:12:34PM -0800, [email protected] wrote:
> > In 2.6, having /proc/mtrr support in a kernel run on a system which
> > lacks MTRR support (like my crusoe) results in /proc/mtrr existing, but
> > giving EIO if you try to read it. On 2.4, it is detected as not existing
> > and not created. Is this the new intentional behaviour, or just a bug?
>
> Need something like this perhaps ?
Better yet, get the logic right..
--- linux-2.5/arch/i386/kernel/cpu/mtrr/if.c~ Wed Nov 19 17:04:50 2003
+++ linux-2.5/arch/i386/kernel/cpu/mtrr/if.c Wed Nov 19 17:05:29 2003
@@ -352,6 +352,14 @@
static int __init mtrr_if_init(void)
{
+ struct cpuinfo_x86 *c = &boot_cpu_data;
+
+ if ((!cpu_has(c, X86_FEATURE_MTRR)) &&
+ (!cpu_has(c, X86_FEATURE_K6_MTRR)) &&
+ (!cpu_has(c, X86_FEATURE_CYRIX_ARR)) &&
+ (!cpu_has(c, X86_FEATURE_CENTAUR_MCR)))
+ return -ENODEV;
+
proc_root_mtrr =
create_proc_entry("mtrr", S_IWUSR | S_IRUGO, &proc_root);
if (proc_root_mtrr) {