[1/4] mm: add is_highmem_addr() helper
Commit Message
Add an helper to check if a virtual address is in the highmem region.
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
---
include/linux/highmem.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
Comments
Hi,
On 03/31/2016 05:59 PM, Boris Brezillon wrote:
> Add an helper to check if a virtual address is in the highmem region.
>
> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> ---
> include/linux/highmem.h | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/include/linux/highmem.h b/include/linux/highmem.h
> index bb3f329..13dff37 100644
> --- a/include/linux/highmem.h
> +++ b/include/linux/highmem.h
> @@ -41,6 +41,14 @@ void kmap_flush_unused(void);
>
> struct page *kmap_to_page(void *addr);
>
> +static inline bool is_highmem_addr(const void *x)
> +{
> + unsigned long vaddr = (unsigned long)x;
> +
> + return vaddr >= PKMAP_BASE &&
> + vaddr < ((PKMAP_BASE + LAST_PKMAP) * PAGE_SIZE);
Shouldn't this be:
vaddr < (PKMAP_BASE + (LAST_PKMAP * PAGE_SIZE)) ?
On Mon, 4 Apr 2016 13:44:11 +0530
Vignesh R <vigneshr@ti.com> wrote:
> Hi,
>
> On 03/31/2016 05:59 PM, Boris Brezillon wrote:
> > Add an helper to check if a virtual address is in the highmem region.
> >
> > Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> > ---
> > include/linux/highmem.h | 13 +++++++++++++
> > 1 file changed, 13 insertions(+)
> >
> > diff --git a/include/linux/highmem.h b/include/linux/highmem.h
> > index bb3f329..13dff37 100644
> > --- a/include/linux/highmem.h
> > +++ b/include/linux/highmem.h
> > @@ -41,6 +41,14 @@ void kmap_flush_unused(void);
> >
> > struct page *kmap_to_page(void *addr);
> >
> > +static inline bool is_highmem_addr(const void *x)
> > +{
> > + unsigned long vaddr = (unsigned long)x;
> > +
> > + return vaddr >= PKMAP_BASE &&
> > + vaddr < ((PKMAP_BASE + LAST_PKMAP) * PAGE_SIZE);
>
>
> Shouldn't this be:
> vaddr < (PKMAP_BASE + (LAST_PKMAP * PAGE_SIZE)) ?
Oops, yes indeed.
Anyway, given Russell's feedback I don't think I'm gonna follow up on
this series.
Sorry.
Boris
@@ -41,6 +41,14 @@ void kmap_flush_unused(void);
struct page *kmap_to_page(void *addr);
+static inline bool is_highmem_addr(const void *x)
+{
+ unsigned long vaddr = (unsigned long)x;
+
+ return vaddr >= PKMAP_BASE &&
+ vaddr < ((PKMAP_BASE + LAST_PKMAP) * PAGE_SIZE);
+}
+
#else /* CONFIG_HIGHMEM */
static inline unsigned int nr_free_highpages(void) { return 0; }
@@ -50,6 +58,11 @@ static inline struct page *kmap_to_page(void *addr)
return virt_to_page(addr);
}
+static inline bool is_highmem_addr(const void *x)
+{
+ return false;
+}
+
#define totalhigh_pages 0UL
#ifndef ARCH_HAS_KMAP