All of lore.kernel.org
 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: Tue, 10 Feb 2015 15:13:17 -0700	[thread overview]
Message-ID: <1423606397.1128.20.camel@misato.fc.hp.com> (raw)
In-Reply-To: <54DA6F38.4050902@intel.com>

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
be worth adding it.

Thanks,
-Toshi



WARNING: multiple messages have this Message-ID (diff)
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: Tue, 10 Feb 2015 15:13:17 -0700	[thread overview]
Message-ID: <1423606397.1128.20.camel@misato.fc.hp.com> (raw)
In-Reply-To: <54DA6F38.4050902@intel.com>

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
be worth adding it.

Thanks,
-Toshi


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

  reply	other threads:[~2015-02-10 22:13 UTC|newest]

Thread overview: 50+ 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 ` 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   ` 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   ` 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   ` 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   ` Toshi Kani
2015-02-09 22:45 ` [PATCH v2 5/7] x86, mm: Support huge KVA mappings on x86 Toshi Kani
2015-02-09 22:45   ` Toshi Kani
2015-02-10 18:59   ` Dave Hansen
2015-02-10 18:59     ` Dave Hansen
2015-02-10 20:42     ` Toshi Kani
2015-02-10 20:42       ` Toshi Kani
2015-02-10 20:51       ` Dave Hansen
2015-02-10 20:51         ` Dave Hansen
2015-02-10 22:13         ` Toshi Kani [this message]
2015-02-10 22:13           ` Toshi Kani
2015-02-10 22:20           ` Toshi Kani
2015-02-10 22:20             ` Toshi Kani
2015-02-10 23:10           ` Toshi Kani
2015-02-10 23:10             ` Toshi Kani
2015-03-03  0:37             ` Toshi Kani
2015-03-03  0:37               ` Toshi Kani
2015-02-09 22:45 ` [PATCH v2 6/7] x86, mm: Support huge I/O " Toshi Kani
2015-02-09 22:45   ` Toshi Kani
2015-02-18 20:44   ` Ingo Molnar
2015-02-18 20:44     ` Ingo Molnar
2015-02-18 21:13     ` Toshi Kani
2015-02-18 21:13       ` Toshi Kani
2015-02-18 21:15       ` Ingo Molnar
2015-02-18 21:15         ` Ingo Molnar
2015-02-18 21:33         ` Toshi Kani
2015-02-18 21:33           ` Toshi Kani
2015-02-18 21:57           ` Ingo Molnar
2015-02-18 21:57             ` Ingo Molnar
2015-02-18 22:14             ` Toshi Kani
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-09 22:45   ` Toshi Kani
2015-02-23 20:22 ` [PATCH v2 0/7] Kernel huge I/O mapping support Andrew Morton
2015-02-23 20:22   ` Andrew Morton
2015-02-23 23:54   ` Toshi Kani
2015-02-23 23:54     ` Toshi Kani
2015-02-24  8:09   ` Ingo Molnar
2015-02-24  8:09     ` Ingo Molnar
2015-03-02 15:51     ` Toshi Kani
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=1423606397.1128.20.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.