View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001404 | channel: elrepo/el8 | kmod-nvidia-390xx | public | 2023-11-14 11:22 | 2023-11-23 03:36 |
Reporter | pperry | Assigned To | pperry | ||
Priority | normal | Severity | block | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Summary | 0001404: kmod-nvidia-390xx fails to build on RHEL8.9 | ||||
Description | Build error when attempting to rebuild kmod-nvidia-390xx for RHEL8.9 /home/phil/rpmbuild/BUILD/kmod-nvidia-390xx-390.157/_kmod_build_/kernel/nvidia-drm/nvidia-drm-drv.c: In function 'nv_drm_init_mode_config': /home/phil/rpmbuild/BUILD/kmod-nvidia-390xx-390.157/_kmod_build_/kernel/nvidia-drm/nvidia-drm-drv.c:244:22: error: 'struct drm_mode_config' has no member named 'fb_base'; did you mean 'fb_list'? dev->mode_config.fb_base = 0; ^~~~~~~ fb_list | ||||
Tags | No tags attached. | ||||
|
Attached is a working patch to build the NVIDIA 390.157 driver under RHEL 8.9. It appears that the RHEL 8.9 kernel's DRM subsystem is similar to upstream kernel 6.2. The patch is inspired by Ubuntu's nvidia-graphics-drivers-390 patch, but only the DRM changes not the ACPI changes. https://git.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-390/tree/debian/dkms_nvidia/patches/buildfix_kernel_6.2.patch nvidia-390xx-buildfix-el8_9.patch (3,582 bytes)
diff -Naurp kmod-nvidia-390xx-390.157/nvidiapkg/kernel/nvidia-drm/nvidia-drm-connector.c kmod-nvidia-390xx-390.157.buildfix/nvidiapkg/kernel/nvidia-drm/nvidia-drm-connector.c --- kmod-nvidia-390xx-390.157/nvidiapkg/kernel/nvidia-drm/nvidia-drm-connector.c 2022-10-12 05:30:31.000000000 -0400 +++ kmod-nvidia-390xx-390.157.buildfix/nvidiapkg/kernel/nvidia-drm/nvidia-drm-connector.c 2023-11-22 21:51:01.001472520 -0500 @@ -20,6 +20,8 @@ * DEALINGS IN THE SOFTWARE. */ +#include <linux/version.h> +#include <drm/drm_edid.h> #include "nvidia-drm-conftest.h" /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) @@ -98,6 +100,7 @@ __nv_drm_detect_encoder(struct NvKmsKapi break; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) if (connector->override_edid) { const struct drm_property_blob *edid = connector->edid_blob_ptr; @@ -110,6 +113,25 @@ __nv_drm_detect_encoder(struct NvKmsKapi sizeof(pDetectParams->edid.buffer)); } } +#else + // Rel. commit "drm/edid: detach debugfs EDID override from EDID property update" (Jani Nikula, 24 Oct 2022) + // NOTE: HUGE HACK! + mutex_lock(&connector->edid_override_mutex); + if (connector->edid_override) { + const struct edid *edid = drm_edid_raw(connector->edid_override); + size_t edid_length = EDID_LENGTH * (edid->extensions + 1); + if (edid_length <= sizeof(pDetectParams->edid.buffer)) { + memcpy(pDetectParams->edid.buffer, edid, edid_length); + pDetectParams->edid.bufferSize = edid_length; + pDetectParams->overrideEdid = NV_TRUE; + } else { + WARN_ON(edid_length > + sizeof(pDetectParams->edid.buffer)); + } + } + mutex_unlock(&connector->edid_override_mutex); + +#endif if (!nvKms->getDynamicDisplayInfo(nv_dev->pDevice, pDetectParams)) { NV_DRM_DEV_LOG_ERR( diff -Naurp kmod-nvidia-390xx-390.157/nvidiapkg/kernel/nvidia-drm/nvidia-drm-drv.c kmod-nvidia-390xx-390.157.buildfix/nvidiapkg/kernel/nvidia-drm/nvidia-drm-drv.c --- kmod-nvidia-390xx-390.157/nvidiapkg/kernel/nvidia-drm/nvidia-drm-drv.c 2022-10-12 05:30:31.000000000 -0400 +++ kmod-nvidia-390xx-390.157.buildfix/nvidiapkg/kernel/nvidia-drm/nvidia-drm-drv.c 2023-11-22 21:51:01.001472520 -0500 @@ -20,6 +20,7 @@ * DEALINGS IN THE SOFTWARE. */ +#include <linux/version.h> #include "nvidia-drm-conftest.h" /* NV_DRM_AVAILABLE and NV_DRM_DRM_GEM_H_PRESENT */ #include "nvidia-drm-priv.h" @@ -239,9 +240,12 @@ nv_drm_init_mode_config(struct nv_drm_de dev->mode_config.preferred_depth = 24; dev->mode_config.prefer_shadow = 1; +// Rel. commit "drm: Remove drm_mode_config::fb_base" (Zack Rusin, 18 Oct 2022) +#if defined(CONFIG_FB) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) /* Currently unused. Update when needed. */ dev->mode_config.fb_base = 0; +#endif dev->mode_config.async_page_flip = false; diff -Naurp kmod-nvidia-390xx-390.157/nvidiapkg/kernel/nvidia-drm/nvidia-drm-fb.c kmod-nvidia-390xx-390.157.buildfix/nvidiapkg/kernel/nvidia-drm/nvidia-drm-fb.c --- kmod-nvidia-390xx-390.157/nvidiapkg/kernel/nvidia-drm/nvidia-drm-fb.c 2022-10-12 05:30:31.000000000 -0400 +++ kmod-nvidia-390xx-390.157.buildfix/nvidiapkg/kernel/nvidia-drm/nvidia-drm-fb.c 2023-11-22 21:56:50.433477927 -0500 @@ -31,6 +31,7 @@ #include "nvidia-drm-gem.h" #include <drm/drm_crtc_helper.h> +#include <drm/drm_modeset_helper.h> static void nv_drm_framebuffer_destroy(struct drm_framebuffer *fb) { |
|
Thanks - packages built cleanly with patch applied, and released to the main elrepo repository. |
Date Modified | Username | Field | Change |
---|---|---|---|
2023-11-14 11:22 | pperry | New Issue | |
2023-11-14 11:22 | pperry | Status | new => assigned |
2023-11-14 11:22 | pperry | Assigned To | => pperry |
2023-11-22 22:53 | tqhoang | Note Added: 0009445 | |
2023-11-22 22:53 | tqhoang | File Added: nvidia-390xx-buildfix-el8_9.patch | |
2023-11-22 22:54 | tqhoang | Note Edited: 0009445 | |
2023-11-23 03:36 | pperry | Note Added: 0009448 | |
2023-11-23 03:36 | pperry | Status | assigned => resolved |
2023-11-23 03:36 | pperry | Resolution | open => fixed |