lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080821205558.GC23377@hoblitt.com>
Date:	Thu, 21 Aug 2008 10:55:58 -1000
From:	Joshua Hoblitt <josh@...litt.com>
To:	Yinghai Lu <yhlu.kernel@...il.com>
Cc:	Andrew Morton <akpm@...ux-foundation.org>,
	bugme-daemon@...zilla.kernel.org, linux-kernel@...r.kernel.org,
	j_kernel@...litt.com
Subject: Re: [Bug 11388] New: 2.6.27-rc3 warns about MTRR range; only 3 of
	16gb of memory is usable

Both hunks in the patch applied with an offset of -36 but the show_msr
flag doesn't seem to have any effect.  The dmesg is still the same
number of lines accord to wc.

I'm attaching the new dmesg anyways.

$ cat /proc/cmdline 
root=/dev/ram0 real_root=/dev/sda3 init=/linuxrc show_msr=1 console=tty0
console=ttyS0,115200n8 

-J

--
On Wed, Aug 20, 2008 at 06:49:11PM -0700, Yinghai Lu wrote:
> On Wed, Aug 20, 2008 at 6:20 PM, Yinghai Lu <yhlu.kernel@...il.com> wrote:
> > On Wed, Aug 20, 2008 at 6:04 PM, Andrew Morton
> > <akpm@...ux-foundation.org> wrote:
> >>
> >> (switched to email.  Please respond via emailed reply-to-all, not via the
> >> bugzilla web interface).
> >>
> >> On Wed, 20 Aug 2008 17:38:59 -0700 (PDT)
> >> bugme-daemon@...zilla.kernel.org wrote:
> >>
> >>> http://bugzilla.kernel.org/show_bug.cgi?id=11388
> >>>
> >>>            Summary: 2.6.27-rc3 warns about MTRR range; only 3 of 16gb of
> >>>                     memory is usable
> >>>            Product: Memory Management
> >>>            Version: 2.5
> >>>      KernelVersion: 2.6.27-rc3
> >>>           Platform: All
> >>>         OS/Version: Linux
> >>>               Tree: Mainline
> >>>             Status: NEW
> >>>           Severity: normal
> >>>           Priority: P1
> >>>          Component: MTTR
> >>>         AssignedTo: akpm@...l.org
> >>>         ReportedBy: j_kernel@...litt.com
> >>>
> >>>
> >>> Latest working kernel version: 2.4.24.2 (possibly later)
> >>> Earliest failing kernel version: 2.6.27-rc3-21328-ga7f5aaf (from netdev-2.6)
> >>> Distribution: Gentoo
> >>> Hardware Environment: 2x Intel X5482
> >>> Software Environment:
> >>> Problem Description:
> >>>
> >>> [    0.000000] WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing
> >>> 13056MB of RAM.
> >>> [    0.000000] ------------[ cut here ]------------
> >>> [    0.000000] WARNING: at arch/x86/kernel/cpu/mtrr/main.c:1561
> >>> mtrr_trim_uncached_memory+0x508/0x550()
> >>> [    0.000000] Modules linked in:
> >>> [    0.000000] Pid: 0, comm: swapper Not tainted 2.6.27-rc3-21328-ga7f5aaf #8
> >>> [    0.000000]
> >>> [    0.000000] Call Trace:
> >>> [    0.000000]  [<ffffffff80234c3e>] warn_on_slowpath+0x51/0x77
> >>> [    0.000000]  [<ffffffff8023570a>] printk+0x4e/0x56
> >>> [    0.000000]  [<ffffffff803add02>] sort+0xfa/0x18c
> >>> [    0.000000]  [<ffffffff808283d3>] cmp_range+0x0/0x6
> >>> [    0.000000]  [<ffffffff80828a47>] mtrr_trim_uncached_memory+0x508/0x550
> >>> [    0.000000]  [<ffffffff802178e1>] post_set+0x20/0x3d
> >>> [    0.000000]  [<ffffffff80824f99>] setup_arch+0x39d/0x6be
> >>> [    0.000000]  [<ffffffff8081e962>] start_kernel+0x74/0x341
> >>> [    0.000000]  [<ffffffff8081e394>] x86_64_start_kernel+0xe3/0xe7
> >>> [    0.000000]
> >>> [    0.000000] ---[ end trace 4eaa2a86a8e2da22 ]---
> >>>
> >>>
> >>> Steps to reproduce:
> >>>
> >>> This warning isn't present under 2.6.24.2 and the full range of physical memory
> >>> is usable.
> >>
> >> Looks like a post-2.6.26 regression caused by
> >> 12031a624af7816ec7660b82be648aa3703b4ebe.
> > reg00: base=0xd0000000 (3328MB), size=196864MB: uncachable, count=1
> > reg01: base=0xe0000000 (3584MB), size=197120MB: uncachable, count=1
> > reg02: base=0x00000000 (   0MB), size=212992MB: write-back, count=1
> > reg03: base=0x400000000 (16384MB), size=197120MB: write-back, count=1
> > reg04: base=0x420000000 (16896MB), size=196864MB: write-back, count=1
> >
> > the size mtrr looks crazy.
> 
> please apply attached patch and boot with show_msr=1 to dump the msr
> (including mtrr)
> 
> YH

