[igt-dev] [i-g-t, V3] lib/i915: Use FIXED mapping only for discrete memory
Matthew Auld
matthew.auld at intel.com
Wed Sep 1 10:03:42 UTC 2021
On 31/08/2021 19:02, Dixit, Ashutosh wrote:
> On Mon, 30 Aug 2021 23:00:13 -0700, Tejas Upadhyay wrote:
>>
>> The FIXED mapping is only used for discrete, and mapping type
>> is pre-defined. This disables the other type of mmap
>> offsets when discrete memory is used.
>>
>> Taken from kernel commit:
>> commit 7961c5b60f23 ("drm/i915: Add TTM offset argument to mmap.")
>>
>> Changes since V2:
>> - Add previous logic check for GTT offset type - Ashutosh Dixit
>> - Added documentation for library API change - Daniel Vetter
>> Changes since V1:
>> - Make logic more readable - Petri Latvala
>>
>> Signed-off-by: Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay at intel.com>
>> ---
>> include/drm-uapi/i915_drm.h | 1 +
>> lib/i915/gem_mman.c | 20 +++++++++++++++++++-
>> 2 files changed, 20 insertions(+), 1 deletion(-)
>>
>> diff --git a/include/drm-uapi/i915_drm.h b/include/drm-uapi/i915_drm.h
>> index a1c0030c..b46367f2 100644
>> --- a/include/drm-uapi/i915_drm.h
>> +++ b/include/drm-uapi/i915_drm.h
>> @@ -871,6 +871,7 @@ struct drm_i915_gem_mmap_offset {
>> #define I915_MMAP_OFFSET_WC 1
>> #define I915_MMAP_OFFSET_WB 2
>> #define I915_MMAP_OFFSET_UC 3
>> +#define I915_MMAP_OFFSET_FIXED 4
>
> I don't believe we can add stuff to i915_drm.h like this we need to sync
> with the kernel in drm-next? Also I915_MMAP_OFFSET_FIXED is already
> available in lib/i915/i915_drm_local.h, so do we need to add this?
>
> Matt, do you have any comments on this since you introduced the FIXED mmap
> type? I am ok with the patch otherwise. Thanks.
Yeah, the header sync should probably be a separate change, including
removing the version in i915_drm_local.h.
>
>>
>> /*
>> * Zero-terminated chain of extensions.
>> diff --git a/lib/i915/gem_mman.c b/lib/i915/gem_mman.c
>> index 0406a0b9..aa9ac6f3 100644
>> --- a/lib/i915/gem_mman.c
>> +++ b/lib/i915/gem_mman.c
>> @@ -73,9 +73,27 @@ bool gem_has_legacy_mmap(int fd)
>> return errno != EOPNOTSUPP;
>> }
>>
>> +/**
>> + * gem_has_mmap_offset_type:
>> + * @fd: open i915 drm file descriptor
>> + * @*t: pointer to mmap_offset
>> + *
>> + * This functions checks the mmap offset type is supported or not.
>> + * For discrete memory only FIXED mmap_offset type is supported
>> + * and for non-discrete memory all other offset type except FIXED
>> + * are supported.
>> + *
>> + * Returns: True if supported or False if not.
>> + */
>> bool gem_has_mmap_offset_type(int fd, const struct mmap_offset *t)
>> {
>> - return gem_has_mmap_offset(fd) || t->type == I915_MMAP_OFFSET_GTT;
>> + if (gem_has_mmap_offset(fd))
>> + if (gem_has_lmem(fd))
>> + return t->type == I915_MMAP_OFFSET_FIXED;
>> + else
>> + return t->type != I915_MMAP_OFFSET_FIXED;
>> + else
>> + return t->type == I915_MMAP_OFFSET_GTT;
>> }
>>
>> /**
>> --
>> 2.31.1
>>
More information about the igt-dev
mailing list