From: Dave Airlie <airlied@gmail.com>
To: dri-devel@lists.freedesktop.org, tzimmermann@suse.de
Cc: intel-xe@lists.freedesktop.org
Subject: [PATCH 1/9] iosys-map: add new accessor interfaces and use them internally.
Date: Thu, 22 May 2025 16:52:10 +1000 [thread overview]
Message-ID: <20250522065519.318013-2-airlied@gmail.com> (raw)
In-Reply-To: <20250522065519.318013-1-airlied@gmail.com>
From: Dave Airlie <airlied@redhat.com>
This adds accessors inlines to the iosys-map. The intent is to
roll the iomem flag into the lower bits of the vaddr eventually.
First just add accessors to move all current in-tree users over to.
Signed-off-by: Dave Airlie <airlied@redhat.com>
---
include/linux/iosys-map.h | 53 +++++++++++++++++++++++++--------------
1 file changed, 34 insertions(+), 19 deletions(-)
diff --git a/include/linux/iosys-map.h b/include/linux/iosys-map.h
index 4696abfd311c..5ce5df1db60a 100644
--- a/include/linux/iosys-map.h
+++ b/include/linux/iosys-map.h
@@ -114,6 +114,21 @@ struct iosys_map {
bool is_iomem;
};
+static inline bool iosys_map_is_iomem(const struct iosys_map *map)
+{
+ return map->is_iomem;
+}
+
+static inline void __iomem *iosys_map_ioptr(const struct iosys_map *map)
+{
+ return map->vaddr_iomem;
+}
+
+static inline void *iosys_map_ptr(const struct iosys_map *map)
+{
+ return map->vaddr;
+}
+
/**
* IOSYS_MAP_INIT_VADDR - Initializes struct iosys_map to an address in system memory
* @vaddr_: A system-memory address
@@ -234,9 +249,9 @@ static inline bool iosys_map_is_equal(const struct iosys_map *lhs,
*/
static inline bool iosys_map_is_null(const struct iosys_map *map)
{
- if (map->is_iomem)
- return !map->vaddr_iomem;
- return !map->vaddr;
+ if (iosys_map_is_iomem(map))
+ return !iosys_map_ioptr(map);
+ return !iosys_map_ptr(map);
}
/**
@@ -286,10 +301,10 @@ static inline void iosys_map_clear(struct iosys_map *map)
static inline void iosys_map_memcpy_to(struct iosys_map *dst, size_t dst_offset,
const void *src, size_t len)
{
- if (dst->is_iomem)
- memcpy_toio(dst->vaddr_iomem + dst_offset, src, len);
+ if (iosys_map_is_iomem(dst))
+ memcpy_toio(iosys_map_ioptr(dst) + dst_offset, src, len);
else
- memcpy(dst->vaddr + dst_offset, src, len);
+ memcpy(iosys_map_ptr(dst) + dst_offset, src, len);
}
/**
@@ -306,10 +321,10 @@ static inline void iosys_map_memcpy_to(struct iosys_map *dst, size_t dst_offset,
static inline void iosys_map_memcpy_from(void *dst, const struct iosys_map *src,
size_t src_offset, size_t len)
{
- if (src->is_iomem)
- memcpy_fromio(dst, src->vaddr_iomem + src_offset, len);
+ if (iosys_map_is_iomem(src))
+ memcpy_fromio(dst, iosys_map_ioptr(src) + src_offset, len);
else
- memcpy(dst, src->vaddr + src_offset, len);
+ memcpy(dst, iosys_map_ptr(src) + src_offset, len);
}
/**
@@ -322,7 +337,7 @@ static inline void iosys_map_memcpy_from(void *dst, const struct iosys_map *src,
*/
static inline void iosys_map_incr(struct iosys_map *map, size_t incr)
{
- if (map->is_iomem)
+ if (iosys_map_is_iomem(map))
map->vaddr_iomem += incr;
else
map->vaddr += incr;
@@ -341,10 +356,10 @@ static inline void iosys_map_incr(struct iosys_map *map, size_t incr)
static inline void iosys_map_memset(struct iosys_map *dst, size_t offset,
int value, size_t len)
{
- if (dst->is_iomem)
- memset_io(dst->vaddr_iomem + offset, value, len);
+ if (iosys_map_is_iomem(dst))
+ memset_io(iosys_map_ioptr(dst) + offset, value, len);
else
- memset(dst->vaddr + offset, value, len);
+ memset(iosys_map_ptr(dst) + offset, value, len);
}
#ifdef CONFIG_64BIT
@@ -393,10 +408,10 @@ static inline void iosys_map_memset(struct iosys_map *dst, size_t offset,
*/
#define iosys_map_rd(map__, offset__, type__) ({ \
type__ val_; \
- if ((map__)->is_iomem) { \
- __iosys_map_rd_io(val_, (map__)->vaddr_iomem + (offset__), type__); \
+ if (iosys_map_is_iomem(map__)) { \
+ __iosys_map_rd_io(val_, iosys_map_ioptr(map__) + (offset__), type__); \
} else { \
- __iosys_map_rd_sys(val_, (map__)->vaddr + (offset__), type__); \
+ __iosys_map_rd_sys(val_, iosys_map_ptr(map__) + (offset__), type__); \
} \
val_; \
})
@@ -415,10 +430,10 @@ static inline void iosys_map_memset(struct iosys_map *dst, size_t offset,
*/
#define iosys_map_wr(map__, offset__, type__, val__) ({ \
type__ val_ = (val__); \
- if ((map__)->is_iomem) { \
- __iosys_map_wr_io(val_, (map__)->vaddr_iomem + (offset__), type__); \
+ if (iosys_map_is_iomem(map__)) { \
+ __iosys_map_wr_io(val_, iosys_map_ioptr(map__) + (offset__), type__); \
} else { \
- __iosys_map_wr_sys(val_, (map__)->vaddr + (offset__), type__); \
+ __iosys_map_wr_sys(val_, iosys_map_ptr(map__) + (offset__), type__); \
} \
})
--
2.49.0
next prev parent reply other threads:[~2025-05-22 6:56 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-22 6:52 iosys-map: refactor to reduce struct size Dave Airlie
2025-05-22 6:52 ` Dave Airlie [this message]
2025-05-22 11:58 ` [PATCH 1/9] iosys-map: add new accessor interfaces and use them internally Thomas Zimmermann
2025-05-22 13:34 ` Lucas De Marchi
2025-05-22 14:00 ` Thomas Zimmermann
2025-05-22 6:52 ` [PATCH 2/9] udmabuf: use new iosys_map accessors Dave Airlie
2025-05-22 6:52 ` [PATCH 3/9] firmware/tegra: avoid accessing iosys_map internals Dave Airlie
2025-05-23 0:32 ` kernel test robot
2025-05-22 6:52 ` [PATCH 4/9] drm/xe: avoid accessing internals of iosys_map Dave Airlie
2025-05-22 13:56 ` Lucas De Marchi
2025-05-22 6:52 ` [PATCH 5/9] drm/qxl: avoid accessing iosys_map internals Dave Airlie
2025-05-22 13:39 ` Lucas De Marchi
2025-05-22 6:52 ` [PATCH 6/9] drm/ttm: " Dave Airlie
2025-05-22 6:52 ` [PATCH 7/9] drm: " Dave Airlie
2025-05-22 6:52 ` [PATCH 8/9] iosys: hide internal details of implementation Dave Airlie
2025-05-22 12:05 ` Thomas Zimmermann
2025-05-22 23:30 ` kernel test robot
2025-05-22 6:52 ` [PATCH 9/9] iosys_map: embed the is_iomem bit into the pointer Dave Airlie
2025-05-22 8:48 ` Jani Nikula
2025-05-22 12:10 ` Thomas Zimmermann
2025-05-22 15:09 ` Lucas De Marchi
2025-05-22 20:32 ` Dave Airlie
2025-05-22 21:05 ` Lucas De Marchi
2025-05-23 12:31 ` Jocelyn Falempe
2025-05-26 6:39 ` Thomas Zimmermann
2025-05-26 7:58 ` Dave Airlie
2025-05-26 8:14 ` Thomas Zimmermann
2025-05-22 7:13 ` iosys-map: refactor to reduce struct size Dave Airlie
2025-05-22 7:20 ` ✓ CI.Patch_applied: success for series starting with [1/9] iosys-map: add new accessor interfaces and use them internally Patchwork
2025-05-22 7:20 ` ✗ CI.checkpatch: warning " Patchwork
2025-05-22 7:21 ` ✗ CI.KUnit: failure " Patchwork
2025-05-22 12:00 ` iosys-map: refactor to reduce struct size Thomas Zimmermann
2025-05-22 13:59 ` Lucas De Marchi
2025-06-27 17:31 ` Lucas De Marchi
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=20250522065519.318013-2-airlied@gmail.com \
--to=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=tzimmermann@suse.de \
/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.