mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-02-01 05:59:48 +00:00
515.65.01
This commit is contained in:
committed by
Liam Middlebrook
parent
fd95f2c984
commit
54b4babe66
@@ -715,12 +715,11 @@ NV_STATUS NV_API_CALL nv_acpi_ddc_method(
|
||||
)
|
||||
{
|
||||
acpi_status status;
|
||||
struct acpi_device *device = NULL;
|
||||
union acpi_object *ddc = NULL;
|
||||
struct list_head *node, *next;
|
||||
NvU32 i, largestEdidSize;
|
||||
acpi_handle dev_handle = NULL;
|
||||
acpi_handle lcd_dev_handle = NULL;
|
||||
acpi_handle handle = NULL;
|
||||
|
||||
if (!nv_acpi_get_device_handle(nv, &dev_handle))
|
||||
return NV_ERR_NOT_SUPPORTED;
|
||||
@@ -728,15 +727,6 @@ NV_STATUS NV_API_CALL nv_acpi_ddc_method(
|
||||
if (!dev_handle)
|
||||
return NV_ERR_INVALID_ARGUMENT;
|
||||
|
||||
#if defined(NV_ACPI_BUS_GET_DEVICE_PRESENT)
|
||||
status = acpi_bus_get_device(dev_handle, &device);
|
||||
#else
|
||||
return NV_ERR_NOT_SUPPORTED;
|
||||
#endif
|
||||
|
||||
if (ACPI_FAILURE(status) || !device)
|
||||
return NV_ERR_INVALID_ARGUMENT;
|
||||
|
||||
if (!NV_MAY_SLEEP())
|
||||
{
|
||||
#if defined(DEBUG)
|
||||
@@ -747,16 +737,16 @@ NV_STATUS NV_API_CALL nv_acpi_ddc_method(
|
||||
return NV_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
list_for_each_safe(node, next, &device->children)
|
||||
while (lcd_dev_handle == NULL)
|
||||
{
|
||||
unsigned long long device_id = 0;
|
||||
struct acpi_device *dev =
|
||||
list_entry(node, struct acpi_device, node);
|
||||
|
||||
if (!dev)
|
||||
continue;
|
||||
status = acpi_get_next_object(ACPI_TYPE_DEVICE, dev_handle,
|
||||
handle, &handle);
|
||||
if (ACPI_FAILURE(status) || (handle == NULL))
|
||||
break;
|
||||
|
||||
status = acpi_evaluate_integer(dev->handle, "_ADR", NULL, &device_id);
|
||||
status = acpi_evaluate_integer(handle, "_ADR", NULL, &device_id);
|
||||
if (ACPI_FAILURE(status))
|
||||
/* Couldnt query device_id for this device */
|
||||
continue;
|
||||
@@ -766,16 +756,13 @@ NV_STATUS NV_API_CALL nv_acpi_ddc_method(
|
||||
case 0x0118:
|
||||
case 0x0400:
|
||||
case 0xA420:
|
||||
lcd_dev_handle = dev->handle;
|
||||
lcd_dev_handle = handle;
|
||||
nv_printf(NV_DBG_INFO, "NVRM: %s Found LCD: %x\n",
|
||||
__FUNCTION__, device_id);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (lcd_dev_handle != NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
if (lcd_dev_handle == NULL)
|
||||
@@ -1125,15 +1112,14 @@ NV_STATUS NV_API_CALL nv_acpi_mux_method(
|
||||
)
|
||||
{
|
||||
acpi_status status;
|
||||
struct acpi_device *device = NULL;
|
||||
struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
union acpi_object *mux = NULL;
|
||||
union acpi_object mux_arg = { ACPI_TYPE_INTEGER };
|
||||
struct acpi_object_list input = { 1, &mux_arg };
|
||||
acpi_handle dev_handle = NULL;
|
||||
acpi_handle mux_dev_handle = NULL;
|
||||
acpi_handle handle = NULL;
|
||||
unsigned long long device_id = 0;
|
||||
struct list_head *node, *next;
|
||||
|
||||
if ((strcmp(pMethodName, "MXDS") != 0)
|
||||
&& (strcmp(pMethodName, "MXDM") != 0))
|
||||
@@ -1154,16 +1140,6 @@ NV_STATUS NV_API_CALL nv_acpi_mux_method(
|
||||
if (!dev_handle)
|
||||
return NV_ERR_INVALID_ARGUMENT;
|
||||
|
||||
#if defined(NV_ACPI_BUS_GET_DEVICE_PRESENT)
|
||||
status = acpi_bus_get_device(dev_handle, &device);
|
||||
#else
|
||||
return NV_ERR_NOT_SUPPORTED;
|
||||
#endif
|
||||
|
||||
|
||||
if (ACPI_FAILURE(status) || !device)
|
||||
return NV_ERR_INVALID_ARGUMENT;
|
||||
|
||||
if (!NV_MAY_SLEEP())
|
||||
{
|
||||
#if defined(DEBUG)
|
||||
@@ -1172,23 +1148,16 @@ NV_STATUS NV_API_CALL nv_acpi_mux_method(
|
||||
return NV_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
list_for_each_safe(node, next, &device->children)
|
||||
while (mux_dev_handle == NULL)
|
||||
{
|
||||
struct acpi_device *dev = list_entry(node, struct acpi_device, node);
|
||||
|
||||
if (!dev)
|
||||
continue;
|
||||
|
||||
status = acpi_evaluate_integer(dev->handle, "_ADR", NULL, &device_id);
|
||||
if (ACPI_FAILURE(status))
|
||||
/* Could not query device_id for this device */
|
||||
continue;
|
||||
|
||||
if (device_id == muxAcpiId)
|
||||
{
|
||||
mux_dev_handle = dev->handle;
|
||||
status = acpi_get_next_object(ACPI_TYPE_DEVICE, dev_handle,
|
||||
handle, &handle);
|
||||
if (ACPI_FAILURE(status) || (handle == NULL))
|
||||
break;
|
||||
}
|
||||
|
||||
status = acpi_evaluate_integer(handle, "_ADR", NULL, &device_id);
|
||||
if (ACPI_SUCCESS(status) && (device_id == muxAcpiId))
|
||||
mux_dev_handle = handle;
|
||||
}
|
||||
|
||||
if (mux_dev_handle == NULL)
|
||||
|
||||
@@ -797,12 +797,12 @@ nv_dma_buf_reuse(
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (buf->ops != &nv_dma_buf_ops)
|
||||
{
|
||||
nv_printf(NV_DBG_ERRORS, "NVRM: Invalid dma-buf fd\n");
|
||||
status = NV_ERR_INVALID_ARGUMENT;
|
||||
goto cleanup_dmabuf;
|
||||
}
|
||||
|
||||
|
||||
priv = buf->priv;
|
||||
|
||||
@@ -608,6 +608,13 @@ next_bar:
|
||||
dev_pm_set_driver_flags(nvl->dev, DPM_FLAG_NEVER_SKIP);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Dynamic power management should be enabled as the last step.
|
||||
* Kernel runtime power management framework can put the device
|
||||
* into the suspended state. Hardware register access should not be done
|
||||
* after enabling dynamic power management.
|
||||
*/
|
||||
rm_enable_dynamic_power_management(sp, nv);
|
||||
nv_kmem_cache_free_stack(sp);
|
||||
|
||||
return 0;
|
||||
@@ -683,8 +690,9 @@ nv_pci_remove(struct pci_dev *pci_dev)
|
||||
if ((NV_ATOMIC_READ(nvl->usage_count) != 0) && !(nv->is_external_gpu))
|
||||
{
|
||||
nv_printf(NV_DBG_ERRORS,
|
||||
"NVRM: Attempting to remove minor device %u with non-zero usage count!\n",
|
||||
nvl->minor_num);
|
||||
"NVRM: Attempting to remove device %04x:%02x:%02x.%x with non-zero usage count!\n",
|
||||
NV_PCI_DOMAIN_NUMBER(pci_dev), NV_PCI_BUS_NUMBER(pci_dev),
|
||||
NV_PCI_SLOT_NUMBER(pci_dev), PCI_FUNC(pci_dev->devfn));
|
||||
|
||||
/*
|
||||
* We can't return from this function without corrupting state, so we wait for
|
||||
@@ -708,9 +716,10 @@ nv_pci_remove(struct pci_dev *pci_dev)
|
||||
if (!nvl)
|
||||
{
|
||||
/* The device was not found, which should not happen */
|
||||
nv_printf(NV_DBG_ERRORS, "NVRM: Failed removal of minor device! %04x:%02x:%02x.%x\n",
|
||||
nv_printf(NV_DBG_ERRORS,
|
||||
"NVRM: Failed removal of device %04x:%02x:%02x.%x!\n",
|
||||
NV_PCI_DOMAIN_NUMBER(pci_dev), NV_PCI_BUS_NUMBER(pci_dev),
|
||||
NV_PCI_SLOT_NUMBER(pci_dev), PCI_FUNC(pci_dev->devfn));
|
||||
NV_PCI_SLOT_NUMBER(pci_dev), PCI_FUNC(pci_dev->devfn));
|
||||
WARN_ON(1);
|
||||
goto done;
|
||||
}
|
||||
@@ -719,8 +728,9 @@ nv_pci_remove(struct pci_dev *pci_dev)
|
||||
}
|
||||
|
||||
nv_printf(NV_DBG_ERRORS,
|
||||
"NVRM: Continuing with GPU removal for minor device %u\n",
|
||||
nvl->minor_num);
|
||||
"NVRM: Continuing with GPU removal for device %04x:%02x:%02x.%x\n",
|
||||
NV_PCI_DOMAIN_NUMBER(pci_dev), NV_PCI_BUS_NUMBER(pci_dev),
|
||||
NV_PCI_SLOT_NUMBER(pci_dev), PCI_FUNC(pci_dev->devfn));
|
||||
}
|
||||
|
||||
rm_check_for_gpu_surprise_removal(sp, nv);
|
||||
|
||||
@@ -5443,7 +5443,19 @@ NvBool NV_API_CALL nv_s2idle_pm_configured(void)
|
||||
return NV_FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* init_sync_kiocb() internally uses GPL licensed __get_task_ioprio() from
|
||||
* v5.20-rc1.
|
||||
*/
|
||||
#if defined(NV_GET_TASK_IOPRIO_PRESENT)
|
||||
memset(&kiocb, 0, sizeof(kiocb));
|
||||
kiocb.ki_filp = file;
|
||||
kiocb.ki_flags = iocb_flags(file);
|
||||
kiocb.ki_ioprio = IOPRIO_DEFAULT;
|
||||
#else
|
||||
init_sync_kiocb(&kiocb, file);
|
||||
#endif
|
||||
|
||||
kiocb.ki_pos = 0;
|
||||
iov_iter_kvec(&iter, READ, &iov, 1, sizeof(buf));
|
||||
|
||||
|
||||
@@ -199,7 +199,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_buf_ops_has_map_atomic
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_buf_has_dynamic_attachment
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_buf_attachment_has_peer2peer
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_set_mask_and_coherent
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += acpi_bus_get_device
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += get_task_ioprio
|
||||
|
||||
NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_gpl_of_node_to_nid
|
||||
NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_gpl_sme_active
|
||||
|
||||
Reference in New Issue
Block a user