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@xxxxxxxxxxxxxxx> > > > > 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@xxxxxxx> > > Cc: Rik van Riel <riel@xxxxxxxxxx> > > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > > Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx> > > Cc: Yijing Wang <wangyijing@xxxxxxxxxx> > > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > > > > --- > > 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@xxxxxxx> > 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