Commit 4e69c1856bfd for kernel

commit 4e69c1856bfd9ffb7e9d335a25842fa211628929
Merge: 818bebeb63dd c44e278ce02e
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri Aug 21 08:41:00 2026 -0700

    Merge tag 'drm-next-2026-08-20' of https://gitlab.freedesktop.org/drm/kernel

    Pull drm updates from Dave Airlie:
     "Highlights:

       - dmemcg eviction support is good for low VRAM things like Steam
         Machine

       - AMD adds gfx6-8 modifier support for older GPUs that enables a
         bunch of wayland stuff

       - i915/xe has some new hw support but also a lot of display
         refactoring

      Everything:

      perf:
       - export perf_allow_ APIs for xe

      udmabuf:
       - remove default size limit of 64MB

      rust:
       - i/o rework (signed tag from driver-core tree)
       - add registration guard and registration data
       - fix unbounded lifetimes in ioctl handler args
       - fix a drm_dev_register race
       - gem_shmem: add DmaResvGuard helper
       - gpuvm: require send/sync for driver data
           - implement send/sync for GpuVaAlloc and GpuVmBo
           - add SmContext lifetime
       - rename dma_handle to dma_address
       - change pci_sriov_get_totalvfs return to unsigned int

      core:
       - create drm_of_get_panel_orientation
       - send per-connector hotplug events
       - add thunderbolt UBHR tunneling support

      connector:
       - add color format property

      dmem:
       - introduce a peak file
       - accept one region per limit
       - add dmemcg support for eviction

      gpusvm:
       - reorg code to give drivers more flexibility

      atomic:
       - add create_state callback and helper
       - add documentation on atomic commit lifetime

      buddy:
       - add per-order free
       - add used block scoreboard
       - fix UAF
       - test buffer clearance on resume
       - add phys_addr->block helper

      gem:
       - drop DRIVER_GEM_GPUVA flag

      ttm:
       - be more aggressive allocating below protection limit

      sched:
       - add test suite for concurrent job submissions

      hdmi:
       - hook the color format property in helpers

      mipi-dsi:
       - add MIPI_DSI_MODE_DSC_ALL_SLICES_IN_PKT

      bridge:
       - add atomic create callbacks
       - drop atomic reset
       - display-connector: don't autoenable HPD IRQ
       - trigger initial HPD for DP
       - ti-sn65dsi83: remove NO_HFP and NO_HBP mode flags
       - analogix_dp: switch to DP link training helpers

      dp:
       - add support for DSC max delta BPP

      edid:
       - parse panel type from DisplayID 2.x Display Parameters

      sysfb:
       - improve panel, stride, framebuffer size validation

      panel:
       - implement ref counting for struct drm_panel
       - himax-hx83121a: add backlight regulator support
       - novatek-nt36672a: Inline panel init sequences
       - visionox-vtdr6130: enable DSC
       - novatek-nt37801: Use mipi_dsi_*_multi() functions
       - samsung-s6d16d0: Fix prepare error handling
       - support Novatek NT36536 plus DT bindings
       - sofef00: fix backlight updates
       - osd101t2587: use mipi_dsi_*_multi interface
       - panel-edp: adjust timing for AUO displays
       - panel-lvds: support Opto Logic SCX1001511GGC49
       - panel-simple: support Kyocera tcg070wvlq
       - panel-edp: quirks
           - AUO B116XAT04.3, CMN N116BCP-EA2, CSW MNB601LS1-8
           - BOE NV116WH2-M30, BOE NT116WHM-N21, BOE NV116FH1-M31
           - BOE NV116FH1-M30, NV140FHM-N5B, TM156VDXP25
           - BOE NE160QDM-NY1, MB116AS01
       - new:
           - Samsung ATNA40HQ08-0, Anbernic TD4310
           - Chipone ICNA35XX, Ilitek ILI9488
           - Ilitek ILI7807S, Renesas R63419
           - MNE001BS6-2, MNF601BS4-1, Sharp LQ120P1JX51

      virtio:
       - add support for save/restore virtio_gpu_objects
       - abort vq wait on device removal

      amdgpu:
       - add color format DRM property
       - initial compute pipe reset support
       - add GFX 6-8 modifier support
       - initial DCN 6.0.0 support
       - dmemcg eviction support
       - improved boundary checking for bios parsing
       - RAS updates and rework
       - VCN secure submission fixes
       - 8K panel fix
       - Display KUNIT tests
       - parse panel type from DisplayID
       - Align IP discovery to pci device lifetime
       - SOC15 register macro cleanups
       - UVD memory placement fixes
       - GFX9 mode2 reset fixes
       - drop unnecessary BUG/BUG_ON
       - GFX8 soft reset rework
       - enable soft reset on GFX8
       - PSP/SMU 15.0.9 update
       - VI ASPM fix
       - userq fixes
       - amdgpu_vm_get_task_info_pasid lifetime fix
       - DC CACP support
       - change system_unbound_wq with system_dfl_wq
       - Loosen VFCT bios parsing to deal with pci=realloc
       - SI/SMU7 AC/DC switch fix
       - VM fence handling fix
       - GEM close optimisation
       - Apple Studio Display fixes
       - DC FRL fixes

      amdkfd:
       - initial compute pipe reset support
       - allow applications to opt out of sigbus on fatal errors
       - improve CRIU boundary checks
       - MQD handling rework
       - move TBA/TMA from system to device memory
       - avoid topology-lock in kfd_mmap
       - SVM eviction fixes

      radeon:
       - fix unset CONFIG_ACPI build

      i915:
       - Novalake (NVL display version 35) timing generator enabling
       - NVL DC3CO enabling
       - enable UBHR link rates on thunderbolt tunnels
       - Reduce Xe3+ PM demand peak bandwidth
       - enable pipe DMC error interrupts for display 30+
       - add kunit tests for DP link config selection
       - refactor and document DP link recovery
       - i915/xe driver display probe/remove/suspend/resume/shutdown cleanup
         and unification
       - i915/xe display runtime PM unified
       - Break i915 and xe panic dependency on struct intel_framebuffer
       - Streamline Pre/Post-CSC LUT loops
       - drop TGL DC3DO support
       - CDCLK santization
       - fix HDMI scrambling enable
       - fix phys bo pread/pwrite with offset
       - add missing nospec on parallel submit slot
       - fix some NULL derefs

      xe:
       - drop force_execlist module param
       - gate observation streams with perf_allow_cpu
       - skip FORCE_WC and vm_bound check for external dma-bufs
       - dmemcg eviction support
       - remove unused NVL-S GuC
       - TLB invalidation improvements
       - NVL-S updated PCI-IDs and w/a
       - madvise: optimise invalidation path
       - fix infinite gt-reset loop in timeout recovery
       - update TTM device benefical_order
       - wait on external BO kernel fences in exec ioctl
       - add/use more KLV helpers
       - sriov: disable display in admin only PF mode
       - add RAS GPU health indicator
       - optimise TTM populate for DONTNEED BO
       - drop force_probe for NVL-s
       - add debugfs for pcode info

      amdxdna:
       - disable device buffer export

      nova:
       - build nova-core/nova-drm from drivers/gpu
       - export nova-core rust symbols (workaround)
       - GSP boot process consolidation
       - Boot GSP with vGPU enabled
       - TLV firmware image format support
       - Hopper/Blackwell fixes and cleanups
       - I/O projection adoption

      tyr:
       - firmware loading and MCU boot
       - add generic slot manager + MMU
       - GPU VM support ARM64 LPAE page tables
       - add kernel buffer object for internal allocations
       - add parser for Mali CSF
       - add MCU booting

      nouveau:
       - race fixes
       - check instmem iomapping at first use
       - add dmemcg support
       - expose NVDEC channels
       - add scanline position/head state support for GSP

      qxl:
       - convert simple encoder to regular

      ethosu:
       - add perf counter support

      etnaviv:
       - force flush on power register ops

      msm:
       - support DSC configuration with slice_per_pkt > 1

      mxsfb:
       - fix disable sequence

      panthor:
       - support sparse mappings

      rockchip:
       - switch away from simple helpers
       - support YUV background color
       - fix layer config timeout
       - add edp support for rk3576
       - add batch command submission function

      rocket:
       - error handling and NULL ptr deref fixes

      sun4i:
       - switch away from simple helpers

      imagination:
       - mark BXM-4-64 MC1 as support

      host1x:
       - support tegra264

      tegra:
       - add DSI for tegra 20/30

      v3d:
       - reduce PM runtime autosuspend delay
       - scheduler fixes and refactoring
       - deprecate v3d 3.3 and 4.1
       - validate CPU job query boundaries

      hibmc:
       - improve plane format handling
       - switch to gem shmem

      mediatek:
       - cec: correct compat for mt7623-8167?

      exynos:
       - remove simple dependency
       - add error handling to encoder paths
       - take i2c adapter module reference"

    * tag 'drm-next-2026-08-20' of https://gitlab.freedesktop.org/drm/kernel: (2074 commits)
      drm/xe/mcr: Take vcs1/vecs1 into account for first media slice
      drm/xe: Fix a bug in pc_adjust_freq_bounds()
      drm/xe: Fix xe_device_probe() failure
      drm/xe/drm_ras: Move has_drm_ras check to drm_ras layer
      drm/xe/ras: Fix boot-time ras error processing
      drm/amd/display: make DC_RUN_WITH_PREEMPTION_ENABLED misuse a build error
      drm/amd/pm: silence uninitialized variable warnings
      drm/amdgpu: skip BOs being torn down during GTT recovery
      drm/amdgpu: Reject UVD message with invalid number of h265 refs
      drm/amdgpu: keep PRT mappings off the vm_bo state lists
      drm/amdgpu: fix nbif 6.3.1 l1 low power not functional
      drm/amd/display: fix BT.2020 YCbCr output CSC matrices for DCE
      drm/amd/display: fix BT.2020 YCbCr limited output CSC matrix
      drm/amdgpu: Implement insert_end for VCE 3
      drm/amdgpu: Fix UVD min buffer sizes
      drm/amdgpu: Fix UVD decode image min size calculation
      drm/amdgpu: Fix UVD dpb min size calculation for H264
      drm/amdgpu: Reject UVD message with dimensions above 4096
      drm/amdgpu: check ASPM on the dGPU host link
      drm/radeon: fix autosuspend cleanup during teardown
      ...

