public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: "Ozan Çağlayan" <ozan@pardus.org.tr>
Cc: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [BUG 2.6.29_rc8] BIOS Bug: CPU MTRRs don't cover all of memory, losing 0MB of RAM.
Date: Mon, 16 Mar 2009 15:52:03 -0700	[thread overview]
Message-ID: <49BED813.1090405@kernel.org> (raw)
In-Reply-To: <49BED5D5.2000801@pardus.org.tr>

Ozan Çağlayan wrote:
> Yinghai Lu wrote:
> 
>> please check
>>
>> [PATCH] x86: workaround system with strange var MTRR
>>
> 
> Thanks for your interest.
> 
> Oops is now replaced with a warning after applying the patch on top of tip/master.
that is intended...
> 
> BTW, do that kind of BIOS bugs have a negative impact on the performance of the system?

should not, FIXED MTRR should override VAR MTRR if fixed mtrr is enabled.

> 
> 
> I'm sending the head of dmesg. And also I just noticed that there were MTRR related
> stuff at the tail of the log buffer(with/without the patch). I'm posting them also:
> 
> --
> 
> MTRR default type: uncachable
> MTRR fixed ranges enabled:
>   00000-9FFFF write-back
>   A0000-BFFFF uncachable
>   C0000-FFFFF write-protect
> MTRR variable ranges enabled:
>   0 base 0000000000 mask 0000000000 write-back
>   1 base 00CFF00000 mask FFFFF00000 uncachable
>   2 base 00D0000000 mask FFF0000000 uncachable
>   3 base 00E0000000 mask FFE0000000 uncachable
>   4 base 0000004000 mask FFFFFFF000 uncachable
>   5 base 0000005000 mask FFFFFFF000 uncachable
>   6 base 0000006000 mask FFFFFFF000 uncachable
>   7 base 0000007000 mask FFFFFFF000 uncachable
> x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
>   get_mtrr: cpu0 reg00 base=0000000000 size=0010000000 write-back
>   get_mtrr: cpu0 reg01 base=00000cff00 size=0000000100 uncachable
>   get_mtrr: cpu0 reg02 base=00000d0000 size=0000010000 uncachable
>   get_mtrr: cpu0 reg03 base=00000e0000 size=0000020000 uncachable
>   get_mtrr: cpu0 reg04 base=0000000004 size=0000000001 uncachable
>   get_mtrr: cpu0 reg05 base=0000000005 size=0000000001 uncachable
>   get_mtrr: cpu0 reg06 base=0000000006 size=0000000001 uncachable
>   get_mtrr: cpu0 reg07 base=0000000007 size=0000000001 uncachable
> WARNING: BIOS bug: VAR MTRR contains strange UC entry under 1M, check with your system vendor!
> WARNING: BIOS bug: VAR MTRR contains strange UC entry under 1M, check with your system vendor!
> WARNING: BIOS bug: VAR MTRR contains strange UC entry under 1M, check with your system vendor!
> WARNING: BIOS bug: VAR MTRR contains strange UC entry under 1M, check with your system vendor!

you got four wrong entries

