Re: [PATCH v3 6/6] x86, mm: Support huge KVA mappings on x86

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 03 Mar 2015 16:14:32 -0700 Toshi Kani <toshi.kani@xxxxxx> wrote:

> On Tue, 2015-03-03 at 14:44 -0800, Andrew Morton wrote:
> > On Tue,  3 Mar 2015 10:44:24 -0700 Toshi Kani <toshi.kani@xxxxxx> wrote:
>  :
> > > +
> > > +#ifdef CONFIG_HAVE_ARCH_HUGE_VMAP
> > > +int pud_set_huge(pud_t *pud, phys_addr_t addr, pgprot_t prot)
> > > +{
> > > +	u8 mtrr;
> > > +
> > > +	/*
> > > +	 * Do not use a huge page when the range is covered by non-WB type
> > > +	 * of MTRRs.
> > > +	 */
> > > +	mtrr = mtrr_type_lookup(addr, addr + PUD_SIZE);
> > > +	if ((mtrr != MTRR_TYPE_WRBACK) && (mtrr != 0xFF))
> > > +		return 0;
> > 
> > It would be good to notify the operator in some way when this happens. 
> > Otherwise the kernel will run more slowly and there's no way of knowing
> > why.  I guess slap a pr_info() in there.  Or maybe pr_warn()?
> 
> We only use 4KB mappings today, so this case will not make it run
> slowly, i.e. it will be the same as today.

Yes, but it would be slower than it would be if the operator fixed the
mtrr settings!  How do we let the operator know this?

>  Also, adding a message here
> can generate a lot of messages when MTRRs cover a large area.

Really?  This is only going to happen when a device driver requests a
huge io mapping, isn't it?  That's rare.  We could emit a warning,
return an error code and fall all the way back to the top-level ioremap
code which can then retry with 4k mappings.  Or something similar -
somehow record the fact that this warning has been emitted or use
printk ratelimiting (bad option).

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]