Skip to content

Commit b81d58e

Browse files
committed
580.159.04
1 parent 4dbb564 commit b81d58e

10 files changed

Lines changed: 89 additions & 31 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# NVIDIA Linux Open GPU Kernel Module Source
22

33
This is the source release of the NVIDIA Linux open GPU kernel modules,
4-
version 580.159.03.
4+
version 580.159.04.
55

66

77
## How to Build
@@ -17,7 +17,7 @@ as root:
1717

1818
Note that the kernel modules built here must be used with GSP
1919
firmware and user-space NVIDIA GPU driver components from a corresponding
20-
580.159.03 driver release. This can be achieved by installing
20+
580.159.04 driver release. This can be achieved by installing
2121
the NVIDIA GPU driver from the .run file using the `--no-kernel-modules`
2222
option. E.g.,
2323

@@ -185,7 +185,7 @@ table below).
185185
For details on feature support and limitations, see the NVIDIA GPU driver
186186
end user README here:
187187

188-
https://us.download.nvidia.com/XFree86/Linux-x86_64/580.159.03/README/kernel_open.html
188+
https://us.download.nvidia.com/XFree86/Linux-x86_64/580.159.04/README/kernel_open.html
189189

190190
For vGPU support, please refer to the README.vgpu packaged in the vGPU Host
191191
Package for more details.

kernel-open/Kbuild

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ ccflags-y += -I$(src)/common/inc
7979
ccflags-y += -I$(src)
8080
ccflags-y += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args
8181
ccflags-y += -D__KERNEL__ -DMODULE -DNVRM
82-
ccflags-y += -DNV_VERSION_STRING=\"580.159.03\"
82+
ccflags-y += -DNV_VERSION_STRING=\"580.159.04\"
8383

8484
# Include and link Tegra out-of-tree modules.
8585
ifneq ($(wildcard /usr/src/nvidia/nvidia-oot),)

kernel-open/common/inc/nv-linux.h

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1771,7 +1771,69 @@ typedef enum
17711771
#include <linux/reset.h>
17721772
#include <linux/dma-buf.h>
17731773
#include <linux/gpio.h>
1774+
#if defined(NV_LINUX_OF_GPIO_H_PRESENT)
17741775
#include <linux/of_gpio.h>
1776+
#else
1777+
#include <linux/gpio/driver.h>
1778+
1779+
/*
1780+
* of_get_named_gpio() was removed along with linux/of_gpio.h by commit
1781+
* 51aaf65bbd21 ("gpio: of: Remove <linux/of_gpio.h>"). Provide a compat
1782+
* implementation using the remaining public GPIO APIs.
1783+
*/
1784+
static inline int of_get_named_gpio(const struct device_node *np,
1785+
const char *propname, int index)
1786+
{
1787+
struct of_phandle_args gpiospec;
1788+
struct gpio_device *gdev;
1789+
struct gpio_desc *desc;
1790+
int ret;
1791+
1792+
if (!np)
1793+
return -ENOENT;
1794+
1795+
ret =
1796+
of_parse_phandle_with_args_map(np, propname, "gpio", index, &gpiospec);
1797+
if (ret)
1798+
return ret;
1799+
1800+
gdev = gpio_device_find_by_fwnode(of_fwnode_handle(gpiospec.np));
1801+
of_node_put(gpiospec.np);
1802+
if (!gdev)
1803+
return -EPROBE_DEFER;
1804+
1805+
/*
1806+
* Use the chip's of_xlate callback to translate the DT GPIO
1807+
* specifier into a linear offset. Tegra GPIO controllers encode
1808+
* port and pin in args[0] and of_xlate sums per-port pin counts
1809+
* to produce the real offset.
1810+
*/
1811+
{
1812+
struct gpio_chip *chip = gpio_device_get_chip(gdev);
1813+
int hwgpio;
1814+
1815+
#if defined(CONFIG_OF_GPIO)
1816+
if (chip->of_xlate)
1817+
hwgpio = chip->of_xlate(chip, &gpiospec, NULL);
1818+
else
1819+
#endif
1820+
hwgpio = gpiospec.args[0];
1821+
1822+
if (hwgpio < 0) {
1823+
gpio_device_put(gdev);
1824+
return hwgpio;
1825+
}
1826+
1827+
desc = gpio_device_get_desc(gdev, hwgpio);
1828+
}
1829+
gpio_device_put(gdev);
1830+
1831+
if (IS_ERR(desc))
1832+
return PTR_ERR(desc);
1833+
1834+
return desc_to_gpio(desc);
1835+
}
1836+
#endif
17751837
#include <linux/of_device.h>
17761838
#include <linux/of_platform.h>
17771839

kernel-open/header-presence-tests.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ NV_HEADER_PRESENCE_TESTS = \
3838
linux/vfio_pci_core.h \
3939
linux/cc_platform.h \
4040
linux/slub_def.h \
41+
linux/of_gpio.h \
4142
asm/mshyperv.h \
4243
crypto/sig.h
4344

src/common/inc/nvBldVer.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@
4343
#endif
4444

4545
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS)
46-
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r580/r582_49-529"
47-
#define NV_BUILD_CHANGELIST_NUM (37855428)
46+
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r580/r582_49-530"
47+
#define NV_BUILD_CHANGELIST_NUM (37889135)
4848
#define NV_BUILD_TYPE "Official"
49-
#define NV_BUILD_NAME "rel/gpu_drv/r580/r582_49-529"
50-
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (37855428)
49+
#define NV_BUILD_NAME "rel/gpu_drv/r580/r582_49-530"
50+
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (37889135)
5151

5252
#else /* Windows builds */
5353
#define NV_BUILD_BRANCH_VERSION "r582_49-2"

src/common/inc/nvUnixVersion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS) || defined(NV_VMWARE) || defined(NV_QNX) || defined(NV_INTEGRITY) || \
55
(defined(RMCFG_FEATURE_PLATFORM_GSP) && RMCFG_FEATURE_PLATFORM_GSP == 1)
66

7-
#define NV_VERSION_STRING "580.159.03"
7+
#define NV_VERSION_STRING "580.159.04"
88

99
#else
1010

src/nvidia/generated/g_kernel_nvlink_nvoc.c

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -242,18 +242,6 @@ void __nvoc_init_dataField_KernelNvlink(KernelNvlink *pThis, RmHalspecOwner *pRm
242242
pThis->setProperty(pThis, PDB_PROP_KNVLINK_ENABLED, NV_FALSE);
243243
}
244244

245-
// NVOC Property Hal field -- PDB_PROP_KNVLINK_RESET_HSHUBNVL_ON_TEARDOWN
246-
if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0xe0000000UL) ) ||
247-
( ((chipHal_HalVarIdx >> 5) == 2UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x00000fe6UL) )) /* ChipHal: GB100 | GB102 | GB10B | GB110 | GB112 | GB202 | GB203 | GB205 | GB206 | GB207 | GB20B | GB20C */
248-
{
249-
pThis->setProperty(pThis, PDB_PROP_KNVLINK_RESET_HSHUBNVL_ON_TEARDOWN, NV_TRUE);
250-
}
251-
// default
252-
else
253-
{
254-
pThis->setProperty(pThis, PDB_PROP_KNVLINK_RESET_HSHUBNVL_ON_TEARDOWN, NV_FALSE);
255-
}
256-
257245
// NVOC Property Hal field -- PDB_PROP_KNVLINK_UNSET_NVLINK_PEER_SUPPORTED
258246
if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0xf1f0fc00UL) ) ||
259247
( ((chipHal_HalVarIdx >> 5) == 2UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x00000fe6UL) )) /* ChipHal: GA100 | GA102 | GA103 | GA104 | GA106 | GA107 | AD102 | AD103 | AD104 | AD106 | AD107 | GH100 | GB100 | GB102 | GB10B | GB110 | GB112 | GB202 | GB203 | GB205 | GB206 | GB207 | GB20B | GB20C */

