Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37658252
en ru br
Репозитории ALT

Группа :: Система/Ядро и оборудование
Пакет: nvidia_glx_src_390.157

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: buildfix_kernel_5.19.patch
Скачать


diff -urpN build.orig/nvidia/nv-acpi.c build/nvidia/nv-acpi.c
--- build.orig/nvidia/nv-acpi.c	2022-07-01 07:10:08.638181001 +0000
+++ build/nvidia/nv-acpi.c	2022-07-01 07:10:38.665965357 +0000
@@ -15,6 +15,9 @@
 #include "nv-linux.h"
 #include "nv-reg.h"
 
+#include <linux/version.h>
+#include <linux/utsname.h>
+
 #if defined(NV_LINUX_ACPI_EVENTS_SUPPORTED)
 static NV_STATUS   nv_acpi_extract_integer (const union acpi_object *, void *, NvU32, NvU32 *);
 static NV_STATUS   nv_acpi_extract_buffer  (const union acpi_object *, void *, NvU32, NvU32 *);
@@ -41,6 +44,10 @@ static NV_STATUS   nv_acpi_mxms_method
 static int         nv_acpi_match           (struct acpi_device *, struct acpi_driver *);
 #endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
+#undef NV_ACPI_BUS_GET_DEVICE_PRESENT
+#endif
+
 #if defined(ACPI_VIDEO_HID) && defined(NV_ACPI_DEVICE_ID_HAS_DRIVER_DATA) 
 static const struct acpi_device_id nv_video_device_ids[] = {
     { 
diff -urpN build.orig/nvidia/nv-dma.c build/nvidia/nv-dma.c
--- build.orig/nvidia/nv-dma.c	2022-07-01 07:10:08.638181001 +0000
+++ build/nvidia/nv-dma.c	2022-07-01 07:11:11.961742706 +0000
@@ -14,6 +14,81 @@
 #include "os-interface.h"
 #include "nv-linux.h"
 
+#include <linux/version.h>
+#include <linux/utsname.h>
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
+#define PCI_DMA_TODEVICE DMA_TO_DEVICE
+#define PCI_DMA_FROMDEVICE DMA_FROM_DEVICE
+#define PCI_DMA_BIDIRECTIONAL DMA_BIDIRECTIONAL
+
+static inline dma_addr_t
+pci_map_page(struct pci_dev *hwdev, struct page *page,
+	     unsigned long offset, size_t size, int direction)
+{
+	return dma_map_page(&hwdev->dev, page, offset, size, (enum dma_data_direction)direction);
+}
+
+static inline void
+pci_unmap_page(struct pci_dev *hwdev, dma_addr_t dma_address,
+	       size_t size, int direction)
+{
+	dma_unmap_page(&hwdev->dev, dma_address, size, (enum dma_data_direction)direction);
+}
+
+static inline int pci_set_dma_mask(struct pci_dev *pdev, u64 mask)
+{
+	return dma_set_mask(&pdev->dev, mask);
+}
+
+static inline dma_addr_t
+pci_map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction)
+{
+	return dma_map_single(&hwdev->dev, ptr, size, (enum dma_data_direction)direction);
+}
+
+static inline void
+pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr,
+		 size_t size, int direction)
+{
+	dma_unmap_single(&hwdev->dev, dma_addr, size, (enum dma_data_direction)direction);
+}
+
+static inline int
+pci_dma_mapping_error(struct pci_dev *pdev, dma_addr_t dma_addr)
+{
+	return dma_mapping_error(&pdev->dev, dma_addr);
+}
+
+static inline void
+pci_dma_sync_single_for_cpu(struct pci_dev *hwdev, dma_addr_t dma_handle,
+			    size_t size, int direction)
+{
+	dma_sync_single_for_cpu(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction);
+}
+
+static inline void
+pci_dma_sync_single_for_device(struct pci_dev *hwdev, dma_addr_t dma_handle,
+			       size_t size, int direction)
+{
+	dma_sync_single_for_device(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction);
+}
+
+static inline int
+pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
+          int nents, int direction)
+{
+	return dma_map_sg(&hwdev->dev, sg, nents, (enum dma_data_direction)direction);
+}
+
+static inline void
+pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg,
+	      int nents, int direction)
+{
+	dma_unmap_sg(&hwdev->dev, sg, nents, (enum dma_data_direction)direction);
+}
+#endif
+
 NV_STATUS   nv_create_dma_map_scatterlist (nv_dma_map_t *dma_map);
 void        nv_destroy_dma_map_scatterlist(nv_dma_map_t *dma_map);
 NV_STATUS   nv_map_dma_map_scatterlist    (nv_dma_map_t *dma_map);