> e820 update range: 00000000cff00000 - 0000000100000000 (usable) ==> (reserved)
> init_memory_mapping: 0000000000000000-00000000379fe000
>  0000000000 - 0000200000 page 4k
>  0000200000 - 0037800000 page 2M
>  0037800000 - 00379fe000 page 4k
> ...
> ...
> ...
> ...
> NET: Registered protocol family 10
> lo: Disabled Privacy Extensions
> ADDRCONF(NETDEV_UP): eth1: link is not ready
>   get_mtrr: cpu0 reg00 base=0000000000 size=0010000000 write-back
>   get_mtrr: cpu0 reg01 base=00000cff00 size=0000000100 uncachable
>   get_mtrr: cpu0 reg02 base=00000d0000 size=0000010000 uncachable
>   get_mtrr: cpu0 reg03 base=00000e0000 size=0000020000 uncachable
>   get_mtrr: cpu0 reg04 base=0000000004 size=0000000001 uncachable
>   get_mtrr: cpu0 reg05 base=0000000005 size=0000000001 uncachable
>   get_mtrr: cpu0 reg06 base=0000000006 size=0000000001 uncachable
>   get_mtrr: cpu0 reg07 base=0000000007 size=0000000001 uncachable
>   get_mtrr: cpu0 reg00 base=0000000000 size=0010000000 write-back
>   get_mtrr: cpu0 reg01 base=00000cff00 size=0000000100 uncachable
>   get_mtrr: cpu0 reg02 base=00000d0000 size=0000010000 uncachable
>   get_mtrr: cpu0 reg03 base=00000e0000 size=0000020000 uncachable
>   get_mtrr: cpu0 reg04 base=0000000004 size=0000000001 uncachable
>   get_mtrr: cpu0 reg05 base=0000000005 size=0000000001 uncachable
>   get_mtrr: cpu0 reg06 base=0000000006 size=0000000001 uncachable
>   get_mtrr: cpu0 reg07 base=0000000007 size=0000000001 uncachable
> bnx2: eth1 NIC Copper Link is Up, 1000 Mbps full duplex, receive & transmit flow control ON
> ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
>   get_mtrr: cpu0 reg00 base=0000000000 size=0010000000 write-back
>   get_mtrr: cpu0 reg01 base=00000cff00 size=0000000100 uncachable
>   get_mtrr: cpu0 reg02 base=00000d0000 size=0000010000 uncachable
>   get_mtrr: cpu0 reg03 base=00000e0000 size=0000020000 uncachable
>   get_mtrr: cpu0 reg04 base=0000000004 size=0000000001 uncachable
>   get_mtrr: cpu0 reg05 base=0000000005 size=0000000001 uncachable
>   get_mtrr: cpu0 reg06 base=0000000006 size=0000000001 uncachable
>   get_mtrr: cpu0 reg07 base=0000000007 size=0000000001 uncachable
>   get_mtrr: cpu0 reg00 base=0000000000 size=0010000000 write-back
>   get_mtrr: cpu0 reg01 base=00000cff00 size=0000000100 uncachable
>   get_mtrr: cpu0 reg02 base=00000d0000 size=0000010000 uncachable
>   get_mtrr: cpu0 reg03 base=00000e0000 size=0000020000 uncachable
>   get_mtrr: cpu0 reg04 base=0000000004 size=0000000001 uncachable
>   get_mtrr: cpu0 reg05 base=0000000005 size=0000000001 uncachable
>   get_mtrr: cpu0 reg06 base=0000000006 size=0000000001 uncachable
>   get_mtrr: cpu0 reg07 base=0000000007 size=0000000001 uncachable
>   get_mtrr: cpu0 reg00 base=0000000000 size=0010000000 write-back
>   get_mtrr: cpu0 reg01 base=00000cff00 size=0000000100 uncachable
>   get_mtrr: cpu0 reg02 base=00000d0000 size=0000010000 uncachable
>   get_mtrr: cpu0 reg03 base=00000e0000 size=0000020000 uncachable
>   get_mtrr: cpu0 reg04 base=0000000004 size=0000000001 uncachable
>   get_mtrr: cpu0 reg05 base=0000000005 size=0000000001 uncachable
>   get_mtrr: cpu0 reg06 base=0000000006 size=0000000001 uncachable
>   get_mtrr: cpu0 reg07 base=0000000007 size=0000000001 uncachable
>   get_mtrr: cpu0 reg00 base=0000000000 size=0010000000 write-back
> mtrr: type mismatch for d8000000,4000000 old: write-back new: write-combining
>   get_mtrr: cpu0 reg00 base=0000000000 size=0010000000 write-back
>   get_mtrr: cpu0 reg01 base=00000cff00 size=0000000100 uncachable
>   get_mtrr: cpu0 reg02 base=00000d0000 size=0000010000 uncachable
>   get_mtrr: cpu0 reg03 base=00000e0000 size=0000020000 uncachable
>   get_mtrr: cpu0 reg04 base=0000000004 size=0000000001 uncachable
>   get_mtrr: cpu0 reg05 base=0000000005 size=0000000001 uncachable
>   get_mtrr: cpu0 reg06 base=0000000006 size=0000000001 uncachable
>   get_mtrr: cpu0 reg07 base=0000000007 size=0000000001 uncachable
> 

you may try MTRR cleanup
CONFIG_MTRR=y
CONFIG_MTRR_SANITIZER=y
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1

it should clear the strange entries and find some spare one for your driver that need ...
it will get some performance improvement.

or talk to your system vendor to get a new BIOS.

YH

  reply	other threads:[~2009-03-16 22:54 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-16 13:48 [BUG 2.6.29_rc8] BIOS Bug: CPU MTRRs don't cover all of memory, losing 0MB of RAM Ozan Çağlayan
2009-03-16 18:21 ` Yinghai Lu
2009-03-16 20:17   ` Ozan Çağlayan
2009-03-16 22:00     ` Yinghai Lu
2009-03-16 22:42       ` Ozan Çağlayan
2009-03-16 22:52         ` Yinghai Lu [this message]
2009-03-17  9:43           ` Ingo Molnar
2009-03-16 23:33         ` [PATCH] x86: workaround system with stange var MTRR -v2 Yinghai Lu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49BED813.1090405@kernel.org \
    --to=yinghai@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=ozan@pardus.org.tr \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox