2012-05-22 02:19:25

by Michael Reinelt

[permalink] [raw]
Subject: 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;
>
> 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.
>
>
> maybe the mtrr_need_cleanup() function should take nr_mtrr_spare_reg into account?
>
>
>
>
> regards, Michael
>
> PS please keep me on CC as I'm not subscribed. thanks!
>

--
Michael Reinelt<[email protected]>
http://home.pages.at/reinelt
GPG-Key 0xDF13BA50
ICQ #288386781