[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1402363302.23860.103.camel@deadeye.wl.decadent.org.uk>
Date: Tue, 10 Jun 2014 02:21:42 +0100
From: Ben Hutchings <ben@...adent.org.uk>
To: Hugh Dickins <hughd@...gle.com>
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
linux-kernel@...r.kernel.org, stable@...r.kernel.org,
Mel Gorman <mgorman@...e.de>, Rik van Riel <riel@...hat.com>,
Andrew Morton <akpm@...ux-foundation.org>,
Yijing Wang <wangyijing@...wei.com>,
Will Deacon <will.deacon@....com>
Subject: Re: [PATCH 3.4 47/88] mm: add kmap_to_page()
On Mon, 2014-06-09 at 18:15 -0700, Hugh Dickins wrote:
> On Mon, 9 Jun 2014, Greg Kroah-Hartman wrote:
>
> > 3.4-stable review patch. If anyone has any objections, please let me know.
> >
> > ------------------
> >
> > From: Ben Hutchings <ben@...adent.org.uk>
> >
> > commit fcb8996728fb59eddf84678df7cb213b2c9a2e26 upstream.
> >
> > This is extracted from Mel Gorman's commit 5a178119b0fb ('mm: add
> > support for direct_IO to highmem pages') upstream.
> >
> > Required to backport commit b9cdc88df8e6 ('virtio: 9p: correctly pass
> > physical address to userspace for high pages').
> >
> > Cc: Mel Gorman <mgorman@...e.de>
> > Cc: Rik van Riel <riel@...hat.com>
> > Cc: Andrew Morton <akpm@...ux-foundation.org>
> > Signed-off-by: Ben Hutchings <ben@...adent.org.uk>
> > Cc: Yijing Wang <wangyijing@...wei.com>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
> >
> > ---
> > include/linux/highmem.h | 7 +++++++
> > mm/highmem.c | 12 ++++++++++++
> > 2 files changed, 19 insertions(+)
> >
> > --- a/include/linux/highmem.h
> > +++ b/include/linux/highmem.h
> > @@ -39,10 +39,17 @@ extern unsigned long totalhigh_pages;
> >
> > void kmap_flush_unused(void);
> >
> > +struct page *kmap_to_page(void *addr);
> > +
> > #else /* CONFIG_HIGHMEM */
> >
> > static inline unsigned int nr_free_highpages(void) { return 0; }
> >
> > +static inline struct page *kmap_to_page(void *addr)
> > +{
> > + return virt_to_page(addr);
> > +}
> > +
> > #define totalhigh_pages 0UL
> >
> > #ifndef ARCH_HAS_KMAP
> > --- a/mm/highmem.c
> > +++ b/mm/highmem.c
> > @@ -94,6 +94,18 @@ static DECLARE_WAIT_QUEUE_HEAD(pkmap_map
> > do { spin_unlock(&kmap_lock); (void)(flags); } while (0)
> > #endif
> >
> > +struct page *kmap_to_page(void *vaddr)
> > +{
> > + unsigned long addr = (unsigned long)vaddr;
> > +
> > + if (addr >= PKMAP_ADDR(0) && addr <= PKMAP_ADDR(LAST_PKMAP)) {
> > + int i = (addr - PKMAP_ADDR(0)) >> PAGE_SHIFT;
> > + return pte_page(pkmap_page_table[i]);
> > + }
> > +
> > + return virt_to_page(addr);
> > +}
> > +
> > static void flush_all_zero_pkmaps(void)
> > {
> > int i;
>
> I think this needs the following on top:
>
> commit 498c2280212327858e521e9d21345d4cc2637f54
> Author: Will Deacon <will.deacon@....com>
> Date: Fri Nov 16 14:15:00 2012 -0800
>
> mm: highmem: don't treat PKMAP_ADDR(LAST_PKMAP) as a highmem address
[...]
Thanks Hugh, I've queued this up for 3.2 (where I previously added
kmap_to_page()).
Ben.
--
Ben Hutchings
Download attachment "signature.asc" of type "application/pgp-signature" (829 bytes)
Powered by blists - more mailing lists