Re: [PATCH 2/2] Suppress false "mtrr all empty" warning messagewhen running as VMware guest

From: Laurent Vivier
Date: Wed Sep 24 2008 - 08:54:28 EST


Le mercredi 24 septembre 2008 Ã 20:24 +0800, Yan Li a Ãcrit :
> Since the mtrr empty was detected very early before we can use DMI or
> PCI to check whether we are running as a VMware guest or not, we now
> only print an info there. Warning will only be issued later when we
> are sure that we are not running as a VMware guest.
>
> mtrr_trim_uncached_memory() is modified to return meaningful codes for
> later warning decision.
>
> Signed-off-by: Yan Li <elliot.li.tech@xxxxxxxxx>
> ---
> arch/x86/kernel/cpu/mtrr/main.c | 16 +++++++++++++++-
> arch/x86/kernel/setup.c | 27 ++++++++++++++++++++++++++-
> include/asm-x86/mtrr.h | 2 ++
> 3 files changed, 43 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
> index b117d7f..95d1cc0 100644
> --- a/arch/x86/kernel/cpu/mtrr/main.c
> +++ b/arch/x86/kernel/cpu/mtrr/main.c
> @@ -1453,6 +1453,11 @@ static u64 __init real_trim_memory(unsigned long start_pfn,
> * all of the memory the kernel is intending to use. If not, it'll trim any
> * memory off the end by adjusting end_pfn, removing it from the kernel's
> * allocation pools, warning the user with an obnoxious message.
> + *
> + * Return code:
> + * EMTRR_ALL_BLANK (-1): not trimmed due to CPU MTRRs all blank
> + * 0: not trimmed due to other reasons
> + * 1: trimmed successfully
> */
> int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
> {
> @@ -1494,11 +1499,20 @@ int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
> highest_pfn = base + size;
> }
>
> - /* kvm/qemu doesn't have mtrr set right, don't trim them all */
> + /* kvm/qemu/VMware doesn't have mtrr set right, don't trim them all */
> if (!highest_pfn) {
> +#ifdef CONFIG_VMWARE_GUEST_DETECT
> + /* the "mtrr all blank" warning will be deferred until
> + * after DMI scanning and we know the machine is not a
> + * VMware guest
> + */
> + printk(KERN_INFO "CPU MTRRs all blank\n");
> + return EMTRR_ALL_BLANK;
> +#else
> WARN(!kvm_para_available(), KERN_WARNING
> "WARNING: strange, CPU MTRRs all blank?\n");
> return 0;
> +#endif
> }

perhaps something like:

#ifdef CONFIG_VMWARE_GUEST_DETECT
WARN(!kvm_para_available() && !is_vmware_guest(), KERN_WARNING
"WARNING: strange, CPU MTRRs all blank?\n");
#else
WARN(!kvm_para_available(), KERN_WARNING
"WARNING: strange, CPU MTRRs all blank?\n");
...

???

Laurent
--
----------------- Laurent.Vivier@xxxxxxxx ------------------
"La perfection est atteinte non quand il ne reste rien Ã
ajouter mais quand il ne reste rien à enlever." Saint ExupÃry

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/