x86: fix mttr trimming
authorYinghai Lu <yinghai.lu@sun.com>
Wed, 6 Feb 2008 21:39:45 +0000 (22:39 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 6 Feb 2008 21:39:45 +0000 (22:39 +0100)
commit20651af9ac60fd6e31360688ad44861a7d05256a
treea5081b8ffddf2d2d931c16ae2528fd3679ba9760
parent971a52d66a3e87d4d2f5d3455e62680447cdb8e9
x86: fix mttr trimming

Pavel Emelyanov reported that his networking card did not work
and bisected it down to:

"
The commit

  093af8d7f0ba3c6be1485973508584ef081e9f93
  x86_32: trim memory by updating e820

broke my e1000 card: on loading driver says that

  e1000: probe of 0000:04:03.0 failed with error -5

and the interface doesn't appear.
"

on a 32-bit kernel, base will overflow when try to do PAGE_SHIFT,
and highest_addr will always less 4G.

So use pfn instead of address to avoid the overflow when more than
4g RAM is installed on a 32-bit kernel.

Many thanks to Pavel Emelyanov for reporting and testing it.

Bisected-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: Yinghai Lu <yinghai.lu@sun.com>
Tested-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/cpu/mtrr/main.c