[v3,0/9] drm/i915: Replace kmap_atomic() with kmap_local_page()

Message ID 20231203132947.2328805-1-zhao1.liu@linux.intel.com
Headers
Series drm/i915: Replace kmap_atomic() with kmap_local_page() |

Message

Zhao Liu Dec. 3, 2023, 1:29 p.m. UTC
  From: Zhao Liu <zhao1.liu@intel.com>

Hi all,

I refreshed this v3 by rebasing v2 [1] on the commit 968f35f4ab1c
("Merge tag 'v6.7-rc3-smb3-client-fixes' of git://git.samba.org/sfrench/
cifs-2.6").

Based on the current code, I rechecked the substitutions in v2 and they
still stand and are valid, so no code change in v3.

Thanks for all the review! And sorry v2 was missed, I'll pay more
attention to this v3.


Purpose of This Patchset
========================

The purpose of this pacthset is to replace all uses of kmap_atomic() in
i915 with kmap_local_page() because the use of kmap_atomic() is being
deprecated in favor of kmap_local_page()[2]. And 92b64bd (mm/highmem:
add notes about conversions from kmap{,_atomic}()) has declared the
deprecation of kmap_atomic().


Motivation for Deprecating kmap_atomic() and Using kmap_local_page()
====================================================================

The main difference between atomic and local mappings is that local
mappings doesn't disable page faults or preemption (the preemption is
disabled for !PREEMPT_RT case, otherwise it only disables migration).

With kmap_local_page(), we can avoid the often unwanted side effect of
unnecessary page faults and preemption disables.


Patch summary
=============

Patch 1, 4-6 and 8-9 replace kmap_atomic()/kunmap_atomic() with
        kmap_local_page()/kunmap_local() directly. With these local
        mappings, the page faults and preemption are allowed.

Patch 2 and 7 use memcpy_from_page() and memcpy_to_page() to replace
        kmap_atomic()/kunmap_atomic(). These two variants of memcpy()
        are based on the local mapping, so page faults and preemption
        are also allowed in these two interfaces.

Patch 3 replaces kmap_atomic()/kunmap_atomic() with kmap_local_page()/
        kunmap_local() and also disable page fault since the for special
        handling (pls see the commit message).


Reference
=========

[1]: https://lore.kernel.org/all/20230329073220.3982460-1-zhao1.liu@linux.intel.com/
[2]: https://lore.kernel.org/all/20220813220034.806698-1-ira.weiny@intel.com


Thanks and Best Regards,
Zhao

---
Changlog:

Changes since v2:
* Rebased on 968f35f4ab1c ("Merge tag 'v6.7-rc3-smb3-client-fixes' of
  git://git.samba.org/sfrench/cifs-2.6").
* Removed changelog (of v2) in commit message.
* Fixed typo in cover letter (Fabio).
* Added Reviewed-by tags from Ira and Fabio.

Changes since v1:
* Dropped hot plug related description in commit message since it has
  nothing to do with kmap_local_page().
* Emphasized the motivation for using kmap_local_page() in commit
  message.
* Rebased patch 1 on f47e630 (drm/i915/gem: Typecheck page lookups) to
  keep the "idx" variable of type pgoff_t here.
* Used memcpy_from_page() and memcpy_to_page() to replace
  kmap_local_page() + memcpy() in patch 2.

---
Zhao Liu (9):
  drm/i915: Use kmap_local_page() in gem/i915_gem_object.c
  drm/i915: Use memcpy_[from/to]_page() in gem/i915_gem_pyhs.c
  drm/i915: Use kmap_local_page() in gem/i915_gem_shmem.c
  drm/i915: Use kmap_local_page() in gem/selftests/huge_pages.c
  drm/i915: Use kmap_local_page() in gem/selftests/i915_gem_coherency.c
  drm/i915: Use kmap_local_page() in gem/selftests/i915_gem_context.c
  drm/i915: Use memcpy_from_page() in gt/uc/intel_uc_fw.c
  drm/i915: Use kmap_local_page() in i915_cmd_parser.c
  drm/i915: Use kmap_local_page() in gem/i915_gem_execbuffer.c

 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c       | 10 +++++-----
 drivers/gpu/drm/i915/gem/i915_gem_object.c           |  8 +++-----
 drivers/gpu/drm/i915/gem/i915_gem_phys.c             | 10 ++--------
 drivers/gpu/drm/i915/gem/i915_gem_shmem.c            |  6 ++++--
 drivers/gpu/drm/i915/gem/selftests/huge_pages.c      |  6 +++---
 .../gpu/drm/i915/gem/selftests/i915_gem_coherency.c  | 12 ++++--------
 .../gpu/drm/i915/gem/selftests/i915_gem_context.c    |  8 ++++----
 drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c             |  5 +----
 drivers/gpu/drm/i915/i915_cmd_parser.c               |  4 ++--
 9 files changed, 28 insertions(+), 41 deletions(-)
  

Comments

Zhao Liu Dec. 14, 2023, 1:19 p.m. UTC | #1
Hi maintainers,

Just kindly ping.
May I ask if this refresh version could be merged into the next tree of
the i915?

Thanks,
Zhao

On Sun, Dec 03, 2023 at 09:29:38PM +0800, Zhao Liu wrote:
> Date: Sun, 3 Dec 2023 21:29:38 +0800
> From: Zhao Liu <zhao1.liu@linux.intel.com>
> Subject: [PATCH v3 0/9] drm/i915: Replace kmap_atomic() with
>  kmap_local_page()
> X-Mailer: git-send-email 2.34.1
> 
> From: Zhao Liu <zhao1.liu@intel.com>
> 
> Hi all,
> 
> I refreshed this v3 by rebasing v2 [1] on the commit 968f35f4ab1c
> ("Merge tag 'v6.7-rc3-smb3-client-fixes' of git://git.samba.org/sfrench/
> cifs-2.6").
> 
> Based on the current code, I rechecked the substitutions in v2 and they
> still stand and are valid, so no code change in v3.
> 
> Thanks for all the review! And sorry v2 was missed, I'll pay more
> attention to this v3.
> 
> 
> Purpose of This Patchset
> ========================
> 
> The purpose of this pacthset is to replace all uses of kmap_atomic() in
> i915 with kmap_local_page() because the use of kmap_atomic() is being
> deprecated in favor of kmap_local_page()[2]. And 92b64bd (mm/highmem:
> add notes about conversions from kmap{,_atomic}()) has declared the
> deprecation of kmap_atomic().
> 
> 
> Motivation for Deprecating kmap_atomic() and Using kmap_local_page()
> ====================================================================
> 
> The main difference between atomic and local mappings is that local
> mappings doesn't disable page faults or preemption (the preemption is
> disabled for !PREEMPT_RT case, otherwise it only disables migration).
> 
> With kmap_local_page(), we can avoid the often unwanted side effect of
> unnecessary page faults and preemption disables.
> 
> 
> Patch summary
> =============
> 
> Patch 1, 4-6 and 8-9 replace kmap_atomic()/kunmap_atomic() with
>         kmap_local_page()/kunmap_local() directly. With these local
>         mappings, the page faults and preemption are allowed.
> 
> Patch 2 and 7 use memcpy_from_page() and memcpy_to_page() to replace
>         kmap_atomic()/kunmap_atomic(). These two variants of memcpy()
>         are based on the local mapping, so page faults and preemption
>         are also allowed in these two interfaces.
> 
> Patch 3 replaces kmap_atomic()/kunmap_atomic() with kmap_local_page()/
>         kunmap_local() and also disable page fault since the for special
>         handling (pls see the commit message).
> 
> 
> Reference
> =========
> 
> [1]: https://lore.kernel.org/all/20230329073220.3982460-1-zhao1.liu@linux.intel.com/
> [2]: https://lore.kernel.org/all/20220813220034.806698-1-ira.weiny@intel.com
> 
> 
> Thanks and Best Regards,
> Zhao
> 
> ---
> Changlog:
> 
> Changes since v2:
> * Rebased on 968f35f4ab1c ("Merge tag 'v6.7-rc3-smb3-client-fixes' of
>   git://git.samba.org/sfrench/cifs-2.6").
> * Removed changelog (of v2) in commit message.
> * Fixed typo in cover letter (Fabio).
> * Added Reviewed-by tags from Ira and Fabio.
> 
> Changes since v1:
> * Dropped hot plug related description in commit message since it has
>   nothing to do with kmap_local_page().
> * Emphasized the motivation for using kmap_local_page() in commit
>   message.
> * Rebased patch 1 on f47e630 (drm/i915/gem: Typecheck page lookups) to
>   keep the "idx" variable of type pgoff_t here.
> * Used memcpy_from_page() and memcpy_to_page() to replace
>   kmap_local_page() + memcpy() in patch 2.
> 
> ---
> Zhao Liu (9):
>   drm/i915: Use kmap_local_page() in gem/i915_gem_object.c
>   drm/i915: Use memcpy_[from/to]_page() in gem/i915_gem_pyhs.c
>   drm/i915: Use kmap_local_page() in gem/i915_gem_shmem.c
>   drm/i915: Use kmap_local_page() in gem/selftests/huge_pages.c
>   drm/i915: Use kmap_local_page() in gem/selftests/i915_gem_coherency.c
>   drm/i915: Use kmap_local_page() in gem/selftests/i915_gem_context.c
>   drm/i915: Use memcpy_from_page() in gt/uc/intel_uc_fw.c
>   drm/i915: Use kmap_local_page() in i915_cmd_parser.c
>   drm/i915: Use kmap_local_page() in gem/i915_gem_execbuffer.c
> 
>  drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c       | 10 +++++-----
>  drivers/gpu/drm/i915/gem/i915_gem_object.c           |  8 +++-----
>  drivers/gpu/drm/i915/gem/i915_gem_phys.c             | 10 ++--------
>  drivers/gpu/drm/i915/gem/i915_gem_shmem.c            |  6 ++++--
>  drivers/gpu/drm/i915/gem/selftests/huge_pages.c      |  6 +++---
>  .../gpu/drm/i915/gem/selftests/i915_gem_coherency.c  | 12 ++++--------
>  .../gpu/drm/i915/gem/selftests/i915_gem_context.c    |  8 ++++----
>  drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c             |  5 +----
>  drivers/gpu/drm/i915/i915_cmd_parser.c               |  4 ++--
>  9 files changed, 28 insertions(+), 41 deletions(-)
> 
> -- 
> 2.34.1
>
  
Tvrtko Ursulin Dec. 14, 2023, 1:45 p.m. UTC | #2
Hi Zhao,

On 14/12/2023 13:19, Zhao Liu wrote:
> Hi maintainers,
> 
> Just kindly ping.
> May I ask if this refresh version could be merged into the next tree of
> the i915?

I certainly spotted your series last week or so but then it slipped my 
mind to go through it. Should be able to go through it today or tomorrow.

Regards,

Tvrtko

> 
> Thanks,
> Zhao
> 
> On Sun, Dec 03, 2023 at 09:29:38PM +0800, Zhao Liu wrote:
>> Date: Sun, 3 Dec 2023 21:29:38 +0800
>> From: Zhao Liu <zhao1.liu@linux.intel.com>
>> Subject: [PATCH v3 0/9] drm/i915: Replace kmap_atomic() with
>>   kmap_local_page()
>> X-Mailer: git-send-email 2.34.1
>>
>> From: Zhao Liu <zhao1.liu@intel.com>
>>
>> Hi all,
>>
>> I refreshed this v3 by rebasing v2 [1] on the commit 968f35f4ab1c
>> ("Merge tag 'v6.7-rc3-smb3-client-fixes' of git://git.samba.org/sfrench/
>> cifs-2.6").
>>
>> Based on the current code, I rechecked the substitutions in v2 and they
>> still stand and are valid, so no code change in v3.
>>
>> Thanks for all the review! And sorry v2 was missed, I'll pay more
>> attention to this v3.
>>
>>
>> Purpose of This Patchset
>> ========================
>>
>> The purpose of this pacthset is to replace all uses of kmap_atomic() in
>> i915 with kmap_local_page() because the use of kmap_atomic() is being
>> deprecated in favor of kmap_local_page()[2]. And 92b64bd (mm/highmem:
>> add notes about conversions from kmap{,_atomic}()) has declared the
>> deprecation of kmap_atomic().
>>
>>
>> Motivation for Deprecating kmap_atomic() and Using kmap_local_page()
>> ====================================================================
>>
>> The main difference between atomic and local mappings is that local
>> mappings doesn't disable page faults or preemption (the preemption is
>> disabled for !PREEMPT_RT case, otherwise it only disables migration).
>>
>> With kmap_local_page(), we can avoid the often unwanted side effect of
>> unnecessary page faults and preemption disables.
>>
>>
>> Patch summary
>> =============
>>
>> Patch 1, 4-6 and 8-9 replace kmap_atomic()/kunmap_atomic() with
>>          kmap_local_page()/kunmap_local() directly. With these local
>>          mappings, the page faults and preemption are allowed.
>>
>> Patch 2 and 7 use memcpy_from_page() and memcpy_to_page() to replace
>>          kmap_atomic()/kunmap_atomic(). These two variants of memcpy()
>>          are based on the local mapping, so page faults and preemption
>>          are also allowed in these two interfaces.
>>
>> Patch 3 replaces kmap_atomic()/kunmap_atomic() with kmap_local_page()/
>>          kunmap_local() and also disable page fault since the for special
>>          handling (pls see the commit message).
>>
>>
>> Reference
>> =========
>>
>> [1]: https://lore.kernel.org/all/20230329073220.3982460-1-zhao1.liu@linux.intel.com/
>> [2]: https://lore.kernel.org/all/20220813220034.806698-1-ira.weiny@intel.com
>>
>>
>> Thanks and Best Regards,
>> Zhao
>>
>> ---
>> Changlog:
>>
>> Changes since v2:
>> * Rebased on 968f35f4ab1c ("Merge tag 'v6.7-rc3-smb3-client-fixes' of
>>    git://git.samba.org/sfrench/cifs-2.6").
>> * Removed changelog (of v2) in commit message.
>> * Fixed typo in cover letter (Fabio).
>> * Added Reviewed-by tags from Ira and Fabio.
>>
>> Changes since v1:
>> * Dropped hot plug related description in commit message since it has
>>    nothing to do with kmap_local_page().
>> * Emphasized the motivation for using kmap_local_page() in commit
>>    message.
>> * Rebased patch 1 on f47e630 (drm/i915/gem: Typecheck page lookups) to
>>    keep the "idx" variable of type pgoff_t here.
>> * Used memcpy_from_page() and memcpy_to_page() to replace
>>    kmap_local_page() + memcpy() in patch 2.
>>
>> ---
>> Zhao Liu (9):
>>    drm/i915: Use kmap_local_page() in gem/i915_gem_object.c
>>    drm/i915: Use memcpy_[from/to]_page() in gem/i915_gem_pyhs.c
>>    drm/i915: Use kmap_local_page() in gem/i915_gem_shmem.c
>>    drm/i915: Use kmap_local_page() in gem/selftests/huge_pages.c
>>    drm/i915: Use kmap_local_page() in gem/selftests/i915_gem_coherency.c
>>    drm/i915: Use kmap_local_page() in gem/selftests/i915_gem_context.c
>>    drm/i915: Use memcpy_from_page() in gt/uc/intel_uc_fw.c
>>    drm/i915: Use kmap_local_page() in i915_cmd_parser.c
>>    drm/i915: Use kmap_local_page() in gem/i915_gem_execbuffer.c
>>
>>   drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c       | 10 +++++-----
>>   drivers/gpu/drm/i915/gem/i915_gem_object.c           |  8 +++-----
>>   drivers/gpu/drm/i915/gem/i915_gem_phys.c             | 10 ++--------
>>   drivers/gpu/drm/i915/gem/i915_gem_shmem.c            |  6 ++++--
>>   drivers/gpu/drm/i915/gem/selftests/huge_pages.c      |  6 +++---
>>   .../gpu/drm/i915/gem/selftests/i915_gem_coherency.c  | 12 ++++--------
>>   .../gpu/drm/i915/gem/selftests/i915_gem_context.c    |  8 ++++----
>>   drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c             |  5 +----
>>   drivers/gpu/drm/i915/i915_cmd_parser.c               |  4 ++--
>>   9 files changed, 28 insertions(+), 41 deletions(-)
>>
>> -- 
>> 2.34.1
>>
  
Tvrtko Ursulin Dec. 14, 2023, 2:35 p.m. UTC | #3
On 14/12/2023 13:45, Tvrtko Ursulin wrote:
> 
> Hi Zhao,
> 
> On 14/12/2023 13:19, Zhao Liu wrote:
>> Hi maintainers,
>>
>> Just kindly ping.
>> May I ask if this refresh version could be merged into the next tree of
>> the i915?
> 
> I certainly spotted your series last week or so but then it slipped my 
> mind to go through it. Should be able to go through it today or tomorrow.

It all looks good to me. I only needed to queue a re-test in our CI 
since v3 failed BAT, but pretty sure it wasn't at fault. Once I am 
satisfied with the results I will merge the series. Thanks for the 
cleanups and your patience!

Regards,

Tvrtko


> Regards,
> 
> Tvrtko
> 
>>
>> Thanks,
>> Zhao
>>
>> On Sun, Dec 03, 2023 at 09:29:38PM +0800, Zhao Liu wrote:
>>> Date: Sun, 3 Dec 2023 21:29:38 +0800
>>> From: Zhao Liu <zhao1.liu@linux.intel.com>
>>> Subject: [PATCH v3 0/9] drm/i915: Replace kmap_atomic() with
>>>   kmap_local_page()
>>> X-Mailer: git-send-email 2.34.1
>>>
>>> From: Zhao Liu <zhao1.liu@intel.com>
>>>
>>> Hi all,
>>>
>>> I refreshed this v3 by rebasing v2 [1] on the commit 968f35f4ab1c
>>> ("Merge tag 'v6.7-rc3-smb3-client-fixes' of git://git.samba.org/sfrench/
>>> cifs-2.6").
>>>
>>> Based on the current code, I rechecked the substitutions in v2 and they
>>> still stand and are valid, so no code change in v3.
>>>
>>> Thanks for all the review! And sorry v2 was missed, I'll pay more
>>> attention to this v3.
>>>
>>>
>>> Purpose of This Patchset
>>> ========================
>>>
>>> The purpose of this pacthset is to replace all uses of kmap_atomic() in
>>> i915 with kmap_local_page() because the use of kmap_atomic() is being
>>> deprecated in favor of kmap_local_page()[2]. And 92b64bd (mm/highmem:
>>> add notes about conversions from kmap{,_atomic}()) has declared the
>>> deprecation of kmap_atomic().
>>>
>>>
>>> Motivation for Deprecating kmap_atomic() and Using kmap_local_page()
>>> ====================================================================
>>>
>>> The main difference between atomic and local mappings is that local
>>> mappings doesn't disable page faults or preemption (the preemption is
>>> disabled for !PREEMPT_RT case, otherwise it only disables migration).
>>>
>>> With kmap_local_page(), we can avoid the often unwanted side effect of
>>> unnecessary page faults and preemption disables.
>>>
>>>
>>> Patch summary
>>> =============
>>>
>>> Patch 1, 4-6 and 8-9 replace kmap_atomic()/kunmap_atomic() with
>>>          kmap_local_page()/kunmap_local() directly. With these local
>>>          mappings, the page faults and preemption are allowed.
>>>
>>> Patch 2 and 7 use memcpy_from_page() and memcpy_to_page() to replace
>>>          kmap_atomic()/kunmap_atomic(). These two variants of memcpy()
>>>          are based on the local mapping, so page faults and preemption
>>>          are also allowed in these two interfaces.
>>>
>>> Patch 3 replaces kmap_atomic()/kunmap_atomic() with kmap_local_page()/
>>>          kunmap_local() and also disable page fault since the for 
>>> special
>>>          handling (pls see the commit message).
>>>
>>>
>>> Reference
>>> =========
>>>
>>> [1]: 
>>> https://lore.kernel.org/all/20230329073220.3982460-1-zhao1.liu@linux.intel.com/
>>> [2]: 
>>> https://lore.kernel.org/all/20220813220034.806698-1-ira.weiny@intel.com
>>>
>>>
>>> Thanks and Best Regards,
>>> Zhao
>>>
>>> ---
>>> Changlog:
>>>
>>> Changes since v2:
>>> * Rebased on 968f35f4ab1c ("Merge tag 'v6.7-rc3-smb3-client-fixes' of
>>>    git://git.samba.org/sfrench/cifs-2.6").
>>> * Removed changelog (of v2) in commit message.
>>> * Fixed typo in cover letter (Fabio).
>>> * Added Reviewed-by tags from Ira and Fabio.
>>>
>>> Changes since v1:
>>> * Dropped hot plug related description in commit message since it has
>>>    nothing to do with kmap_local_page().
>>> * Emphasized the motivation for using kmap_local_page() in commit
>>>    message.
>>> * Rebased patch 1 on f47e630 (drm/i915/gem: Typecheck page lookups) to
>>>    keep the "idx" variable of type pgoff_t here.
>>> * Used memcpy_from_page() and memcpy_to_page() to replace
>>>    kmap_local_page() + memcpy() in patch 2.
>>>
>>> ---
>>> Zhao Liu (9):
>>>    drm/i915: Use kmap_local_page() in gem/i915_gem_object.c
>>>    drm/i915: Use memcpy_[from/to]_page() in gem/i915_gem_pyhs.c
>>>    drm/i915: Use kmap_local_page() in gem/i915_gem_shmem.c
>>>    drm/i915: Use kmap_local_page() in gem/selftests/huge_pages.c
>>>    drm/i915: Use kmap_local_page() in gem/selftests/i915_gem_coherency.c
>>>    drm/i915: Use kmap_local_page() in gem/selftests/i915_gem_context.c
>>>    drm/i915: Use memcpy_from_page() in gt/uc/intel_uc_fw.c
>>>    drm/i915: Use kmap_local_page() in i915_cmd_parser.c
>>>    drm/i915: Use kmap_local_page() in gem/i915_gem_execbuffer.c
>>>
>>>   drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c       | 10 +++++-----
>>>   drivers/gpu/drm/i915/gem/i915_gem_object.c           |  8 +++-----
>>>   drivers/gpu/drm/i915/gem/i915_gem_phys.c             | 10 ++--------
>>>   drivers/gpu/drm/i915/gem/i915_gem_shmem.c            |  6 ++++--
>>>   drivers/gpu/drm/i915/gem/selftests/huge_pages.c      |  6 +++---
>>>   .../gpu/drm/i915/gem/selftests/i915_gem_coherency.c  | 12 ++++--------
>>>   .../gpu/drm/i915/gem/selftests/i915_gem_context.c    |  8 ++++----
>>>   drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c             |  5 +----
>>>   drivers/gpu/drm/i915/i915_cmd_parser.c               |  4 ++--
>>>   9 files changed, 28 insertions(+), 41 deletions(-)
>>>
>>> -- 
>>> 2.34.1
>>>
  
Zhao Liu Dec. 14, 2023, 3:04 p.m. UTC | #4
On Thu, Dec 14, 2023 at 02:35:26PM +0000, Tvrtko Ursulin wrote:
> Date: Thu, 14 Dec 2023 14:35:26 +0000
> From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> Subject: Re: [PATCH v3 0/9] drm/i915: Replace kmap_atomic() with
>  kmap_local_page()
> 
> 
> On 14/12/2023 13:45, Tvrtko Ursulin wrote:
> > 
> > Hi Zhao,
> > 
> > On 14/12/2023 13:19, Zhao Liu wrote:
> > > Hi maintainers,
> > > 
> > > Just kindly ping.
> > > May I ask if this refresh version could be merged into the next tree of
> > > the i915?
> > 
> > I certainly spotted your series last week or so but then it slipped my
> > mind to go through it. Should be able to go through it today or
> > tomorrow.
> 
> It all looks good to me. I only needed to queue a re-test in our CI since v3
> failed BAT, but pretty sure it wasn't at fault. Once I am satisfied with the
> results I will merge the series. Thanks for the cleanups and your patience!
> 
> Regards,
> 
> Tvrtko
> 

Thanks for your review!

Regards,
Zhao

> 
> > Regards,
> > 
> > Tvrtko
> > 
> > > 
> > > Thanks,
> > > Zhao
> > > 
> > > On Sun, Dec 03, 2023 at 09:29:38PM +0800, Zhao Liu wrote:
> > > > Date: Sun, 3 Dec 2023 21:29:38 +0800
> > > > From: Zhao Liu <zhao1.liu@linux.intel.com>
> > > > Subject: [PATCH v3 0/9] drm/i915: Replace kmap_atomic() with
> > > >   kmap_local_page()
> > > > X-Mailer: git-send-email 2.34.1
> > > > 
> > > > From: Zhao Liu <zhao1.liu@intel.com>
> > > > 
> > > > Hi all,
> > > > 
> > > > I refreshed this v3 by rebasing v2 [1] on the commit 968f35f4ab1c
> > > > ("Merge tag 'v6.7-rc3-smb3-client-fixes' of git://git.samba.org/sfrench/
> > > > cifs-2.6").
> > > > 
> > > > Based on the current code, I rechecked the substitutions in v2 and they
> > > > still stand and are valid, so no code change in v3.
> > > > 
> > > > Thanks for all the review! And sorry v2 was missed, I'll pay more
> > > > attention to this v3.
> > > > 
> > > > 
> > > > Purpose of This Patchset
> > > > ========================
> > > > 
> > > > The purpose of this pacthset is to replace all uses of kmap_atomic() in
> > > > i915 with kmap_local_page() because the use of kmap_atomic() is being
> > > > deprecated in favor of kmap_local_page()[2]. And 92b64bd (mm/highmem:
> > > > add notes about conversions from kmap{,_atomic}()) has declared the
> > > > deprecation of kmap_atomic().
> > > > 
> > > > 
> > > > Motivation for Deprecating kmap_atomic() and Using kmap_local_page()
> > > > ====================================================================
> > > > 
> > > > The main difference between atomic and local mappings is that local
> > > > mappings doesn't disable page faults or preemption (the preemption is
> > > > disabled for !PREEMPT_RT case, otherwise it only disables migration).
> > > > 
> > > > With kmap_local_page(), we can avoid the often unwanted side effect of
> > > > unnecessary page faults and preemption disables.
> > > > 
> > > > 
> > > > Patch summary
> > > > =============
> > > > 
> > > > Patch 1, 4-6 and 8-9 replace kmap_atomic()/kunmap_atomic() with
> > > >          kmap_local_page()/kunmap_local() directly. With these local
> > > >          mappings, the page faults and preemption are allowed.
> > > > 
> > > > Patch 2 and 7 use memcpy_from_page() and memcpy_to_page() to replace
> > > >          kmap_atomic()/kunmap_atomic(). These two variants of memcpy()
> > > >          are based on the local mapping, so page faults and preemption
> > > >          are also allowed in these two interfaces.
> > > > 
> > > > Patch 3 replaces kmap_atomic()/kunmap_atomic() with kmap_local_page()/
> > > >          kunmap_local() and also disable page fault since the
> > > > for special
> > > >          handling (pls see the commit message).
> > > > 
> > > > 
> > > > Reference
> > > > =========
> > > > 
> > > > [1]: https://lore.kernel.org/all/20230329073220.3982460-1-zhao1.liu@linux.intel.com/
> > > > [2]:
> > > > https://lore.kernel.org/all/20220813220034.806698-1-ira.weiny@intel.com
> > > > 
> > > > 
> > > > Thanks and Best Regards,
> > > > Zhao
> > > > 
> > > > ---
> > > > Changlog:
> > > > 
> > > > Changes since v2:
> > > > * Rebased on 968f35f4ab1c ("Merge tag 'v6.7-rc3-smb3-client-fixes' of
> > > >    git://git.samba.org/sfrench/cifs-2.6").
> > > > * Removed changelog (of v2) in commit message.
> > > > * Fixed typo in cover letter (Fabio).
> > > > * Added Reviewed-by tags from Ira and Fabio.
> > > > 
> > > > Changes since v1:
> > > > * Dropped hot plug related description in commit message since it has
> > > >    nothing to do with kmap_local_page().
> > > > * Emphasized the motivation for using kmap_local_page() in commit
> > > >    message.
> > > > * Rebased patch 1 on f47e630 (drm/i915/gem: Typecheck page lookups) to
> > > >    keep the "idx" variable of type pgoff_t here.
> > > > * Used memcpy_from_page() and memcpy_to_page() to replace
> > > >    kmap_local_page() + memcpy() in patch 2.
> > > > 
> > > > ---
> > > > Zhao Liu (9):
> > > >    drm/i915: Use kmap_local_page() in gem/i915_gem_object.c
> > > >    drm/i915: Use memcpy_[from/to]_page() in gem/i915_gem_pyhs.c
> > > >    drm/i915: Use kmap_local_page() in gem/i915_gem_shmem.c
> > > >    drm/i915: Use kmap_local_page() in gem/selftests/huge_pages.c
> > > >    drm/i915: Use kmap_local_page() in gem/selftests/i915_gem_coherency.c
> > > >    drm/i915: Use kmap_local_page() in gem/selftests/i915_gem_context.c
> > > >    drm/i915: Use memcpy_from_page() in gt/uc/intel_uc_fw.c
> > > >    drm/i915: Use kmap_local_page() in i915_cmd_parser.c
> > > >    drm/i915: Use kmap_local_page() in gem/i915_gem_execbuffer.c
> > > > 
> > > >   drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c       | 10 +++++-----
> > > >   drivers/gpu/drm/i915/gem/i915_gem_object.c           |  8 +++-----
> > > >   drivers/gpu/drm/i915/gem/i915_gem_phys.c             | 10 ++--------
> > > >   drivers/gpu/drm/i915/gem/i915_gem_shmem.c            |  6 ++++--
> > > >   drivers/gpu/drm/i915/gem/selftests/huge_pages.c      |  6 +++---
> > > >   .../gpu/drm/i915/gem/selftests/i915_gem_coherency.c  | 12 ++++--------
> > > >   .../gpu/drm/i915/gem/selftests/i915_gem_context.c    |  8 ++++----
> > > >   drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c             |  5 +----
> > > >   drivers/gpu/drm/i915/i915_cmd_parser.c               |  4 ++--
> > > >   9 files changed, 28 insertions(+), 41 deletions(-)
> > > > 
> > > > -- 
> > > > 2.34.1
> > > >
  
Tvrtko Ursulin Dec. 15, 2023, 9:37 a.m. UTC | #5
On 14/12/2023 15:04, Zhao Liu wrote:
> On Thu, Dec 14, 2023 at 02:35:26PM +0000, Tvrtko Ursulin wrote:
>> Date: Thu, 14 Dec 2023 14:35:26 +0000
>> From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
>> Subject: Re: [PATCH v3 0/9] drm/i915: Replace kmap_atomic() with
>>   kmap_local_page()
>>
>>
>> On 14/12/2023 13:45, Tvrtko Ursulin wrote:
>>>
>>> Hi Zhao,
>>>
>>> On 14/12/2023 13:19, Zhao Liu wrote:
>>>> Hi maintainers,
>>>>
>>>> Just kindly ping.
>>>> May I ask if this refresh version could be merged into the next tree of
>>>> the i915?
>>>
>>> I certainly spotted your series last week or so but then it slipped my
>>> mind to go through it. Should be able to go through it today or
>>> tomorrow.
>>
>> It all looks good to me. I only needed to queue a re-test in our CI since v3
>> failed BAT, but pretty sure it wasn't at fault. Once I am satisfied with the
>> results I will merge the series. Thanks for the cleanups and your patience!
>>
>> Regards,
>>
>> Tvrtko
>>
> 
> Thanks for your review!

Pushed to drm-intel-gt-next, thanks again!

Regards,

Tvrtko