[Intel-gfx] [PATCH v2 0/5] drm/i915: Allow user to set cache at BO creation

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Thu Apr 27 14:33:33 UTC 2023


On 26/04/2023 16:41, Yang, Fei wrote:
>  > On 26/04/2023 07:24, fei.yang at intel.com wrote:
>  >> From: Fei Yang <fei.yang at intel.com>
>  >>
>  >> The first three patches in this series are taken from
>  >> https://patchwork.freedesktop.org/series/116868/
>  >> These patches are included here because the last patch
>  >> has dependency on the pat_index refactor.
>  >>
>  >> This series is focusing on uAPI changes,
>  >> 1. end support for set caching ioctl [PATCH 4/5]
>  >> 2. add set_pat extension for gem_create [PATCH 5/5]
>  >>
>  >> v2: drop one patch that was merged separately
>  >>      341ad0e8e254 drm/i915/mtl: Add PTE encode function
>  >
>  > Are the re-sends for stabilizing the series, or focusing on merge?
> 
> v2 was sent just to drop one of patches that has already been merged.
> 
>  > If the latter then opens are:
>  >
>  > 1) Link to Mesa MR reviewed and ready to merge.
>  >
>  > 2) IGT reviewed.
>  >
>  > 3) I raised an open that get/set_caching should not "lie" but return an
>  > error if set pat extension has been used. I don't see a good reason not
>  > to do that.
> 
> I don't think it's "lying" to the userspace. the comparison is only valid
> for objects created by KMD because only such object uses the pat_index
> from the cachelevel_to_pat table.

Lets double check my understanding is correct. Userspace sequence of 
operations:

1)
obj = gem_create()+set_pat(PAT_UC)

2a)
get_caching(obj)

What gets reported?

2b)
set_caching(obj, I915_CACHE_LLC)

What is the return code?

If answer to 2a is I915_CACHING_CACHED and to 2b) success, then please 
state a good reason why both shouldn't return an error.

> 
>  > + Joonas on this one.
>  >
>  > 4) Refactoring as done is not very pretty and I proposed an idea for a
>  > nicer approach. Feasible or not, open for discussion.
> 
> Still digesting your proposal. but not sure how would you define things
> like PAT_UC as that is platform dependent, not a constant.

"PAT_UC" in my outline was purely a driver specific value, similarly as 
I915_CACHE_... are. With the whole point that driver can ask if 
something is uncached, WT or whatever. Using the platform specific 
mapping table which converts platform specific obj->pat_index to driver 
representation of caching modes (PAT_UC etc).

Quite possible I missed some detail, but if I haven't then it could be 
a neat and lightweight solution.

Regards,

Tvrtko


More information about the dri-devel mailing list