mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2026-01-28 11:18:01 +00:00
This is another round of bug fixing and cleanup. This time the focus is on
the driver pattern to use mmu notifiers to monitor a VA range. This code
is lifted out of many drivers and hmm_mirror directly into the
mmu_notifier core and written using the best ideas from all the driver
implementations.
This removes many bugs from the drivers and has a very pleasing
diffstat. More drivers can still be converted, but that is for another
cycle.
- A shared branch with RDMA reworking the RDMA ODP implementation
- New mmu_interval_notifier API. This is focused on the use case of
monitoring a VA and simplifies the process for drivers
- A common seq-count locking scheme built into the mmu_interval_notifier
API usable by drivers that call get_user_pages() or hmm_range_fault()
with the VA range
- Conversion of mlx5 ODP, hfi1, radeon, nouveau, AMD GPU, and Xen GntDev
drivers to the new API. This deletes a lot of wonky driver code.
- Two improvements for hmm_range_fault(), from testing done by Ralph
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEfB7FMLh+8QxL+6i3OG33FX4gmxoFAl3cCjQACgkQOG33FX4g
mxpp8xAAiR9iOdT28m/tx1GF31XludrMhRZVIiz0vmCIxIiAkWekWEfAEVm9PDnh
wdrxTJohSs+B65AK3sfToOM3AIuNCuFVWmbbHI5qmOO76vaSvcZa905Z++pNsawO
Bn8mgRCprYoFHcxWLvTvnA5U0g1S2BSSOwBSZI43CbEnVvHjYAR6MnvRqfGMk+NF
bf8fTk/x+fl0DCemhynlBLuJkogzoE2Hgl0yPY5bFna4PktOxdpa1yPaQsiqZ7e6
2s2NtM3pbMBJk0W42q5BU+aPhiqfxFFszasPSLBduXrD2xDsG76HJdHj5VydKmfL
nelG4BvqJozXTEZWvTEePYhCqaZ41eJZ7Asw8BXtmacVqE5mDlTXo/Zdgbz7yEOR
mI5MVyjD5rauZJldUOWXbwrPoWVFRvboauehiSgqvxvT9HvlFp9GKObSuu4gubBQ
mzxs4t48tPhA7bswLmw0/pETSogFuVDfaB7hsyY0gi8EwxMFMpw2qFypm1PEEF+C
BuUxCSShzvNKrraNe5PWaNNFd3AzIwAOWJHE+poH4bCoXQVr5nA+rq2gnHkdY5vq
/xrBCyxkf0U05YoFGYembPVCInMehzp9Xjy8V+SueSvCg2/TYwGDCgGfsbe9dNOP
Bc40JpS7BDn5w9nyLUJmOx7jfruNV6kx1QslA7NDDrB/rzOlsEc=
=Hj8a
-----END PGP SIGNATURE-----
Merge tag 'for-linus-hmm' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
Pull hmm updates from Jason Gunthorpe:
"This is another round of bug fixing and cleanup. This time the focus
is on the driver pattern to use mmu notifiers to monitor a VA range.
This code is lifted out of many drivers and hmm_mirror directly into
the mmu_notifier core and written using the best ideas from all the
driver implementations.
This removes many bugs from the drivers and has a very pleasing
diffstat. More drivers can still be converted, but that is for another
cycle.
- A shared branch with RDMA reworking the RDMA ODP implementation
- New mmu_interval_notifier API. This is focused on the use case of
monitoring a VA and simplifies the process for drivers
- A common seq-count locking scheme built into the
mmu_interval_notifier API usable by drivers that call
get_user_pages() or hmm_range_fault() with the VA range
- Conversion of mlx5 ODP, hfi1, radeon, nouveau, AMD GPU, and Xen
GntDev drivers to the new API. This deletes a lot of wonky driver
code.
- Two improvements for hmm_range_fault(), from testing done by Ralph"
* tag 'for-linus-hmm' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
mm/hmm: remove hmm_range_dma_map and hmm_range_dma_unmap
mm/hmm: make full use of walk_page_range()
xen/gntdev: use mmu_interval_notifier_insert
mm/hmm: remove hmm_mirror and related
drm/amdgpu: Use mmu_interval_notifier instead of hmm_mirror
drm/amdgpu: Use mmu_interval_insert instead of hmm_mirror
drm/amdgpu: Call find_vma under mmap_sem
nouveau: use mmu_interval_notifier instead of hmm_mirror
nouveau: use mmu_notifier directly for invalidate_range_start
drm/radeon: use mmu_interval_notifier_insert
RDMA/hfi1: Use mmu_interval_notifier_insert for user_exp_rcv
RDMA/odp: Use mmu_interval_notifier_insert()
mm/hmm: define the pre-processor related parts of hmm.h even if disabled
mm/hmm: allow hmm_range to be used with a mmu_interval_notifier or hmm_mirror
mm/mmu_notifier: add an interval tree notifier
mm/mmu_notifier: define the header pre-processor parts even if disabled
mm/hmm: allow snapshot of the special zero page
|
||
|---|---|---|
| .. | ||
| reg_srcs | ||
| .gitignore | ||
| atom-bits.h | ||
| atom-names.h | ||
| atom-types.h | ||
| atom.c | ||
| atom.h | ||
| atombios_crtc.c | ||
| atombios_dp.c | ||
| atombios_encoders.c | ||
| atombios_i2c.c | ||
| atombios.h | ||
| avivod.h | ||
| btc_dpm.c | ||
| btc_dpm.h | ||
| btcd.h | ||
| cayman_blit_shaders.c | ||
| cayman_blit_shaders.h | ||
| ci_dpm.c | ||
| ci_dpm.h | ||
| ci_smc.c | ||
| cik_blit_shaders.c | ||
| cik_blit_shaders.h | ||
| cik_reg.h | ||
| cik_sdma.c | ||
| cik.c | ||
| cikd.h | ||
| clearstate_cayman.h | ||
| clearstate_ci.h | ||
| clearstate_defs.h | ||
| clearstate_evergreen.h | ||
| clearstate_si.h | ||
| cypress_dpm.c | ||
| cypress_dpm.h | ||
| dce3_1_afmt.c | ||
| dce6_afmt.c | ||
| evergreen_blit_shaders.c | ||
| evergreen_blit_shaders.h | ||
| evergreen_cs.c | ||
| evergreen_dma.c | ||
| evergreen_hdmi.c | ||
| evergreen_reg.h | ||
| evergreen_smc.h | ||
| evergreen.c | ||
| evergreend.h | ||
| Kconfig | ||
| kv_dpm.c | ||
| kv_dpm.h | ||
| kv_smc.c | ||
| Makefile | ||
| mkregtable.c | ||
| ni_dma.c | ||
| ni_dpm.c | ||
| ni_dpm.h | ||
| ni_reg.h | ||
| ni.c | ||
| nid.h | ||
| nislands_smc.h | ||
| ObjectID.h | ||
| ppsmc.h | ||
| pptable.h | ||
| r100_track.h | ||
| r100.c | ||
| r100d.h | ||
| r200.c | ||
| r300_reg.h | ||
| r300.c | ||
| r300d.h | ||
| r420.c | ||
| r420d.h | ||
| r500_reg.h | ||
| r520.c | ||
| r520d.h | ||
| r600_blit_shaders.c | ||
| r600_blit_shaders.h | ||
| r600_cs.c | ||
| r600_dma.c | ||
| r600_dpm.c | ||
| r600_dpm.h | ||
| r600_hdmi.c | ||
| r600_reg.h | ||
| r600.c | ||
| r600d.h | ||
| radeon_acpi.c | ||
| radeon_acpi.h | ||
| radeon_agp.c | ||
| radeon_asic.c | ||
| radeon_asic.h | ||
| radeon_atombios.c | ||
| radeon_atpx_handler.c | ||
| radeon_audio.c | ||
| radeon_audio.h | ||
| radeon_benchmark.c | ||
| radeon_bios.c | ||
| radeon_clocks.c | ||
| radeon_combios.c | ||
| radeon_connectors.c | ||
| radeon_cs.c | ||
| radeon_cursor.c | ||
| radeon_device.c | ||
| radeon_display.c | ||
| radeon_dp_auxch.c | ||
| radeon_dp_mst.c | ||
| radeon_drv.c | ||
| radeon_drv.h | ||
| radeon_encoders.c | ||
| radeon_family.h | ||
| radeon_fb.c | ||
| radeon_fence.c | ||
| radeon_gart.c | ||
| radeon_gem.c | ||
| radeon_i2c.c | ||
| radeon_ib.c | ||
| radeon_irq_kms.c | ||
| radeon_kms.c | ||
| radeon_legacy_crtc.c | ||
| radeon_legacy_encoders.c | ||
| radeon_legacy_tv.c | ||
| radeon_mn.c | ||
| radeon_mode.h | ||
| radeon_object.c | ||
| radeon_object.h | ||
| radeon_pm.c | ||
| radeon_prime.c | ||
| radeon_reg.h | ||
| radeon_ring.c | ||
| radeon_sa.c | ||
| radeon_semaphore.c | ||
| radeon_sync.c | ||
| radeon_test.c | ||
| radeon_trace_points.c | ||
| radeon_trace.h | ||
| radeon_ttm.c | ||
| radeon_ucode.c | ||
| radeon_ucode.h | ||
| radeon_uvd.c | ||
| radeon_vce.c | ||
| radeon_vm.c | ||
| radeon.h | ||
| rs100d.h | ||
| rs400.c | ||
| rs400d.h | ||
| rs600.c | ||
| rs600d.h | ||
| rs690.c | ||
| rs690d.h | ||
| rs780_dpm.c | ||
| rs780_dpm.h | ||
| rs780d.h | ||
| rv6xx_dpm.c | ||
| rv6xx_dpm.h | ||
| rv6xxd.h | ||
| rv200d.h | ||
| rv250d.h | ||
| rv350d.h | ||
| rv515.c | ||
| rv515d.h | ||
| rv730_dpm.c | ||
| rv730d.h | ||
| rv740_dpm.c | ||
| rv740d.h | ||
| rv770_dma.c | ||
| rv770_dpm.c | ||
| rv770_dpm.h | ||
| rv770_smc.c | ||
| rv770_smc.h | ||
| rv770.c | ||
| rv770d.h | ||
| si_blit_shaders.c | ||
| si_blit_shaders.h | ||
| si_dma.c | ||
| si_dpm.c | ||
| si_dpm.h | ||
| si_reg.h | ||
| si_smc.c | ||
| si.c | ||
| sid.h | ||
| sislands_smc.h | ||
| smu7_discrete.h | ||
| smu7_fusion.h | ||
| smu7.h | ||
| sumo_dpm.c | ||
| sumo_dpm.h | ||
| sumo_smc.c | ||
| sumod.h | ||
| trinity_dpm.c | ||
| trinity_dpm.h | ||
| trinity_smc.c | ||
| trinityd.h | ||
| uvd_v1_0.c | ||
| uvd_v2_2.c | ||
| uvd_v3_1.c | ||
| uvd_v4_2.c | ||
| vce_v1_0.c | ||
| vce_v2_0.c | ||