src/nvidia/generated/g_kernel_nvlink_nvoc.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -304,11 +304,10 @@ struct KernelNvlink {
304304
NV_STATUS (*__knvlinkEncryptionGetGpuIdentifiers__)(struct OBJGPU *, struct KernelNvlink * /*this*/); // halified (2 hals) body
305305
NV_STATUS (*__knvlinkEncryptionUpdateTopology__)(struct OBJGPU *, struct KernelNvlink * /*this*/, NvU32, NvU32); // halified (2 hals) body
306306

307-
// 21 PDB properties
307+
// 20 PDB properties
308308
// NvBool PDB_PROP_KNVLINK_IS_MISSING inherited from OBJENGSTATE
309309
NvBool PDB_PROP_KNVLINK_ENABLED;
310310
NvBool PDB_PROP_KNVLINK_L2_POWER_STATE_ENABLED;
311-
NvBool PDB_PROP_KNVLINK_RESET_HSHUBNVL_ON_TEARDOWN;
312311
NvBool PDB_PROP_KNVLINK_UNSET_NVLINK_PEER_SUPPORTED;
313312
NvBool PDB_PROP_KNVLINK_CONFIG_REQUIRE_INITIALIZED_LINKS_CHECK;
314313
NvBool PDB_PROP_KNVLINK_LANE_SHUTDOWN_ENABLED;
@@ -463,11 +462,10 @@ struct KernelNvlink_PRIVATE {
463462
NV_STATUS (*__knvlinkEncryptionGetGpuIdentifiers__)(struct OBJGPU *, struct KernelNvlink * /*this*/); // halified (2 hals) body
464463
NV_STATUS (*__knvlinkEncryptionUpdateTopology__)(struct OBJGPU *, struct KernelNvlink * /*this*/, NvU32, NvU32); // halified (2 hals) body
465464

466-
// 21 PDB properties
465+
// 20 PDB properties
467466
// NvBool PDB_PROP_KNVLINK_IS_MISSING inherited from OBJENGSTATE
468467
NvBool PDB_PROP_KNVLINK_ENABLED;
469468
NvBool PDB_PROP_KNVLINK_L2_POWER_STATE_ENABLED;
470-
NvBool PDB_PROP_KNVLINK_RESET_HSHUBNVL_ON_TEARDOWN;
471469
NvBool PDB_PROP_KNVLINK_UNSET_NVLINK_PEER_SUPPORTED;
472470
NvBool PDB_PROP_KNVLINK_CONFIG_REQUIRE_INITIALIZED_LINKS_CHECK;
473471
NvBool PDB_PROP_KNVLINK_LANE_SHUTDOWN_ENABLED;
@@ -609,8 +607,6 @@ extern const struct NVOC_CLASS_DEF __nvoc_class_def_KernelNvlink;
609607
#define PDB_PROP_KNVLINK_ENABLED_BASE_NAME PDB_PROP_KNVLINK_ENABLED
610608
#define PDB_PROP_KNVLINK_L2_POWER_STATE_ENABLED_BASE_CAST
611609
#define PDB_PROP_KNVLINK_L2_POWER_STATE_ENABLED_BASE_NAME PDB_PROP_KNVLINK_L2_POWER_STATE_ENABLED
612-
#define PDB_PROP_KNVLINK_RESET_HSHUBNVL_ON_TEARDOWN_BASE_CAST
613-
#define PDB_PROP_KNVLINK_RESET_HSHUBNVL_ON_TEARDOWN_BASE_NAME PDB_PROP_KNVLINK_RESET_HSHUBNVL_ON_TEARDOWN
614610
#define PDB_PROP_KNVLINK_UNSET_NVLINK_PEER_SUPPORTED_BASE_CAST
615611
#define PDB_PROP_KNVLINK_UNSET_NVLINK_PEER_SUPPORTED_BASE_NAME PDB_PROP_KNVLINK_UNSET_NVLINK_PEER_SUPPORTED
616612
#define PDB_PROP_KNVLINK_CONFIG_REQUIRE_INITIALIZED_LINKS_CHECK_BASE_CAST

src/nvidia/src/kernel/gpu/bus/arch/pascal/kern_bus_gp100.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -488,9 +488,20 @@ _kbusRemoveNvlinkPeerMapping
488488
// reach 0 until both the peer ids are removed. In this case,
489489
// busNvlinkMappingRefcountPerPeerId[peerId] == 0 check is required to
490490
// remove the peer id from busNvlinkPeerNumberMask[peerGpuInst].
491+
// Similarly, when busNvlinkMappingRefcountPerGpu[peerGpuInst] does reach 0,
492+
// we must remove both/all peers from busNvlinkPeerNumberMask[peerGpuInst].
493+
// See bug 6088482 for more details of this sequence.
491494
//
492-
if (pKernelBus0->p2p.busNvlinkMappingRefcountPerGpu[peerGpuInst] == 0 ||
493-
pKernelBus0->p2p.busNvlinkMappingRefcountPerPeerId[peerId] == 0)
495+
496+
if (pKernelBus0->p2p.busNvlinkMappingRefcountPerGpu[peerGpuInst] == 0)
497+
{
498+
NV_PRINTF(LEVEL_INFO,
499+
"Removing all remaining peer mappings for GPU%u to GPU%u (0x%x)\n",
500+
gpuGetInstance(pGpu0), peerGpuInst, pKernelBus0->p2p.busNvlinkPeerNumberMask[peerGpuInst]);
501+
502+
pKernelBus0->p2p.busNvlinkPeerNumberMask[peerGpuInst] = 0;
503+
}
504+
else if (pKernelBus0->p2p.busNvlinkMappingRefcountPerPeerId[peerId] == 0)
494505
{
495506
NV_PRINTF(LEVEL_INFO,
496507
"Removing mapping for GPU%u peer %u (GPU%u)\n",

version.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
NVIDIA_VERSION = 580.159.03
2-
NVIDIA_NVID_VERSION = 580.159.03
1+
NVIDIA_VERSION = 580.159.04
2+
NVIDIA_NVID_VERSION = 580.159.04
33
NVIDIA_NVID_EXTRA =
44

55
# This file.

0 commit comments

Comments
 (0)