All of lore.kernel.org
 help / color / mirror / Atom feed
From: Souptick Joarder <jrdr.linux@gmail.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: Andy Lutomirski <luto@amacapital.net>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	X86 ML <x86@kernel.org>,
	linux-kernel@vger.kernel.org,
	Brajeswar Ghosh <brajeswar.linux@gmail.com>,
	Sabyasachi Gupta <sabyasachi.linux@gmail.com>
Subject: Re: [PATCH 1/3] mm: Introduce vmf_insert_pfn_prot
Date: Thu, 26 Jul 2018 17:04:44 +0530	[thread overview]
Message-ID: <CAFqt6zbBHBCXO6qhYp3aSYj-zXSH8T=DDOd9gVY88K93qMgGvA@mail.gmail.com> (raw)
In-Reply-To: <20180703123910.2180-1-willy@infradead.org>

On Tue, Jul 3, 2018 at 6:09 PM, Matthew Wilcox <willy@infradead.org> wrote:
> Like vm_insert_pfn_prot(), but returns a vm_fault_t instead of an errno.
> Also unexport vm_insert_pfn_prot as it has no modular users.
>
> Signed-off-by: Matthew Wilcox <willy@infradead.org>
> ---

Any comment on this patch ?

>  include/linux/mm.h |  2 ++
>  mm/memory.c        | 47 ++++++++++++++++++++++++++++++----------------
>  2 files changed, 33 insertions(+), 16 deletions(-)
>
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 1a9d6bd97f00..3cb763a38642 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -2441,6 +2441,8 @@ int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr,
>                         unsigned long pfn);
>  int vm_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr,
>                         unsigned long pfn, pgprot_t pgprot);
> +vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr,
> +                       unsigned long pfn, pgprot_t pgprot);
>  int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr,
>                         pfn_t pfn);
>  vm_fault_t vmf_insert_mixed_mkwrite(struct vm_area_struct *vma,
> diff --git a/mm/memory.c b/mm/memory.c
> index b9ebd883e27c..caecb4d995ac 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -1852,21 +1852,6 @@ int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr,
>  }
>  EXPORT_SYMBOL(vm_insert_pfn);
>
> -/**
> - * vm_insert_pfn_prot - insert single pfn into user vma with specified pgprot
> - * @vma: user vma to map to
> - * @addr: target user address of this page
> - * @pfn: source kernel pfn
> - * @pgprot: pgprot flags for the inserted page
> - *
> - * This is exactly like vm_insert_pfn, except that it allows drivers to
> - * to override pgprot on a per-page basis.
> - *
> - * This only makes sense for IO mappings, and it makes no sense for
> - * cow mappings.  In general, using multiple vmas is preferable;
> - * vm_insert_pfn_prot should only be used if using multiple VMAs is
> - * impractical.
> - */
>  int vm_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr,
>                         unsigned long pfn, pgprot_t pgprot)
>  {
> @@ -1893,7 +1878,37 @@ int vm_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr,
>
>         return ret;
>  }
> -EXPORT_SYMBOL(vm_insert_pfn_prot);
> +
> +/**
> + * vmf_insert_pfn_prot - insert single pfn into user vma with specified pgprot
> + * @vma: user vma to map to
> + * @addr: target user address of this page
> + * @pfn: source kernel pfn
> + * @pgprot: pgprot flags for the inserted page
> + *
> + * This is exactly like vmf_insert_pfn(), except that it allows drivers to
> + * to override pgprot on a per-page basis.
> + *
> + * This only makes sense for IO mappings, and it makes no sense for
> + * COW mappings.  In general, using multiple vmas is preferable;
> + * vm_insert_pfn_prot should only be used if using multiple VMAs is
> + * impractical.
> + *
> + * Return: vm_fault_t value.
> + */
> +vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr,
> +                       unsigned long pfn, pgprot_t pgprot)
> +{
> +       int err = vm_insert_pfn_prot(vma, addr, pfn, pgprot);
> +
> +       if (err == -ENOMEM)
> +               return VM_FAULT_OOM;
> +       if (err < 0 && err != -EBUSY)
> +               return VM_FAULT_SIGBUS;
> +
> +       return VM_FAULT_NOPAGE;
> +}
> +EXPORT_SYMBOL(vmf_insert_pfn_prot);
>
>  static bool vm_mixed_ok(struct vm_area_struct *vma, pfn_t pfn)
>  {
> --
> 2.18.0
>

      parent reply	other threads:[~2018-07-26 11:34 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-03 12:39 [PATCH 1/3] mm: Introduce vmf_insert_pfn_prot Matthew Wilcox
2018-07-03 12:39 ` [PATCH 2/3] x86: Convert vdso to use vm_fault_t Matthew Wilcox
2018-07-16  9:17   ` Thomas Gleixner
2018-08-03 12:34     ` Souptick Joarder
2018-08-03 13:14       ` Thomas Gleixner
2018-08-27 15:31         ` Souptick Joarder
2018-08-27 18:05           ` Matthew Wilcox
2018-08-28  6:18             ` Souptick Joarder
2018-07-03 12:39 ` [PATCH 3/3] mm: Make vm_insert_pfn_prot static Matthew Wilcox
2018-07-26 11:35   ` Souptick Joarder
2018-07-26 11:34 ` Souptick Joarder [this message]

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='CAFqt6zbBHBCXO6qhYp3aSYj-zXSH8T=DDOd9gVY88K93qMgGvA@mail.gmail.com' \
    --to=jrdr.linux@gmail.com \
    --cc=brajeswar.linux@gmail.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mingo@redhat.com \
    --cc=sabyasachi.linux@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=willy@infradead.org \
    --cc=x86@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.