linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Toshi Kani <toshi.kani@hp.com>
To: Dave Hansen <dave.hansen@intel.com>
Cc: akpm@linux-foundation.org, hpa@zytor.com, tglx@linutronix.de,
	mingo@redhat.com, arnd@arndb.de, linux-mm@kvack.org,
	x86@kernel.org, linux-kernel@vger.kernel.org, Elliott@hp.com
Subject: Re: [PATCH v2 5/7] x86, mm: Support huge KVA mappings on x86
Date: Mon, 02 Mar 2015 17:37:11 -0700	[thread overview]
Message-ID: <1425343031.17007.177.camel@misato.fc.hp.com> (raw)
In-Reply-To: <1423609825.1128.24.camel@misato.fc.hp.com>

On Tue, 2015-02-10 at 16:10 -0700, Toshi Kani wrote:
> On Tue, 2015-02-10 at 15:13 -0700, Toshi Kani wrote:
> > On Tue, 2015-02-10 at 12:51 -0800, Dave Hansen wrote:
> > > On 02/10/2015 12:42 PM, Toshi Kani wrote:
> > > > On Tue, 2015-02-10 at 10:59 -0800, Dave Hansen wrote:
> > > >> On 02/09/2015 02:45 PM, Toshi Kani wrote:
> > > >>> Implement huge KVA mapping interfaces on x86.  Select
> > > >>> HAVE_ARCH_HUGE_VMAP when X86_64 or X86_32 with X86_PAE is set.
> > > >>> Without X86_PAE set, the X86_32 kernel has the 2-level page
> > > >>> tables and cannot provide the huge KVA mappings.
> > > >>
> > > >> Not that it's a big deal, but what's the limitation with the 2-level
> > > >> page tables on 32-bit?  We have a 4MB large page size available there
> > > >> and we already use it for the kernel linear mapping.
> > > > 
> > > > ioremap() calls arch-neutral ioremap_page_range() to set up I/O mappings
> > > > with PTEs.  This patch-set enables ioremap_page_range() to set up PUD &
> > > > PMD mappings.  With 2-level page table, I do not think this PUD/PMD
> > > > mapping code works unless we add some special code.
> > > 
> > > What actually breaks, though?
> > > 
> > > Can't you just disable the pud code via ioremap_pud_enabled()?
> > 
> > That's what v1 did, and I found in testing that the PMD mapping code did
> > not work when PAE was unset.  I think we need special handling similar
> > to one_md_table_init(), which returns pgd as pmd in case of non-PAE.
> > ioremap_page_range() does not have such handling and I thought it would
> > not be worth adding it.
> 
> Actually pud_alloc() and pmd_alloc() should carry pgd in this case...  I
> will look into the problem to see why it did not work when PAE was
> unset.

I have looked at this case, 32bit without PAE, and confirmed that it set
pgd properly.  crash can translate an address with the mapping as well.
However, there is something missing in the code that the kernel cannot
access to a page with the mapping (page fault).  I tried TLB flush, but
it did not help, either.  Since this config can unlikely be benefited by
this feature, I will have to continue to disable this case.  I hope that
is OK.  

Thanks,
-Toshi


  reply	other threads:[~2015-03-03  0:37 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-09 22:45 [PATCH v2 0/7] Kernel huge I/O mapping support Toshi Kani
2015-02-09 22:45 ` [PATCH v2 1/7] mm: Change __get_vm_area_node() to use fls_long() Toshi Kani
2015-02-09 22:45 ` [PATCH v2 2/7] lib: Add huge I/O map capability interfaces Toshi Kani
2015-02-09 22:45 ` [PATCH v2 3/7] mm: Change ioremap to set up huge I/O mappings Toshi Kani
2015-02-09 22:45 ` [PATCH v2 4/7] mm: Change vunmap to tear down huge KVA mappings Toshi Kani
2015-02-09 22:45 ` [PATCH v2 5/7] x86, mm: Support huge KVA mappings on x86 Toshi Kani
2015-02-10 18:59   ` Dave Hansen
2015-02-10 20:42     ` Toshi Kani
2015-02-10 20:51       ` Dave Hansen
2015-02-10 22:13         ` Toshi Kani
2015-02-10 22:20           ` Toshi Kani
2015-02-10 23:10           ` Toshi Kani
2015-03-03  0:37             ` Toshi Kani [this message]
2015-02-09 22:45 ` [PATCH v2 6/7] x86, mm: Support huge I/O " Toshi Kani
2015-02-18 20:44   ` Ingo Molnar
2015-02-18 21:13     ` Toshi Kani
2015-02-18 21:15       ` Ingo Molnar
2015-02-18 21:33         ` Toshi Kani
2015-02-18 21:57           ` Ingo Molnar
2015-02-18 22:14             ` Toshi Kani
2015-02-09 22:45 ` [PATCH v2 7/7] mm: Add config HUGE_IOMAP to enable huge I/O mappings Toshi Kani
2015-02-23 20:22 ` [PATCH v2 0/7] Kernel huge I/O mapping support Andrew Morton
2015-02-23 23:54   ` Toshi Kani
2015-02-24  8:09   ` Ingo Molnar
2015-03-02 15:51     ` Toshi Kani

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1425343031.17007.177.camel@misato.fc.hp.com \
    --to=toshi.kani@hp.com \
    --cc=Elliott@hp.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=dave.hansen@intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).