> [PATCH] x86_64: printout msr
> 
> commandline show_msr=1 for bsp, show_msr=32 for all 32 cpus.
> 
> Signed-off-by: Yinghai Lu <yhlu.kernel@...il.com>
> 
> ---
>  arch/x86/kernel/cpu/common_64.c |   46 ++++++++++++++++++++++++++++++++++++++++
>  include/asm-x86/msr.h           |   23 ++++++++++++++++++++
>  2 files changed, 69 insertions(+)
> 
> Index: linux-2.6/arch/x86/kernel/cpu/common_64.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/cpu/common_64.c
> +++ linux-2.6/arch/x86/kernel/cpu/common_64.c
> @@ -430,6 +430,49 @@ static __init int setup_noclflush(char *
>  }
>  __setup("noclflush", setup_noclflush);
>  
> +struct msr_range {
> +	unsigned min;
> +	unsigned max;
> +};
> +
> +static struct msr_range msr_range_array[] __cpuinitdata = {
> +	{ 0x00000000, 0x00000418},
> +	{ 0xc0000000, 0xc000040b},
> +	{ 0xc0010000, 0xc0010142},
> +	{ 0xc0011000, 0xc001103b},
> +};
> +
> +static void __cpuinit print_cpu_msr(void)
> +{
> +	unsigned index;
> +	u64 val;
> +	int i;
> +	unsigned index_min, index_max;
> +
> +	for (i = 0; i < ARRAY_SIZE(msr_range_array); i++) {
> +		index_min = msr_range_array[i].min;
> +		index_max = msr_range_array[i].max;
> +		for (index = index_min; index < index_max; index++) {
> +			if (rdmsrl_amd_safe(index, &val))
> +				continue;
> +			printk(KERN_INFO " MSR%08x: %016llx\n", index, val);
> +		}
> +	}
> +}
> +
> +static int show_msr __cpuinitdata;
> +static __init int setup_show_msr(char *arg)
> +{
> +	int num;
> +
> +	get_option(&arg, &num);
> +
> +	if (num > 0)
> +		show_msr = num;
> +	return 1;
> +}
> +__setup("show_msr=", setup_show_msr);
> +
>  void __cpuinit print_cpu_info(struct cpuinfo_x86 *c)
>  {
>  	if (c->x86_model_id[0])
> @@ -439,6 +482,9 @@ void __cpuinit print_cpu_info(struct cpu
>  		printk(KERN_CONT " stepping %02x\n", c->x86_mask);
>  	else
>  		printk(KERN_CONT "\n");
> +
> +	if (c->cpu_index < show_msr)
> +		print_cpu_msr();
>  }
>  
>  static __init int setup_disablecpuid(char *arg)
> Index: linux-2.6/include/asm-x86/msr.h
> ===================================================================
> --- linux-2.6.orig/include/asm-x86/msr.h
> +++ linux-2.6/include/asm-x86/msr.h
> @@ -63,6 +63,22 @@ static inline unsigned long long native_
>  	return EAX_EDX_VAL(val, low, high);
>  }
>  
> +static inline unsigned long long native_read_msr_amd_safe(unsigned int msr,
> +						      int *err)
> +{
> +	DECLARE_ARGS(val, low, high);
> +
> +	asm volatile("2: rdmsr ; xor %0,%0\n"
> +		     "1:\n\t"
> +		     ".section .fixup,\"ax\"\n\t"
> +		     "3:  mov %3,%0 ; jmp 1b\n\t"
> +		     ".previous\n\t"
> +		     _ASM_EXTABLE(2b, 3b)
> +		     : "=r" (*err), EAX_EDX_RET(val, low, high)
> +		     : "c" (msr), "D" (0x9c5a203a), "i" (-EFAULT));
> +	return EAX_EDX_VAL(val, low, high);
> +}
> +
>  static inline void native_write_msr(unsigned int msr,
>  				    unsigned low, unsigned high)
>  {
> @@ -158,6 +174,13 @@ static inline int rdmsrl_safe(unsigned m
>  	*p = native_read_msr_safe(msr, &err);
>  	return err;
>  }
> +static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p)
> +{
> +	int err;
> +
> +	*p = native_read_msr_amd_safe(msr, &err);
> +	return err;
> +}
>  
>  #define rdtscl(low)						\
>  	((low) = (u32)native_read_tsc())


View attachment "2.6.27-r3.dmesg2" of type "text/plain" (43145 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