Michael Reinelt | 17 Mar 07:36 2012
Picon

MTRR cleanup does not kick in

Hi there,

I am (again) suffering from:
kernel: mtrr: no more MTRRs available
kernel: [drm] MTRR allocation failed.  Graphics performance may suffer.

kernel is vanilla 3.2.11

I know that this *used* to work, but I had to specify mtrr_gran_size=16M mtrr_chunk_size=128M on the
kernel command line.

Now, with the current kernel, I could not find *any* MTRR cleanup debug messages at all.

I debugged a bit, and probably found the cause:

arch/x86/kernel/cpu/mtrr/cleanup.c:mtrr_need_cleanup(void)

/* Check if we only had WB and UC */
if (num[MTRR_TYPE_WRBACK] + num[MTRR_TYPE_UNCACHABLE] !=
     num_var_ranges - num[MTRR_NUM_TYPES])
	return 0;

This one kicks in, and disables the MTRR cleanup, resulting in all 10 MTRR registers in use, and no more MTRRs
available 
for DRM.

I disabled this check, and now the MTRR cleaner works fine, even finding a optimal value for my system with
only 9 
registers, leaving one available for DRM.

(Continue reading)

Michael Reinelt | 22 May 04:18 2012
Picon

Re: MTRR cleanup does not kick in

Hello all,

may I draw your attention again to this issue?

I just run linux-3.4.0, seems to have still this problem (where I am not sure if this is a problem at all)

regards, Michael

Am 2012-03-17 07:36, schrieb Michael Reinelt:
> Hi there,
>
> I am (again) suffering from:
> kernel: mtrr: no more MTRRs available
> kernel: [drm] MTRR allocation failed.  Graphics performance may suffer.
>
> kernel is vanilla 3.2.11
>
> I know that this *used* to work, but I had to specify mtrr_gran_size=16M mtrr_chunk_size=128M on the
kernel command line.
>
> Now, with the current kernel, I could not find *any* MTRR cleanup debug messages at all.
>
> I debugged a bit, and probably found the cause:
>
> arch/x86/kernel/cpu/mtrr/cleanup.c:mtrr_need_cleanup(void)
>
> /* Check if we only had WB and UC */
> if (num[MTRR_TYPE_WRBACK] + num[MTRR_TYPE_UNCACHABLE] !=
>     num_var_ranges - num[MTRR_NUM_TYPES])
>     return 0;
(Continue reading)


Gmane