diff -urpN build.orig/nvidia/nv.c build/nvidia/nv.c
--- build.orig/nvidia/nv.c	2022-07-01 07:10:08.638181001 +0000
+++ build/nvidia/nv.c	2022-07-01 07:10:38.665965357 +0000
@@ -337,6 +337,18 @@ struct pci_error_handlers nv_pci_error_h
  *** STATIC functions
  ***/
 
+#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 18, 0)
+static inline int pci_set_dma_mask(struct pci_dev *pdev, u64 mask)
+{
+      return dma_set_mask(&pdev->dev, mask);
+}
+
+static inline int pci_set_consistent_dma_mask(struct pci_dev *pdev, u64 mask)
+{
+      return dma_set_coherent_mask(&pdev->dev, mask);
+}
+#endif
+
 static
 nv_alloc_t *nvos_create_alloc(
     struct pci_dev *dev,
diff -urpN build.orig/nvidia-drm/nvidia-drm-gem.c build/nvidia-drm/nvidia-drm-gem.c
--- build.orig/nvidia-drm/nvidia-drm-gem.c	2022-07-01 07:10:08.638181001 +0000
+++ build/nvidia-drm/nvidia-drm-gem.c	2022-07-01 07:10:38.669965330 +0000
@@ -31,12 +31,25 @@
 #include "nvidia-dma-resv-helper.h"
 #include "nvidia-drm-gem-nvkms-memory.h"
 
+#include <linux/version.h>
+#include <linux/utsname.h>
+
 #if defined(NV_DRM_DRM_PRIME_H_PRESENT)
 #include <drm/drm_prime.h>
 #endif
 
 #include "linux/dma-buf.h"
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
+struct dma_buf_map {
+	union {
+		void __iomem *vaddr_iomem;
+		void *vaddr;
+	};
+	bool is_iomem;
+};
+#endif
+
 void nv_drm_gem_free(struct drm_gem_object *gem)
 {
     struct nv_drm_gem_object *nv_gem = to_nv_gem_object(gem);
@@ -64,8 +77,13 @@ typedef struct iosys_map nv_sysio_map_t;
 typedef struct dma_buf_map nv_sysio_map_t;
 #endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
+static int nv_drm_gem_vmap(struct drm_gem_object *gem,
+			   struct iosys_map *map)
+#else
 static int nv_drm_gem_vmap(struct drm_gem_object *gem,
-                           nv_sysio_map_t *map)
+			   struct dma_buf_map *map)
+#endif
 {
     map->vaddr = nv_drm_gem_prime_vmap(gem);
     if (map->vaddr == NULL) {
@@ -75,8 +93,14 @@ static int nv_drm_gem_vmap(struct drm_ge
     return 0;
 }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
 static void nv_drm_gem_vunmap(struct drm_gem_object *gem,
-                              nv_sysio_map_t *map)
+			      struct iosys_map *map)
+#else
+
+static void nv_drm_gem_vunmap(struct drm_gem_object *gem,
+			      struct dma_buf_map *map)
+#endif
 {
     nv_drm_gem_prime_vunmap(gem, map->vaddr);
     map->vaddr = NULL;
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin