From: Oleksandr Andrushchenko <andr2000@gmail.com> To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: daniel.vetter@intel.com, andr2000@gmail.com, dongwon.kim@intel.com, matthew.d.roper@intel.com, Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> Subject: [PATCH v3 2/9] xen/grant-table: Make set/clear page private code shared Date: Tue, 12 Jun 2018 16:41:53 +0300 [thread overview] Message-ID: <20180612134200.17456-3-andr2000@gmail.com> (raw) In-Reply-To: <20180612134200.17456-1-andr2000@gmail.com> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> Make set/clear page private code shared and accessible to other kernel modules which can re-use these instead of open-coding. Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> --- drivers/xen/grant-table.c | 54 +++++++++++++++++++++++++-------------- include/xen/grant_table.h | 3 +++ 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c index ba36ff3e4903..dbb48a89e987 100644 --- a/drivers/xen/grant-table.c +++ b/drivers/xen/grant-table.c @@ -769,29 +769,18 @@ void gnttab_free_auto_xlat_frames(void) } EXPORT_SYMBOL_GPL(gnttab_free_auto_xlat_frames); -/** - * gnttab_alloc_pages - alloc pages suitable for grant mapping into - * @nr_pages: number of pages to alloc - * @pages: returns the pages - */ -int gnttab_alloc_pages(int nr_pages, struct page **pages) +int gnttab_pages_set_private(int nr_pages, struct page **pages) { int i; - int ret; - - ret = alloc_xenballooned_pages(nr_pages, pages); - if (ret < 0) - return ret; for (i = 0; i < nr_pages; i++) { #if BITS_PER_LONG < 64 struct xen_page_foreign *foreign; foreign = kzalloc(sizeof(*foreign), GFP_KERNEL); - if (!foreign) { - gnttab_free_pages(nr_pages, pages); + if (!foreign) return -ENOMEM; - } + set_page_private(pages[i], (unsigned long)foreign); #endif SetPagePrivate(pages[i]); @@ -799,14 +788,30 @@ int gnttab_alloc_pages(int nr_pages, struct page **pages) return 0; } -EXPORT_SYMBOL_GPL(gnttab_alloc_pages); +EXPORT_SYMBOL_GPL(gnttab_pages_set_private); /** - * gnttab_free_pages - free pages allocated by gnttab_alloc_pages() - * @nr_pages; number of pages to free - * @pages: the pages + * gnttab_alloc_pages - alloc pages suitable for grant mapping into + * @nr_pages: number of pages to alloc + * @pages: returns the pages */ -void gnttab_free_pages(int nr_pages, struct page **pages) +int gnttab_alloc_pages(int nr_pages, struct page **pages) +{ + int ret; + + ret = alloc_xenballooned_pages(nr_pages, pages); + if (ret < 0) + return ret; + + ret = gnttab_pages_set_private(nr_pages, pages); + if (ret < 0) + gnttab_free_pages(nr_pages, pages); + + return ret; +} +EXPORT_SYMBOL_GPL(gnttab_alloc_pages); + +void gnttab_pages_clear_private(int nr_pages, struct page **pages) { int i; @@ -818,6 +823,17 @@ void gnttab_free_pages(int nr_pages, struct page **pages) ClearPagePrivate(pages[i]); } } +} +EXPORT_SYMBOL_GPL(gnttab_pages_clear_private); + +/** + * gnttab_free_pages - free pages allocated by gnttab_alloc_pages() + * @nr_pages; number of pages to free + * @pages: the pages + */ +void gnttab_free_pages(int nr_pages, struct page **pages) +{ + gnttab_pages_clear_private(nr_pages, pages); free_xenballooned_pages(nr_pages, pages); } EXPORT_SYMBOL_GPL(gnttab_free_pages); diff --git a/include/xen/grant_table.h b/include/xen/grant_table.h index 2e37741f6b8d..de03f2542bb7 100644 --- a/include/xen/grant_table.h +++ b/include/xen/grant_table.h @@ -198,6 +198,9 @@ void gnttab_free_auto_xlat_frames(void); int gnttab_alloc_pages(int nr_pages, struct page **pages); void gnttab_free_pages(int nr_pages, struct page **pages); +int gnttab_pages_set_private(int nr_pages, struct page **pages); +void gnttab_pages_clear_private(int nr_pages, struct page **pages); + int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops, struct gnttab_map_grant_ref *kmap_ops, struct page **pages, unsigned int count); -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Oleksandr Andrushchenko <andr2000@gmail.com> To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: andr2000@gmail.com, daniel.vetter@intel.com, dongwon.kim@intel.com, Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> Subject: [PATCH v3 2/9] xen/grant-table: Make set/clear page private code shared Date: Tue, 12 Jun 2018 16:41:53 +0300 [thread overview] Message-ID: <20180612134200.17456-3-andr2000@gmail.com> (raw) In-Reply-To: <20180612134200.17456-1-andr2000@gmail.com> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> Make set/clear page private code shared and accessible to other kernel modules which can re-use these instead of open-coding. Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> --- drivers/xen/grant-table.c | 54 +++++++++++++++++++++++++-------------- include/xen/grant_table.h | 3 +++ 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c index ba36ff3e4903..dbb48a89e987 100644 --- a/drivers/xen/grant-table.c +++ b/drivers/xen/grant-table.c @@ -769,29 +769,18 @@ void gnttab_free_auto_xlat_frames(void) } EXPORT_SYMBOL_GPL(gnttab_free_auto_xlat_frames); -/** - * gnttab_alloc_pages - alloc pages suitable for grant mapping into - * @nr_pages: number of pages to alloc - * @pages: returns the pages - */ -int gnttab_alloc_pages(int nr_pages, struct page **pages) +int gnttab_pages_set_private(int nr_pages, struct page **pages) { int i; - int ret; - - ret = alloc_xenballooned_pages(nr_pages, pages); - if (ret < 0) - return ret; for (i = 0; i < nr_pages; i++) { #if BITS_PER_LONG < 64 struct xen_page_foreign *foreign; foreign = kzalloc(sizeof(*foreign), GFP_KERNEL); - if (!foreign) { - gnttab_free_pages(nr_pages, pages); + if (!foreign) return -ENOMEM; - } + set_page_private(pages[i], (unsigned long)foreign); #endif SetPagePrivate(pages[i]); @@ -799,14 +788,30 @@ int gnttab_alloc_pages(int nr_pages, struct page **pages) return 0; } -EXPORT_SYMBOL_GPL(gnttab_alloc_pages); +EXPORT_SYMBOL_GPL(gnttab_pages_set_private); /** - * gnttab_free_pages - free pages allocated by gnttab_alloc_pages() - * @nr_pages; number of pages to free - * @pages: the pages + * gnttab_alloc_pages - alloc pages suitable for grant mapping into + * @nr_pages: number of pages to alloc + * @pages: returns the pages */ -void gnttab_free_pages(int nr_pages, struct page **pages) +int gnttab_alloc_pages(int nr_pages, struct page **pages) +{ + int ret; + + ret = alloc_xenballooned_pages(nr_pages, pages); + if (ret < 0) + return ret; + + ret = gnttab_pages_set_private(nr_pages, pages); + if (ret < 0) + gnttab_free_pages(nr_pages, pages); + + return ret; +} +EXPORT_SYMBOL_GPL(gnttab_alloc_pages); + +void gnttab_pages_clear_private(int nr_pages, struct page **pages) { int i; @@ -818,6 +823,17 @@ void gnttab_free_pages(int nr_pages, struct page **pages) ClearPagePrivate(pages[i]); } } +} +EXPORT_SYMBOL_GPL(gnttab_pages_clear_private); + +/** + * gnttab_free_pages - free pages allocated by gnttab_alloc_pages() + * @nr_pages; number of pages to free + * @pages: the pages + */ +void gnttab_free_pages(int nr_pages, struct page **pages) +{ + gnttab_pages_clear_private(nr_pages, pages); free_xenballooned_pages(nr_pages, pages); } EXPORT_SYMBOL_GPL(gnttab_free_pages); diff --git a/include/xen/grant_table.h b/include/xen/grant_table.h index 2e37741f6b8d..de03f2542bb7 100644 --- a/include/xen/grant_table.h +++ b/include/xen/grant_table.h @@ -198,6 +198,9 @@ void gnttab_free_auto_xlat_frames(void); int gnttab_alloc_pages(int nr_pages, struct page **pages); void gnttab_free_pages(int nr_pages, struct page **pages); +int gnttab_pages_set_private(int nr_pages, struct page **pages); +void gnttab_pages_clear_private(int nr_pages, struct page **pages); + int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops, struct gnttab_map_grant_ref *kmap_ops, struct page **pages, unsigned int count); -- 2.17.1 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-06-12 13:44 UTC|newest] Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-06-12 13:41 [PATCH v3 0/9] xen: dma-buf support for grant device Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` [PATCH v3 1/9] xen/grant-table: Export gnttab_{alloc|free}_pages as GPL Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` [PATCH v3 2/9] xen/grant-table: Make set/clear page private code shared Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko [this message] 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` [PATCH v3 3/9] xen/balloon: Share common memory reservation routines Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-13 0:47 ` Boris Ostrovsky 2018-06-13 6:26 ` Oleksandr Andrushchenko 2018-06-13 6:26 ` Oleksandr Andrushchenko 2018-06-13 12:02 ` Boris Ostrovsky 2018-06-13 12:02 ` Boris Ostrovsky 2018-06-13 12:03 ` Oleksandr Andrushchenko 2018-06-13 12:03 ` Oleksandr Andrushchenko 2018-06-13 12:27 ` Oleksandr Andrushchenko 2018-06-13 12:27 ` Oleksandr Andrushchenko 2018-06-13 0:47 ` Boris Ostrovsky 2018-06-13 1:07 ` Boris Ostrovsky 2018-06-13 6:50 ` Oleksandr Andrushchenko 2018-06-13 6:50 ` Oleksandr Andrushchenko 2018-06-13 1:07 ` Boris Ostrovsky 2018-06-12 13:41 ` [PATCH v3 4/9] xen/grant-table: Allow allocating buffers suitable for DMA Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-13 1:12 ` Boris Ostrovsky 2018-06-13 7:07 ` Oleksandr Andrushchenko 2018-06-13 7:07 ` Oleksandr Andrushchenko 2018-06-13 7:07 ` Oleksandr Andrushchenko 2018-06-13 1:12 ` Boris Ostrovsky 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` [PATCH v3 5/9] xen/gntdev: Allow mappings for DMA buffers Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-13 1:26 ` Boris Ostrovsky 2018-06-13 1:26 ` Boris Ostrovsky 2018-06-13 7:16 ` Oleksandr Andrushchenko 2018-06-13 7:16 ` Oleksandr Andrushchenko 2018-06-14 7:00 ` Oleksandr Andrushchenko 2018-06-14 7:00 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` [PATCH v3 6/9] xen/gntdev: Make private routines/structures accessible Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-13 1:38 ` Boris Ostrovsky 2018-06-13 1:38 ` Boris Ostrovsky 2018-06-13 7:23 ` Oleksandr Andrushchenko 2018-06-13 7:23 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` [PATCH v3 7/9] xen/gntdev: Add initial support for dma-buf UAPI Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-13 1:49 ` Boris Ostrovsky 2018-06-13 1:49 ` Boris Ostrovsky 2018-06-13 8:17 ` Oleksandr Andrushchenko 2018-06-13 8:17 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` [PATCH v3 8/9] xen/gntdev: Implement dma-buf export functionality Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-12 13:41 ` Oleksandr Andrushchenko 2018-06-13 2:58 ` Boris Ostrovsky 2018-06-13 11:57 ` Oleksandr Andrushchenko 2018-06-13 11:57 ` Oleksandr Andrushchenko 2018-06-13 22:19 ` Boris Ostrovsky 2018-06-13 22:19 ` Boris Ostrovsky 2018-06-14 5:41 ` Oleksandr Andrushchenko 2018-06-14 5:41 ` Oleksandr Andrushchenko 2018-06-13 2:58 ` Boris Ostrovsky 2018-06-12 13:42 ` [PATCH v3 9/9] xen/gntdev: Implement dma-buf import functionality Oleksandr Andrushchenko 2018-06-13 3:14 ` Boris Ostrovsky 2018-06-13 9:04 ` Oleksandr Andrushchenko 2018-06-13 9:04 ` Oleksandr Andrushchenko 2018-06-13 22:03 ` Boris Ostrovsky 2018-06-13 22:03 ` Boris Ostrovsky 2018-06-14 6:39 ` Oleksandr Andrushchenko 2018-06-14 6:39 ` Oleksandr Andrushchenko 2018-06-13 3:14 ` Boris Ostrovsky 2018-06-12 13:42 ` Oleksandr Andrushchenko 2018-06-14 6:47 ` [PATCH v3 0/9] xen: dma-buf support for grant device Oleksandr Andrushchenko 2018-06-14 6:47 ` Oleksandr Andrushchenko 2018-06-14 17:48 ` Boris Ostrovsky 2018-06-14 17:48 ` Boris Ostrovsky
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=20180612134200.17456-3-andr2000@gmail.com \ --to=andr2000@gmail.com \ --cc=boris.ostrovsky@oracle.com \ --cc=daniel.vetter@intel.com \ --cc=dongwon.kim@intel.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=jgross@suse.com \ --cc=konrad.wilk@oracle.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-media@vger.kernel.org \ --cc=matthew.d.roper@intel.com \ --cc=oleksandr_andrushchenko@epam.com \ --cc=xen-devel@lists.xenproject.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: linkBe 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.