From: Mike Looijmans <mike.looijmans@topic.nl>
To: gregkh@linuxfoundation.org
Cc: Mike Looijmans <mike.looijmans@topic.nl>, linux-kernel@vger.kernel.org
Subject: [PATCH] uio: Provide UIO_MEM_PHYS_WC for write-combine mappings
Date: Wed, 14 Jan 2026 11:51:49 +0100 [thread overview]
Message-ID: <20260114105149.1725098-1-mike.looijmans@topic.nl> (raw)
In-Reply-To: <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.65d15247-f1fa-4fe2-a8f9-10b1259d8649@emailsignatures365.codetwo.com>
Introduce UIO_MEM_PHYS_WC which is identical to UIO_MEM_PHYS except
that the mapping will enable write-combining. This allows the system to
coalesce writes and greatly improves performance if the underlying
hardware allows that. Typically used for video buffers, but also very
well suited for filling FPGA (block)RAMs with reference data.
Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
---
drivers/uio/uio.c | 3 +++
include/linux/uio_driver.h | 1 +
2 files changed, 4 insertions(+)
diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
index fa0d4e6aee16..c33db04d2004 100644
--- a/drivers/uio/uio.c
+++ b/drivers/uio/uio.c
@@ -757,6 +757,8 @@ static int uio_mmap_physical(struct vm_area_struct *vma)
vma->vm_ops = &uio_physical_vm_ops;
if (idev->info->mem[mi].memtype == UIO_MEM_PHYS)
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
+ else if (idev->info->mem[mi].memtype == UIO_MEM_PHYS_WC)
+ vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
/*
* We cannot use the vm_iomap_memory() helper here,
@@ -858,6 +860,7 @@ static int uio_mmap(struct file *filep, struct vm_area_struct *vma)
switch (idev->info->mem[mi].memtype) {
case UIO_MEM_IOVA:
case UIO_MEM_PHYS:
+ case UIO_MEM_PHYS_WC:
ret = uio_mmap_physical(vma);
break;
case UIO_MEM_LOGICAL:
diff --git a/include/linux/uio_driver.h b/include/linux/uio_driver.h
index 334641e20fb1..b925b8c17214 100644
--- a/include/linux/uio_driver.h
+++ b/include/linux/uio_driver.h
@@ -171,6 +171,7 @@ extern int __must_check
* Do not use in new drivers.
*/
#define UIO_MEM_DMA_COHERENT 5
+#define UIO_MEM_PHYS_WC 6
/* defines for uio_port->porttype */
#define UIO_PORT_NONE 0
--
2.34.1
Met vriendelijke groet / kind regards,
Mike Looijmans
System Expert
TOPIC Embedded Products B.V.
Materiaalweg 4, 5681 RJ Best
The Netherlands
T: +31 (0) 499 33 69 69
E: mike.looijmans@topic.nl
W: www.topic.nl
Please consider the environment before printing this e-mail
next parent reply other threads:[~2026-01-14 10:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.65d15247-f1fa-4fe2-a8f9-10b1259d8649@emailsignatures365.codetwo.com>
2026-01-14 10:51 ` Mike Looijmans [this message]
2026-01-14 11:24 ` Greg KH
2026-01-14 11:45 ` Mike Looijmans
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=20260114105149.1725098-1-mike.looijmans@topic.nl \
--to=mike.looijmans@topic.nl \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®