diff '--color=auto' -Nur a/kernel/conftest.sh b/kernel/conftest.sh --- a/kernel/conftest.sh 2024-07-24 23:57:19.000000000 +0100 +++ b/kernel/conftest.sh 2024-10-18 10:22:27.367073132 +0100 @@ -6593,6 +6593,25 @@ compile_check_conftest "$CODE" "NV_DRM_FBDEV_GENERIC_SETUP_PRESENT" "" "functions" ;; + drm_fbdev_ttm_setup) + # + # Determine whether drm_fbdev_ttm_setup is present. + # + # Added by commit 9060d7f49376 ("drm/fb-helper: Finish the + # generic fbdev emulation") in v4.19. + # + CODE=" + #include + #if defined(NV_DRM_DRM_FBDEV_TTM_H_PRESENT) + #include + #endif + void conftest_drm_fbdev_ttm_setup(void) { + drm_fbdev_ttm_setup(); + }" + + compile_check_conftest "$CODE" "NV_DRM_FBDEV_TTM_SETUP_PRESENT" "" "functions" + ;; + drm_aperture_remove_conflicting_pci_framebuffers) # # Determine whether drm_aperture_remove_conflicting_pci_framebuffers is present. diff '--color=auto' -Nur a/kernel/header-presence-tests.mk b/kernel/header-presence-tests.mk --- a/kernel/header-presence-tests.mk 2024-07-24 23:57:19.000000000 +0100 +++ b/kernel/header-presence-tests.mk 2024-10-18 10:22:27.368073132 +0100 @@ -15,6 +15,7 @@ drm/drm_atomic_uapi.h \ drm/drm_drv.h \ drm/drm_fbdev_generic.h \ + drm/drm_fbdev_ttm.h \ drm/drm_framebuffer.h \ drm/drm_connector.h \ drm/drm_probe_helper.h \ diff '--color=auto' -Nur a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c --- a/kernel/nvidia-drm/nvidia-drm-drv.c 2024-07-25 00:22:50.000000000 +0100 +++ b/kernel/nvidia-drm/nvidia-drm-drv.c 2024-10-18 10:22:27.368073132 +0100 @@ -73,6 +73,10 @@ #include #endif +#if defined(NV_DRM_DRM_FBDEV_TTM_H_PRESENT) +#include +#endif + #include #include @@ -1823,7 +1827,11 @@ drm_aperture_remove_conflicting_pci_framebuffers(pdev, nv_drm_driver.name); #endif } +#if defined(NV_DRM_FBDEV_TTM_AVAILABLE) + drm_fbdev_ttm_setup(dev, 32); +#else drm_fbdev_generic_setup(dev, 32); +#endif } #endif /* defined(NV_DRM_FBDEV_GENERIC_AVAILABLE) */ diff '--color=auto' -Nur a/kernel/nvidia-drm/nvidia-drm-os-interface.h b/kernel/nvidia-drm/nvidia-drm-os-interface.h --- a/kernel/nvidia-drm/nvidia-drm-os-interface.h 2024-07-25 00:22:50.000000000 +0100 +++ b/kernel/nvidia-drm/nvidia-drm-os-interface.h 2024-10-18 10:22:27.368073132 +0100 @@ -58,8 +58,11 @@ #error "Need to define kernel timer callback primitives for this OS" #endif -#if defined(NV_DRM_FBDEV_GENERIC_SETUP_PRESENT) && defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT) +#if (defined(NV_DRM_FBDEV_GENERIC_SETUP_PRESENT) || defined(NV_DRM_FBDEV_TTM_SETUP_PRESENT)) && defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT) #define NV_DRM_FBDEV_GENERIC_AVAILABLE +#if defined(NV_DRM_FBDEV_TTM_SETUP_PRESENT) +#define NV_DRM_FBDEV_TTM_AVAILABLE +#endif #endif struct page; diff '--color=auto' -Nur a/kernel/nvidia-drm/nvidia-drm-sources.mk b/kernel/nvidia-drm/nvidia-drm-sources.mk --- a/kernel/nvidia-drm/nvidia-drm-sources.mk 2024-07-24 23:59:33.000000000 +0100 +++ b/kernel/nvidia-drm/nvidia-drm-sources.mk 2024-10-18 10:22:27.368073132 +0100 @@ -67,6 +67,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += sync_file_get_fence NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_aperture_remove_conflicting_pci_framebuffers NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fbdev_generic_setup +NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fbdev_ttm_setup NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_connector_attach_hdr_output_metadata_property NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_helper_crtc_enable_color_mgmt NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_crtc_enable_color_mgmt diff '--color=auto' -Nur a/kernel-open/conftest.sh b/kernel-open/conftest.sh --- a/kernel-open/conftest.sh 2024-07-24 23:57:19.000000000 +0100 +++ b/kernel-open/conftest.sh 2024-10-18 10:22:27.369073132 +0100 @@ -6593,6 +6593,25 @@ compile_check_conftest "$CODE" "NV_DRM_FBDEV_GENERIC_SETUP_PRESENT" "" "functions" ;; + drm_fbdev_ttm_setup) + # + # Determine whether drm_fbdev_ttm_setup is present. + # + # Added by commit 9060d7f49376 ("drm/fb-helper: Finish the + # generic fbdev emulation") in v4.19. + # + CODE=" + #include + #if defined(NV_DRM_DRM_FBDEV_TTM_H_PRESENT) + #include + #endif + void conftest_drm_fbdev_ttm_setup(void) { + drm_fbdev_ttm_setup(); + }" + + compile_check_conftest "$CODE" "NV_DRM_FBDEV_TTM_SETUP_PRESENT" "" "functions" + ;; + drm_aperture_remove_conflicting_pci_framebuffers) # # Determine whether drm_aperture_remove_conflicting_pci_framebuffers is present. diff '--color=auto' -Nur a/kernel-open/header-presence-tests.mk b/kernel-open/header-presence-tests.mk --- a/kernel-open/header-presence-tests.mk 2024-07-24 23:57:19.000000000 +0100 +++ b/kernel-open/header-presence-tests.mk 2024-10-18 10:22:27.369073132 +0100 @@ -15,6 +15,7 @@ drm/drm_atomic_uapi.h \ drm/drm_drv.h \ drm/drm_fbdev_generic.h \ + drm/drm_fbdev_ttm.h \ drm/drm_framebuffer.h \ drm/drm_connector.h \ drm/drm_probe_helper.h \ diff '--color=auto' -Nur a/kernel-open/nvidia-drm/nvidia-drm-drv.c b/kernel-open/nvidia-drm/nvidia-drm-drv.c --- a/kernel-open/nvidia-drm/nvidia-drm-drv.c 2024-07-25 00:22:48.000000000 +0100 +++ b/kernel-open/nvidia-drm/nvidia-drm-drv.c 2024-10-18 10:22:27.370073132 +0100 @@ -73,6 +73,10 @@ #include #endif +#if defined(NV_DRM_DRM_FBDEV_TTM_H_PRESENT) +#include +#endif + #include #include @@ -1823,7 +1827,11 @@ drm_aperture_remove_conflicting_pci_framebuffers(pdev, nv_drm_driver.name); #endif } +#if defined(NV_DRM_FBDEV_TTM_AVAILABLE) + drm_fbdev_ttm_setup(dev, 32); +#else drm_fbdev_generic_setup(dev, 32); +#endif } #endif /* defined(NV_DRM_FBDEV_GENERIC_AVAILABLE) */ diff '--color=auto' -Nur a/kernel-open/nvidia-drm/nvidia-drm-os-interface.h b/kernel-open/nvidia-drm/nvidia-drm-os-interface.h --- a/kernel-open/nvidia-drm/nvidia-drm-os-interface.h 2024-07-25 00:22:48.000000000 +0100 +++ b/kernel-open/nvidia-drm/nvidia-drm-os-interface.h 2024-10-18 10:22:27.370073132 +0100 @@ -58,8 +58,11 @@ #error "Need to define kernel timer callback primitives for this OS" #endif -#if defined(NV_DRM_FBDEV_GENERIC_SETUP_PRESENT) && defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT) +#if (defined(NV_DRM_FBDEV_GENERIC_SETUP_PRESENT) || defined(NV_DRM_FBDEV_TTM_SETUP_PRESENT)) && defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT) #define NV_DRM_FBDEV_GENERIC_AVAILABLE +#if defined(NV_DRM_FBDEV_TTM_SETUP_PRESENT) +#define NV_DRM_FBDEV_TTM_AVAILABLE +#endif #endif struct page; diff '--color=auto' -Nur a/kernel-open/nvidia-drm/nvidia-drm-sources.mk b/kernel-open/nvidia-drm/nvidia-drm-sources.mk --- a/kernel-open/nvidia-drm/nvidia-drm-sources.mk 2024-07-24 23:59:33.000000000 +0100 +++ b/kernel-open/nvidia-drm/nvidia-drm-sources.mk 2024-10-18 10:22:27.370073132 +0100 @@ -67,6 +67,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += sync_file_get_fence NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_aperture_remove_conflicting_pci_framebuffers NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fbdev_generic_setup +NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fbdev_ttm_setup NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_connector_attach_hdr_output_metadata_property NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_helper_crtc_enable_color_mgmt NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_crtc_enable_color_mgmt