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 <b...@decadent.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 <mgor...@suse.de>
> > Cc: Rik van Riel <r...@redhat.com>
> > Cc: Andrew Morton <a...@linux-foundation.org>
> > Signed-off-by: Ben Hutchings <b...@decadent.org.uk>
> > Cc: Yijing Wang <wangyij...@huawei.com>
> > Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.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.dea...@arm.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

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to