From: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org>
To: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
Cc: Benjamin Herrenschmidt
<benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>,
Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>,
Greg Kroah-Hartman
<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [PATCH 2/3] dma-mapping: simplify dma_direct get_required_mask
Date: Mon, 10 Sep 2018 08:13:31 +0200 [thread overview]
Message-ID: <20180910061332.28187-3-hch@lst.de> (raw)
In-Reply-To: <20180910061332.28187-1-hch-jcswGhMUV9g@public.gmane.org>
If we use fls64 we don't need to divide the max address into lower
and upper halves.
Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org>
---
drivers/base/platform.c | 18 +++---------------
1 file changed, 3 insertions(+), 15 deletions(-)
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index a255fc8aa483..7812b861b6da 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -1185,21 +1185,9 @@ int __init platform_bus_init(void)
*/
u64 dma_direct_get_required_mask(struct device *dev)
{
- u32 low_totalram = ((max_pfn - 1) << PAGE_SHIFT);
- u32 high_totalram = ((max_pfn - 1) >> (32 - PAGE_SHIFT));
- u64 mask;
-
- if (!high_totalram) {
- /* convert to mask just covering totalram */
- low_totalram = (1 << (fls(low_totalram) - 1));
- low_totalram += low_totalram - 1;
- mask = low_totalram;
- } else {
- high_totalram = (1 << (fls(high_totalram) - 1));
- high_totalram += high_totalram - 1;
- mask = (((u64)high_totalram) << 32) + 0xffffffff;
- }
- return mask;
+ u64 end = ((max_pfn - 1) << PAGE_SHIFT);
+
+ return (1 << (fls64(end) - 1)) * 2 - 1;
}
#ifndef ARCH_HAS_DMA_GET_REQUIRED_MASK
--
2.18.0
WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: iommu@lists.linux-foundation.org
Cc: Marek Szyprowski <m.szyprowski@samsung.com>,
Robin Murphy <robin.murphy@arm.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-kernel@vger.kernel.org
Subject: [PATCH 2/3] dma-mapping: simplify dma_direct get_required_mask
Date: Mon, 10 Sep 2018 08:13:31 +0200 [thread overview]
Message-ID: <20180910061332.28187-3-hch@lst.de> (raw)
In-Reply-To: <20180910061332.28187-1-hch@lst.de>
If we use fls64 we don't need to divide the max address into lower
and upper halves.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/base/platform.c | 18 +++---------------
1 file changed, 3 insertions(+), 15 deletions(-)
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index a255fc8aa483..7812b861b6da 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -1185,21 +1185,9 @@ int __init platform_bus_init(void)
*/
u64 dma_direct_get_required_mask(struct device *dev)
{
- u32 low_totalram = ((max_pfn - 1) << PAGE_SHIFT);
- u32 high_totalram = ((max_pfn - 1) >> (32 - PAGE_SHIFT));
- u64 mask;
-
- if (!high_totalram) {
- /* convert to mask just covering totalram */
- low_totalram = (1 << (fls(low_totalram) - 1));
- low_totalram += low_totalram - 1;
- mask = low_totalram;
- } else {
- high_totalram = (1 << (fls(high_totalram) - 1));
- high_totalram += high_totalram - 1;
- mask = (((u64)high_totalram) << 32) + 0xffffffff;
- }
- return mask;
+ u64 end = ((max_pfn - 1) << PAGE_SHIFT);
+
+ return (1 << (fls64(end) - 1)) * 2 - 1;
}
#ifndef ARCH_HAS_DMA_GET_REQUIRED_MASK
--
2.18.0
next prev parent reply other threads:[~2018-09-10 6:13 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-10 6:13 dma_get_required_mask tidyups Christoph Hellwig
2018-09-10 6:13 ` Christoph Hellwig
2018-09-10 6:13 ` [PATCH 1/3] dma-mapping: make the get_required_mask method available unconditionally Christoph Hellwig
[not found] ` <20180910061332.28187-1-hch-jcswGhMUV9g@public.gmane.org>
2018-09-10 6:13 ` Christoph Hellwig [this message]
2018-09-10 6:13 ` [PATCH 2/3] dma-mapping: simplify dma_direct get_required_mask Christoph Hellwig
2018-09-10 6:13 ` [PATCH 3/3] dma-mapping: use phys_to_dma in dma_direct_get_required Christoph Hellwig
2018-09-19 15:01 ` dma_get_required_mask tidyups Christoph Hellwig
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=20180910061332.28187-3-hch@lst.de \
--to=hch-jcswghmuv9g@public.gmane.org \
--cc=benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=robin.murphy-5wv7dgnIgG8@public.gmane.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.