From: Jack Steiner <steiner@sgi.com>
To: Christoph Hellwig <hch@infradead.org>,
cl@linux-foundation.org, hugh@veritas.com
Cc: akpm@osdl.org, linux-kernel@vger.kernel.org, mingo@elte.hu,
tglx@linutronix.de, holt@sgi.com, andrea@qumranet.com,
linux-mm@kvack.org
Subject: Re: [patch 12/13] GRU Driver V3 - export is_uv_system(), zap_page_range() & follow_page()
Date: Mon, 7 Jul 2008 09:39:16 -0500 [thread overview]
Message-ID: <20080707143916.GA5209@sgi.com> (raw)
In-Reply-To: <20080704073926.GA1449@infradead.org>
> On Thu, Jul 03, 2008 at 04:34:00PM -0500, steiner@sgi.com wrote:
> > +EXPORT_SYMBOL_GPL(zap_page_range);
Investigating.... More later
> >
> > /*
> > * Do a quick page-table lookup for a single page.
> > @@ -1089,6 +1090,7 @@ no_page_table:
> > }
> > return page;
> > }
> > +EXPORT_SYMBOL_GPL(follow_page);
>
> NACK.
>
> These should never be called by a driver and suggest you need to rething
> your VM integration in this driver.
Can you provide some additional details on the type of kernel API
that could be exported to provide a pte lookup in atomic context?
There has been significant work to add kernel support for
drivers with externel TLBs. The GRU is one of these drivers.
In order to efficiently support the GRU, the driver needs to do
virt->physical translations in atomic context.
Some background.
The GRU is a hardware resource located in the system chipset. The GRU
contains memory that is mmaped into the user address space. This memory is
used to communicate with the GRU to perform functions such as load/store,
scatter/gather, bcopy, AMOs, etc. The GRU is directly accessed by user
instructions using user virtual addresses. GRU instructions (ex., bcopy) use
user virtual addresses for operands.
The GRU contains a large TLB that is functionally very similar to processor TLBs.
If a user references a page and no GRU TLB entry exists, the GRU sends
an interrupt to the processor.
Currently, the driver calls follow_page() in interrupt context. If the
lookup is successful, a new TLB entry is dropped into the GRU and
the fault is resolved. If follow_page() fails, the fault is converted
into a different type of fault that will later be seen by the user. The
driver is later called in user context where sleeping is allowed.
The driver then calls get_user_pages() in user context.
Most users of the GRU will be HPC apps that are primarily cpu bound
in user code. The call to follow_page() should normally be successful
and processing the fault in interrupt context is MUCH lower overhead than
handling it in user context.
I'll gladly make whatever changes are needed but need some pointers on
the direction I should take....
--- jack
--
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>
next parent reply other threads:[~2008-07-07 14:39 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20080703213348.489120321@attica.americas.sgi.com>
[not found] ` <20080703213633.890647632@attica.americas.sgi.com>
[not found] ` <20080704073926.GA1449@infradead.org>
2008-07-07 14:39 ` Jack Steiner [this message]
2008-07-07 14:54 ` Andrea Arcangeli
2008-07-07 16:29 ` Hugh Dickins
2008-07-07 16:53 ` Jack Steiner
2008-07-08 2:16 ` Nick Piggin
2008-07-09 19:11 ` Jack Steiner
2008-07-10 7:31 ` Nick Piggin
2008-07-10 13:29 ` Jack Steiner
2008-07-10 14:21 ` Nick Piggin
2008-07-10 16:33 ` Jack Steiner
2008-07-10 16:52 ` Nick Piggin
2008-07-10 17:20 ` Jack Steiner
2008-07-11 3:30 ` Nick Piggin
2008-07-07 18:58 ` Arjan van de Ven
2008-07-07 19:29 ` Jack Steiner
2008-07-07 21:03 ` Andrea Arcangeli
2008-07-07 17:58 ` Jack Steiner
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=20080707143916.GA5209@sgi.com \
--to=steiner@sgi.com \
--cc=akpm@osdl.org \
--cc=andrea@qumranet.com \
--cc=cl@linux-foundation.org \
--cc=hch@infradead.org \
--cc=holt@sgi.com \
--cc=hugh@veritas.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
/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