drivers/gpu/drm/xe/xe_map.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/xe/xe_map.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/xe/xe_map.h- Extension
.h- Size
- 2662 bytes
- Lines
- 94
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/iosys-map.hxe_device.h
Detected Declarations
function devicefunction xe_map_memcpy_fromfunction xe_map_memsetfunction xe_map_read32function xe_map_write32
Annotated Snippet
#ifndef _XE_MAP_H_
#define _XE_MAP_H_
#include <linux/iosys-map.h>
#include <xe_device.h>
/**
* DOC: Map layer
*
* All access to any memory shared with a device (both sysmem and vram) in the
* Xe driver should go through this layer (xe_map). This layer is built on top
* of :ref:`driver-api/device-io:Generalizing Access to System and I/O Memory`
* and with extra hooks into the Xe driver that allows adding asserts to memory
* accesses (e.g. for blocking runtime_pm D3Cold on Discrete Graphics).
*/
static inline void xe_map_memcpy_to(struct xe_device *xe, struct iosys_map *dst,
size_t dst_offset, const void *src,
size_t len)
{
xe_device_assert_mem_access(xe);
iosys_map_memcpy_to(dst, dst_offset, src, len);
}
static inline void xe_map_memcpy_from(struct xe_device *xe, void *dst,
const struct iosys_map *src,
size_t src_offset, size_t len)
{
xe_device_assert_mem_access(xe);
iosys_map_memcpy_from(dst, src, src_offset, len);
}
static inline void xe_map_memset(struct xe_device *xe,
struct iosys_map *dst, size_t offset,
int value, size_t len)
{
xe_device_assert_mem_access(xe);
iosys_map_memset(dst, offset, value, len);
}
/* FIXME: We likely should kill these two functions sooner or later */
static inline u32 xe_map_read32(struct xe_device *xe, struct iosys_map *map)
{
xe_device_assert_mem_access(xe);
if (map->is_iomem)
return readl(map->vaddr_iomem);
else
return READ_ONCE(*(u32 *)map->vaddr);
}
static inline void xe_map_write32(struct xe_device *xe, struct iosys_map *map,
u32 val)
{
xe_device_assert_mem_access(xe);
if (map->is_iomem)
writel(val, map->vaddr_iomem);
else
*(u32 *)map->vaddr = val;
}
#define xe_map_rd(xe__, map__, offset__, type__) ({ \
struct xe_device *__xe = xe__; \
xe_device_assert_mem_access(__xe); \
iosys_map_rd(map__, offset__, type__); \
})
#define xe_map_wr(xe__, map__, offset__, type__, val__) ({ \
struct xe_device *__xe = xe__; \
xe_device_assert_mem_access(__xe); \
iosys_map_wr(map__, offset__, type__, val__); \
})
#define xe_map_rd_field(xe__, map__, struct_offset__, struct_type__, field__) ({ \
struct xe_device *__xe = xe__; \
xe_device_assert_mem_access(__xe); \
iosys_map_rd_field(map__, struct_offset__, struct_type__, field__); \
})
#define xe_map_wr_field(xe__, map__, struct_offset__, struct_type__, field__, val__) ({ \
struct xe_device *__xe = xe__; \
xe_device_assert_mem_access(__xe); \
iosys_map_wr_field(map__, struct_offset__, struct_type__, field__, val__); \
})
#endif
Annotation
- Immediate include surface: `linux/iosys-map.h`, `xe_device.h`.
- Detected declarations: `function device`, `function xe_map_memcpy_from`, `function xe_map_memset`, `function xe_map_read32`, `function xe_map_write32`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.