From: Christoph Hellwig <hch@lst.de> To: iommu@lists.linux-foundation.org Cc: Robin Murphy <robin.murphy@arm.com>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Guo Ren <ren_guo@c-sky.com>, Laura Abbott <labbott@redhat.com>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/9] dma-direct: reject highmem pages from dma_alloc_from_contiguous Date: Mon, 5 Nov 2018 13:19:24 +0100 [thread overview] Message-ID: <20181105121931.13481-3-hch@lst.de> (raw) In-Reply-To: <20181105121931.13481-1-hch@lst.de> dma_alloc_from_contiguous can return highmem pages depending on the setup, which a plain non-remapping DMA allocator can't handle. Detect this case and try the normal page allocator instead. Signed-off-by: Christoph Hellwig <hch@lst.de> --- kernel/dma/direct.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c index 680287779b0a..c49849bcced6 100644 --- a/kernel/dma/direct.c +++ b/kernel/dma/direct.c @@ -162,6 +162,18 @@ void *dma_direct_alloc_pages(struct device *dev, size_t size, if (!page) return NULL; + if (PageHighMem(page)) { + /* + * Depending on the cma= arguments and per-arch setup + * dma_alloc_from_contiguous could return highmem pages. + * Without remapping there is no way to return them here, + * so log an error and fail. + */ + dev_info(dev, "Rejecting highmem page from CMA.\n"); + __dma_direct_free_pages(dev, size, page); + return NULL; + } + ret = page_address(page); if (force_dma_unencrypted()) { set_memory_decrypted((unsigned long)ret, 1 << get_order(size)); -- 2.19.1
WARNING: multiple messages have this Message-ID (diff)
From: hch@lst.de (Christoph Hellwig) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 2/9] dma-direct: reject highmem pages from dma_alloc_from_contiguous Date: Mon, 5 Nov 2018 13:19:24 +0100 [thread overview] Message-ID: <20181105121931.13481-3-hch@lst.de> (raw) In-Reply-To: <20181105121931.13481-1-hch@lst.de> dma_alloc_from_contiguous can return highmem pages depending on the setup, which a plain non-remapping DMA allocator can't handle. Detect this case and try the normal page allocator instead. Signed-off-by: Christoph Hellwig <hch@lst.de> --- kernel/dma/direct.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c index 680287779b0a..c49849bcced6 100644 --- a/kernel/dma/direct.c +++ b/kernel/dma/direct.c @@ -162,6 +162,18 @@ void *dma_direct_alloc_pages(struct device *dev, size_t size, if (!page) return NULL; + if (PageHighMem(page)) { + /* + * Depending on the cma= arguments and per-arch setup + * dma_alloc_from_contiguous could return highmem pages. + * Without remapping there is no way to return them here, + * so log an error and fail. + */ + dev_info(dev, "Rejecting highmem page from CMA.\n"); + __dma_direct_free_pages(dev, size, page); + return NULL; + } + ret = page_address(page); if (force_dma_unencrypted()) { set_memory_decrypted((unsigned long)ret, 1 << get_order(size)); -- 2.19.1
next prev parent reply other threads:[~2018-11-05 12:19 UTC|newest] Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-11-05 12:19 move the arm arch_dma_alloc implementation to common code Christoph Hellwig 2018-11-05 12:19 ` Christoph Hellwig 2018-11-05 12:19 ` Christoph Hellwig 2018-11-05 12:19 ` [PATCH 1/9] dma-direct: provide page based alloc/free helpers Christoph Hellwig 2018-11-05 12:19 ` Christoph Hellwig 2018-11-30 19:04 ` Robin Murphy 2018-11-30 19:04 ` Robin Murphy 2018-12-01 16:56 ` Christoph Hellwig 2018-12-01 16:56 ` Christoph Hellwig 2018-11-05 12:19 ` Christoph Hellwig [this message] 2018-11-05 12:19 ` [PATCH 2/9] dma-direct: reject highmem pages from dma_alloc_from_contiguous Christoph Hellwig 2018-11-30 19:04 ` Robin Murphy 2018-11-30 19:04 ` Robin Murphy 2018-12-01 16:57 ` Christoph Hellwig 2018-12-01 16:57 ` Christoph Hellwig 2018-11-05 12:19 ` [PATCH 3/9] dma-mapping: move the remap helpers to a separate file Christoph Hellwig 2018-11-05 12:19 ` Christoph Hellwig 2018-11-30 19:05 ` Robin Murphy 2018-11-30 19:05 ` Robin Murphy 2018-11-30 19:05 ` Robin Murphy 2018-12-01 16:59 ` Christoph Hellwig 2018-12-01 16:59 ` Christoph Hellwig 2018-11-05 12:19 ` [PATCH 4/9] dma-mapping: move the arm64 ncoherent alloc/free support to common code Christoph Hellwig 2018-11-05 12:19 ` Christoph Hellwig 2018-11-15 19:50 ` Will Deacon 2018-11-15 19:50 ` Will Deacon 2018-11-30 19:05 ` Robin Murphy 2018-11-30 19:05 ` Robin Murphy 2018-11-30 19:05 ` Robin Murphy 2018-12-01 17:03 ` Christoph Hellwig 2018-12-01 17:03 ` Christoph Hellwig 2018-12-04 10:09 ` Russell King - ARM Linux 2018-12-04 10:09 ` Russell King - ARM Linux 2018-12-04 10:09 ` Russell King - ARM Linux 2018-12-04 14:22 ` Christoph Hellwig 2018-12-04 14:22 ` Christoph Hellwig 2018-11-05 12:19 ` [PATCH 5/9] dma-mapping: support highmem in the generic remap allocator Christoph Hellwig 2018-11-05 12:19 ` Christoph Hellwig 2018-11-30 19:05 ` Robin Murphy 2018-11-30 19:05 ` Robin Murphy 2018-12-04 8:38 ` Marek Szyprowski 2018-12-04 8:38 ` Marek Szyprowski 2018-12-04 14:23 ` Christoph Hellwig 2018-12-04 14:23 ` Christoph Hellwig 2018-12-04 14:23 ` Christoph Hellwig [not found] ` <CGME20181205101414eucas1p2fdde1c06ad6352293980b94b86b022f9@eucas1p2.samsung.com> 2018-12-05 10:14 ` [PATCH] dma-mapping: fix lack of DMA address assignment in " Marek Szyprowski 2018-12-05 10:14 ` Marek Szyprowski 2018-12-05 12:35 ` Thierry Reding 2018-12-05 12:35 ` Thierry Reding 2018-12-05 13:49 ` Christoph Hellwig 2018-12-05 13:49 ` Christoph Hellwig 2018-11-05 12:19 ` [PATCH 6/9] dma-remap: support DMA_ATTR_NO_KERNEL_MAPPING Christoph Hellwig 2018-11-05 12:19 ` Christoph Hellwig 2018-11-30 19:05 ` Robin Murphy 2018-11-30 19:05 ` Robin Murphy 2018-11-30 19:05 ` Robin Murphy 2018-12-01 17:05 ` Christoph Hellwig 2018-12-01 17:05 ` Christoph Hellwig 2018-12-01 17:05 ` Christoph Hellwig 2018-11-05 12:19 ` [PATCH 7/9] csky: don't select DMA_NONCOHERENT_OPS Christoph Hellwig 2018-11-05 12:19 ` Christoph Hellwig 2018-11-05 15:47 ` Guo Ren 2018-11-05 15:47 ` Guo Ren 2018-11-05 12:19 ` [PATCH 8/9] csky: don't use GFP_DMA in atomic_pool_init Christoph Hellwig 2018-11-05 12:19 ` Christoph Hellwig 2018-11-05 15:47 ` Guo Ren 2018-11-05 15:47 ` Guo Ren 2018-11-05 12:19 ` [PATCH 9/9] csky: use the generic remapping dma alloc implementation Christoph Hellwig 2018-11-05 12:19 ` Christoph Hellwig 2018-11-06 7:01 ` Guo Ren 2018-11-06 7:01 ` Guo Ren 2018-11-09 7:51 ` Christoph Hellwig 2018-11-09 7:51 ` Christoph Hellwig 2018-11-09 7:52 ` move the arm arch_dma_alloc implementation to common code Christoph Hellwig 2018-11-09 7:52 ` Christoph Hellwig 2018-11-15 19:50 ` Will Deacon 2018-11-15 19:50 ` Will Deacon 2018-11-15 19:50 ` Will Deacon 2018-11-15 20:58 ` Robin Murphy 2018-11-15 20:58 ` Robin Murphy 2018-11-27 7:37 ` Christoph Hellwig 2018-11-27 7:37 ` Christoph Hellwig 2018-11-28 12:18 ` Robin Murphy 2018-11-28 12:18 ` Robin Murphy
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=20181105121931.13481-3-hch@lst.de \ --to=hch@lst.de \ --cc=catalin.marinas@arm.com \ --cc=iommu@lists.linux-foundation.org \ --cc=labbott@redhat.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=ren_guo@c-sky.com \ --cc=robin.murphy@arm.com \ --cc=will.deacon@arm.com \ /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.