mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-01-26 19:19:47 +00:00
580.76.05
This commit is contained in:
@@ -79,7 +79,7 @@ ccflags-y += -I$(src)/common/inc
|
||||
ccflags-y += -I$(src)
|
||||
ccflags-y += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args
|
||||
ccflags-y += -D__KERNEL__ -DMODULE -DNVRM
|
||||
ccflags-y += -DNV_VERSION_STRING=\"580.65.06\"
|
||||
ccflags-y += -DNV_VERSION_STRING=\"580.76.05\"
|
||||
|
||||
# Include and link Tegra out-of-tree modules.
|
||||
ifneq ($(wildcard /usr/src/nvidia/nvidia-oot),)
|
||||
|
||||
@@ -656,23 +656,24 @@ typedef NV_STATUS (*nvPmaEvictRangeCallback)(void *, NvU64, NvU64, nvgpuGpuMemor
|
||||
* flags
|
||||
*/
|
||||
|
||||
#define NV_FLAG_OPEN 0x0001
|
||||
#define NV_FLAG_EXCLUDE 0x0002
|
||||
#define NV_FLAG_CONTROL 0x0004
|
||||
#define NV_FLAG_PCI_P2P_UNSUPPORTED_CHIPSET 0x0008
|
||||
#define NV_FLAG_SOC_DISPLAY 0x0010
|
||||
#define NV_FLAG_USES_MSI 0x0020
|
||||
#define NV_FLAG_USES_MSIX 0x0040
|
||||
#define NV_FLAG_PASSTHRU 0x0080
|
||||
#define NV_FLAG_SUSPENDED 0x0100
|
||||
#define NV_FLAG_OPEN 0x0001
|
||||
#define NV_FLAG_EXCLUDE 0x0002
|
||||
#define NV_FLAG_CONTROL 0x0004
|
||||
#define NV_FLAG_PCI_P2P_UNSUPPORTED_CHIPSET 0x0008
|
||||
#define NV_FLAG_SOC_DISPLAY 0x0010
|
||||
#define NV_FLAG_USES_MSI 0x0020
|
||||
#define NV_FLAG_USES_MSIX 0x0040
|
||||
#define NV_FLAG_PASSTHRU 0x0080
|
||||
#define NV_FLAG_SUSPENDED 0x0100
|
||||
#define NV_FLAG_HAS_CONSOLE_IN_SYSMEM_CARVEOUT 0x0200
|
||||
/* To be set when an FLR needs to be triggered after device shut down. */
|
||||
#define NV_FLAG_TRIGGER_FLR 0x0400
|
||||
#define NV_FLAG_PERSISTENT_SW_STATE 0x0800
|
||||
#define NV_FLAG_IN_RECOVERY 0x1000
|
||||
#define NV_FLAG_PCI_REMOVE_IN_PROGRESS 0x2000
|
||||
#define NV_FLAG_UNBIND_LOCK 0x4000
|
||||
#define NV_FLAG_TRIGGER_FLR 0x0400
|
||||
#define NV_FLAG_PERSISTENT_SW_STATE 0x0800
|
||||
#define NV_FLAG_IN_RECOVERY 0x1000
|
||||
#define NV_FLAG_PCI_REMOVE_IN_PROGRESS 0x2000
|
||||
#define NV_FLAG_UNBIND_LOCK 0x4000
|
||||
/* To be set when GPU is not present on the bus, to help device teardown */
|
||||
#define NV_FLAG_IN_SURPRISE_REMOVAL 0x8000
|
||||
#define NV_FLAG_IN_SURPRISE_REMOVAL 0x8000
|
||||
|
||||
typedef enum
|
||||
{
|
||||
@@ -729,6 +730,9 @@ typedef enum
|
||||
#define NV_IS_DEVICE_IN_SURPRISE_REMOVAL(nv) \
|
||||
(((nv)->flags & NV_FLAG_IN_SURPRISE_REMOVAL) != 0)
|
||||
|
||||
#define NV_HAS_CONSOLE_IN_SYSMEM_CARVEOUT(nv) \
|
||||
(((nv)->flags & NV_FLAG_HAS_CONSOLE_IN_SYSMEM_CARVEOUT) != 0)
|
||||
|
||||
/*
|
||||
* For console setup by EFI GOP, the base address is BAR1.
|
||||
* For console setup by VBIOS, the base address is BAR2 + 16MB.
|
||||
|
||||
@@ -785,7 +785,8 @@ static NV_STATUS va_range_add_gpu_va_space_managed(uvm_va_range_managed_t *manag
|
||||
NV_STATUS status = NV_OK;
|
||||
const bool should_add_remote_mappings =
|
||||
uvm_processor_mask_test(&managed_range->policy.accessed_by, gpu->id) ||
|
||||
uvm_processor_mask_test(&managed_range->va_range.uvm_lite_gpus, gpu->id);
|
||||
uvm_processor_mask_test(&managed_range->va_range.uvm_lite_gpus, gpu->id) ||
|
||||
gpu->parent->is_integrated_gpu;
|
||||
|
||||
// By this time, the gpu is already in the registration mask.
|
||||
const bool should_disable_read_duplication =
|
||||
|
||||
@@ -1450,16 +1450,16 @@ static int nv_start_device(nv_state_t *nv, nvidia_stack_t *sp)
|
||||
{
|
||||
rc = os_alloc_mutex(&nvl->isr_bh_unlocked_mutex);
|
||||
if (rc != 0)
|
||||
goto failed;
|
||||
goto failed_release_irq;
|
||||
nv_kthread_q_item_init(&nvl->bottom_half_q_item, nvidia_isr_bh_unlocked, (void *)nv);
|
||||
rc = nv_kthread_q_init(&nvl->bottom_half_q, nv_device_name);
|
||||
if (rc != 0)
|
||||
goto failed;
|
||||
goto failed_release_irq;
|
||||
kthread_init = NV_TRUE;
|
||||
|
||||
rc = nv_kthread_q_init(&nvl->queue.nvk, "nv_queue");
|
||||
if (rc)
|
||||
goto failed;
|
||||
goto failed_release_irq;
|
||||
nv->queue = &nvl->queue;
|
||||
|
||||
if (nv_platform_use_auto_online(nvl))
|
||||
@@ -1467,33 +1467,18 @@ static int nv_start_device(nv_state_t *nv, nvidia_stack_t *sp)
|
||||
rc = nv_kthread_q_init(&nvl->remove_numa_memory_q,
|
||||
"nv_remove_numa_memory");
|
||||
if (rc)
|
||||
goto failed;
|
||||
goto failed_release_irq;
|
||||
remove_numa_memory_kthread_init = NV_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (!rm_init_adapter(sp, nv))
|
||||
{
|
||||
if (!(nv->flags & NV_FLAG_USES_MSIX) &&
|
||||
!(nv->flags & NV_FLAG_SOC_DISPLAY))
|
||||
{
|
||||
free_irq(nv->interrupt_line, (void *) nvl);
|
||||
}
|
||||
else if (nv->flags & NV_FLAG_SOC_DISPLAY)
|
||||
{
|
||||
nv_soc_free_irqs(nv);
|
||||
}
|
||||
#if defined(NV_LINUX_PCIE_MSI_SUPPORTED)
|
||||
else
|
||||
{
|
||||
nv_free_msix_irq(nvl);
|
||||
}
|
||||
#endif
|
||||
NV_DEV_PRINTF(NV_DBG_ERRORS, nv,
|
||||
"rm_init_adapter failed, device minor number %d\n",
|
||||
nvl->minor_num);
|
||||
rc = -EIO;
|
||||
goto failed;
|
||||
goto failed_release_irq;
|
||||
}
|
||||
|
||||
{
|
||||
@@ -1527,6 +1512,26 @@ static int nv_start_device(nv_state_t *nv, nvidia_stack_t *sp)
|
||||
|
||||
return 0;
|
||||
|
||||
failed_release_irq:
|
||||
if (!(nv->flags & NV_FLAG_PERSISTENT_SW_STATE))
|
||||
{
|
||||
if (!(nv->flags & NV_FLAG_USES_MSIX) &&
|
||||
!(nv->flags & NV_FLAG_SOC_DISPLAY))
|
||||
{
|
||||
free_irq(nv->interrupt_line, (void *) nvl);
|
||||
}
|
||||
else if (nv->flags & NV_FLAG_SOC_DISPLAY)
|
||||
{
|
||||
nv_soc_free_irqs(nv);
|
||||
}
|
||||
#if defined(NV_LINUX_PCIE_MSI_SUPPORTED)
|
||||
else
|
||||
{
|
||||
nv_free_msix_irq(nvl);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
failed:
|
||||
#if defined(NV_LINUX_PCIE_MSI_SUPPORTED)
|
||||
if (nv->flags & NV_FLAG_USES_MSI)
|
||||
@@ -2452,6 +2457,7 @@ nvidia_ioctl(
|
||||
if (arg_cmd == NV_ESC_WAIT_OPEN_COMPLETE)
|
||||
{
|
||||
nv_ioctl_wait_open_complete_t *params = arg_copy;
|
||||
|
||||
params->rc = nvlfp->open_rc;
|
||||
params->adapterStatus = nvlfp->adapter_status;
|
||||
goto done_early;
|
||||
@@ -6154,8 +6160,13 @@ void NV_API_CALL nv_get_screen_info(
|
||||
if (!registered_fb[i])
|
||||
continue;
|
||||
|
||||
/* Make sure base address is mapped to GPU BAR */
|
||||
if (NV_IS_CONSOLE_MAPPED(nv, registered_fb[i]->fix.smem_start))
|
||||
/*
|
||||
* Ensure that either this is a zero-FB SOC GPU with a console in
|
||||
* the system carveout, or it’s a dGPU device with console mapped
|
||||
* onto its BAR.
|
||||
*/
|
||||
if (NV_HAS_CONSOLE_IN_SYSMEM_CARVEOUT(nv) ||
|
||||
NV_IS_CONSOLE_MAPPED(nv, registered_fb[i]->fix.smem_start))
|
||||
{
|
||||
*pPhysicalAddress = registered_fb[i]->fix.smem_start;
|
||||
*pFbWidth = registered_fb[i]->var.xres;
|
||||
@@ -6203,9 +6214,13 @@ void NV_API_CALL nv_get_screen_info(
|
||||
physAddr |= (NvU64)screen_info.ext_lfb_base << 32;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Make sure base address is mapped to GPU BAR */
|
||||
if (NV_IS_CONSOLE_MAPPED(nv, physAddr))
|
||||
/*
|
||||
* Ensure that either this is a zero-FB SOC GPU with a console in the
|
||||
* system carveout, or it’s a dGPU device with console mapped onto its
|
||||
* BAR.
|
||||
*/
|
||||
if (NV_HAS_CONSOLE_IN_SYSMEM_CARVEOUT(nv) ||
|
||||
NV_IS_CONSOLE_MAPPED(nv, physAddr))
|
||||
{
|
||||
*pPhysicalAddress = physAddr;
|
||||
*pFbWidth = screen_info.lfb_width;
|
||||
@@ -6222,7 +6237,7 @@ void NV_API_CALL nv_get_screen_info(
|
||||
* If screen info can't be fetched with previous methods, then try
|
||||
* to get the base address and size from the memory resource tree.
|
||||
*/
|
||||
if (pci_dev != NULL)
|
||||
if ((pci_dev != NULL) && !NV_HAS_CONSOLE_IN_SYSMEM_CARVEOUT(nv))
|
||||
{
|
||||
BUILD_BUG_ON(NV_GPU_BAR_INDEX_IMEM != NV_GPU_BAR_INDEX_FB + 1);
|
||||
for (i = NV_GPU_BAR_INDEX_FB; i <= NV_GPU_BAR_INDEX_IMEM; i++)
|
||||
|
||||
@@ -2313,7 +2313,7 @@ static int os_numa_verify_gpu_memory_zone(struct notifier_block *nb,
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
|
||||
#define ADD_REMOVE_GPU_MEMORY_NUM_SEGMENTS 4
|
||||
#define ADD_REMOVE_GPU_MEMORY_NUM_SEGMENTS 128
|
||||
|
||||
NV_STATUS NV_API_CALL os_numa_add_gpu_memory
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user