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 1/8] xen/grant-table: Make set/clear page private code shared Date: Fri, 25 May 2018 18:33:24 +0300 [thread overview] Message-ID: <20180525153331.31188-2-andr2000@gmail.com> (raw) In-Reply-To: <20180525153331.31188-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> --- 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 27be107d6480..d7488226e1f2 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(gnttab_alloc_pages); +EXPORT_SYMBOL(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(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(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(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.0
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 1/8] xen/grant-table: Make set/clear page private code shared Date: Fri, 25 May 2018 18:33:24 +0300 [thread overview] Message-ID: <20180525153331.31188-2-andr2000@gmail.com> (raw) In-Reply-To: <20180525153331.31188-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> --- 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 27be107d6480..d7488226e1f2 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(gnttab_alloc_pages); +EXPORT_SYMBOL(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(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(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(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.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-05-25 15:35 UTC|newest] Thread overview: 115+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-25 15:33 [PATCH 0/8] xen: dma-buf support for grant device Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko [this message] 2018-05-25 15:33 ` [PATCH 1/8] xen/grant-table: Make set/clear page private code shared Oleksandr Andrushchenko 2018-05-29 17:39 ` Boris Ostrovsky 2018-05-29 17:39 ` Boris Ostrovsky 2018-05-30 4:24 ` Juergen Gross 2018-05-30 5:27 ` Oleksandr Andrushchenko 2018-05-30 5:27 ` Oleksandr Andrushchenko 2018-05-30 4:24 ` Juergen Gross 2018-05-30 21:34 ` Dongwon Kim 2018-05-30 21:34 ` Dongwon Kim 2018-05-31 5:37 ` Oleksandr Andrushchenko 2018-05-31 5:37 ` Oleksandr Andrushchenko 2018-05-31 5:37 ` Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-25 15:33 ` [PATCH 2/8] xen/balloon: Move common memory reservation routines to a module Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-29 18:04 ` Boris Ostrovsky 2018-05-29 18:04 ` Boris Ostrovsky 2018-05-29 18:22 ` Oleksandr Andrushchenko 2018-05-29 18:22 ` Oleksandr Andrushchenko 2018-05-29 20:03 ` Boris Ostrovsky 2018-05-29 20:03 ` Boris Ostrovsky 2018-05-30 8:29 ` Oleksandr Andrushchenko 2018-05-30 15:54 ` Boris Ostrovsky 2018-05-30 15:54 ` Boris Ostrovsky 2018-05-30 17:46 ` Oleksandr Andrushchenko 2018-05-30 17:46 ` Oleksandr Andrushchenko 2018-05-30 19:24 ` Boris Ostrovsky 2018-05-30 19:24 ` Boris Ostrovsky 2018-05-31 7:51 ` Oleksandr Andrushchenko 2018-05-31 7:51 ` Oleksandr Andrushchenko 2018-05-31 14:29 ` Oleksandr Andrushchenko 2018-05-31 14:29 ` Oleksandr Andrushchenko 2018-05-31 7:51 ` Oleksandr Andrushchenko 2018-05-30 8:29 ` Oleksandr Andrushchenko 2018-05-29 18:22 ` Oleksandr Andrushchenko 2018-05-29 18:24 ` Boris Ostrovsky 2018-05-29 18:24 ` Boris Ostrovsky 2018-05-29 18:23 ` Oleksandr Andrushchenko 2018-05-29 18:23 ` Oleksandr Andrushchenko 2018-05-29 18:23 ` Oleksandr Andrushchenko 2018-05-30 4:32 ` Juergen Gross 2018-05-30 5:30 ` Oleksandr Andrushchenko 2018-05-30 5:30 ` Oleksandr Andrushchenko 2018-05-30 4:32 ` Juergen Gross 2018-05-25 15:33 ` [PATCH 3/8] xen/grant-table: Allow allocating buffers suitable for DMA Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-29 19:10 ` Boris Ostrovsky 2018-05-30 6:34 ` Oleksandr Andrushchenko 2018-05-30 6:34 ` Oleksandr Andrushchenko 2018-05-30 15:20 ` Boris Ostrovsky 2018-05-30 15:20 ` Boris Ostrovsky 2018-05-30 17:49 ` Oleksandr Andrushchenko 2018-05-30 17:49 ` Oleksandr Andrushchenko 2018-05-30 19:25 ` Boris Ostrovsky 2018-05-30 19:25 ` Boris Ostrovsky 2018-05-30 6:34 ` Oleksandr Andrushchenko 2018-05-29 19:10 ` Boris Ostrovsky 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-25 15:33 ` [PATCH 4/8] xen/gntdev: Allow mappings for DMA buffers Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-29 21:52 ` Boris Ostrovsky 2018-05-30 6:47 ` Oleksandr Andrushchenko 2018-05-30 6:47 ` Oleksandr Andrushchenko 2018-05-30 6:47 ` Oleksandr Andrushchenko 2018-05-29 21:52 ` Boris Ostrovsky 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-25 15:33 ` [PATCH 5/8] xen/gntdev: Add initial support for dma-buf UAPI Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-29 22:34 ` Boris Ostrovsky 2018-05-30 6:52 ` Oleksandr Andrushchenko 2018-05-30 6:52 ` Oleksandr Andrushchenko 2018-05-30 6:52 ` Oleksandr Andrushchenko 2018-05-29 22:34 ` Boris Ostrovsky 2018-05-30 6:52 ` Oleksandr Andrushchenko 2018-05-30 6:52 ` Oleksandr Andrushchenko 2018-05-30 6:52 ` Oleksandr Andrushchenko 2018-05-25 15:33 ` [PATCH 6/8] xen/gntdev: Implement dma-buf export functionality Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-30 23:10 ` Dongwon Kim 2018-05-30 23:10 ` Dongwon Kim 2018-05-31 5:55 ` Oleksandr Andrushchenko 2018-05-31 5:55 ` Oleksandr Andrushchenko 2018-05-31 14:32 ` Oleksandr Andrushchenko 2018-05-31 14:32 ` Oleksandr Andrushchenko 2018-05-31 14:32 ` Oleksandr Andrushchenko 2018-05-31 5:55 ` Oleksandr Andrushchenko 2018-05-30 23:10 ` Dongwon Kim 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-25 15:33 ` [PATCH 7/8] xen/gntdev: Implement dma-buf import functionality Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-25 15:33 ` [PATCH 8/8] xen/gntdev: Expose gntdev's dma-buf API for in-kernel use Oleksandr Andrushchenko 2018-05-25 15:33 ` Oleksandr Andrushchenko 2018-05-30 8:32 ` Oleksandr Andrushchenko 2018-05-30 8:32 ` Oleksandr Andrushchenko 2018-05-31 1:46 ` [PATCH 0/8] xen: dma-buf support for grant device Boris Ostrovsky 2018-05-31 5:51 ` Oleksandr Andrushchenko 2018-05-31 5:51 ` Oleksandr Andrushchenko 2018-05-31 14:41 ` Oleksandr Andrushchenko 2018-05-31 14:41 ` Oleksandr Andrushchenko 2018-05-31 20:25 ` Boris Ostrovsky 2018-05-31 20:25 ` Boris Ostrovsky 2018-06-01 5:42 ` Oleksandr Andrushchenko 2018-06-01 5:42 ` Oleksandr Andrushchenko 2018-06-01 5:42 ` Oleksandr Andrushchenko 2018-05-31 14:41 ` Oleksandr Andrushchenko 2018-05-31 19:36 ` Boris Ostrovsky 2018-05-31 19:36 ` Boris Ostrovsky 2018-05-31 5:51 ` Oleksandr Andrushchenko 2018-05-31 1:46 ` 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=20180525153331.31188-2-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.