diff --cc drivers/gpu/drm/drm_gpusvm.c
index e5e105466f53,dc184fd113ff..a93eee7ddb9e
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@@ -1421,10 -1503,11 +1488,13 @@@ int drm_gpusvm_get_pages(struct drm_gpu
  							   DMA_BIDIRECTIONAL;
  	struct dma_iova_state *state = &svm_pages->state;

+ 	if (!svm_pages->drm)
+ 		return -EINVAL;
+
  retry:
 -	if (time_after(jiffies, timeout))
 +	remaining = timeout - jiffies;
 +
 +	if (time_after_eq(jiffies, timeout))
  		return -EBUSY;

  	hmm_range.notifier_seq = mmu_interval_read_begin(notifier);
diff --cc drivers/gpu/nova-core/gpu.rs
index b603b0bd2692,42a4cd7971fa..fd1414004dd0
--- a/drivers/gpu/nova-core/gpu.rs
+++ b/drivers/gpu/nova-core/gpu.rs
@@@ -284,15 -277,61 +277,61 @@@ struct GspResources<'gpu>
      unload_bundle: Option<gsp::UnloadBundle>,
  }

+ /// Structure holding the resources required to operate the GPU.
+ #[pin_data]
+ pub(crate) struct Gpu<'gpu> {
+     spec: Spec,
+     /// Static GPU information as provided by the GSP.
+     gsp_static_info: GetGspStaticInfoReply,
+     /// GSP and its resources.
+     #[pin]
+     gsp_resources: GspResources<'gpu>,
+     /// System memory page required for flushing all pending GPU-side memory writes done through
+     /// PCIE into system memory, via sysmembar (A GPU-initiated HW memory-barrier operation).
+     ///
+     /// Must be kept declared *after* `gsp_resources`, as the latter's `PinnedDrop` implementation
+     /// requires the sysmem flush page to be in place.
+     sysmem_flush: SysmemFlush<'gpu>,
+ }
+
+ #[pinned_drop]
+ impl PinnedDrop for GspResources<'_> {
+     fn drop(self: Pin<&mut Self>) {
+         let this = self.project();
+         let device = *this.device;
+         let bar = *this.bar;
+         let bundle = this.unload_bundle.take();
+
+         let _ = this
+             .gsp
+             .as_ref()
+             .get_ref()
+             .unload(
+                 GspBootContext {
+                     pdev: device,
+                     bar,
+                     chipset: this.spec.chipset,
+                     gsp_falcon: &*this.gsp_falcon,
+                     sec2_falcon: &*this.sec2_falcon,
+                     fsp: this.fsp.as_mut(),
+                     vgpu: &*this.vgpu,
+                 },
+                 bundle,
+             )
+             .inspect_err(|e| dev_err!(device, "failed to unload GSP: {:?}\n", e));
+     }
+ }
+
  impl<'gpu> Gpu<'gpu> {
 -    pub(crate) fn new(
 -        pdev: &'gpu pci::Device<device::Core<'_>>,
 +    pub(crate) fn new<'a>(
 +        pdev: &'gpu pci::Device<device::Core<'a>>,
          bar: Bar0<'gpu>,
 -    ) -> impl PinInit<Self, Error> + 'gpu {
 +    ) -> impl PinInit<Self, Error> + use<'gpu, 'a> {
+         let dev = pdev.as_ref();
+
          try_pin_init!(Self {
-             device: pdev.as_ref(),
-             spec: Spec::new(pdev.as_ref(), bar).inspect(|spec| {
-                 dev_info!(pdev,"NVIDIA ({})\n", spec);
+             spec: Spec::new(dev, bar).inspect(|spec| {
+                 dev_info!(dev,"NVIDIA ({})\n", spec);
              })?,

              // We must wait for GFW_BOOT completion before doing any significant setup on the GPU.
diff --cc rust/helpers/pci.c
index 23b06becb448,4ebf256dff23..a714cc2bfb7a
--- a/rust/helpers/pci.c
+++ b/rust/helpers/pci.c
@@@ -24,11 -24,14 +24,19 @@@ __rust_helper bool rust_helper_dev_is_p
  	return dev_is_pci(dev);
  }

 +__rust_helper unsigned int rust_helper_pci_irq_type(struct pci_dev *pdev)
 +{
 +	return pci_irq_type(pdev);
 +}
 +
+ #ifndef CONFIG_PCI_IOV
+ __rust_helper unsigned int
+ rust_helper_pci_sriov_get_totalvfs(struct pci_dev *pdev)
+ {
+ 	return pci_sriov_get_totalvfs(pdev);
+ }
+ #endif
+
  #ifndef CONFIG_PCI_MSI
  __rust_helper int rust_helper_pci_alloc_irq_vectors(struct pci_dev *dev,
  						    unsigned int min_vecs,