Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
207a166fc3 | ||
![]() |
1f3ce1beab | ||
![]() |
ad22fd4262 | ||
![]() |
a0e46cabd3 | ||
![]() |
ebcc6656ff |
18
CHANGELOG.md
18
CHANGELOG.md
@ -2,6 +2,20 @@
|
||||
|
||||
## Release 525 Entries
|
||||
|
||||
### [525.147.05] 2023-10-31
|
||||
|
||||
### [525.125.06] 2023-06-26
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fix nvidia_p2p_get_pages(): Fix double-free in register-callback error path, [#557](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/557) by @BrendanCunningham
|
||||
|
||||
### [525.116.04] 2023-05-09
|
||||
|
||||
### [525.116.03] 2023-04-25
|
||||
|
||||
### [525.105.17] 2023-03-30
|
||||
|
||||
### [525.89.02] 2023-02-08
|
||||
|
||||
### [525.85.12] 2023-01-30
|
||||
@ -18,6 +32,10 @@
|
||||
|
||||
### [525.60.11] 2022-11-28
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Fixed nvenc compatibility with usermode clients [#104](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/104)
|
||||
|
||||
### [525.53] 2022-11-10
|
||||
|
||||
#### Changed
|
||||
|
36
README.md
36
README.md
@ -1,7 +1,7 @@
|
||||
# NVIDIA Linux Open GPU Kernel Module Source
|
||||
|
||||
This is the source release of the NVIDIA Linux open GPU kernel modules,
|
||||
version 525.89.02.
|
||||
version 525.147.05.
|
||||
|
||||
|
||||
## How to Build
|
||||
@ -17,7 +17,7 @@ as root:
|
||||
|
||||
Note that the kernel modules built here must be used with GSP
|
||||
firmware and user-space NVIDIA GPU driver components from a corresponding
|
||||
525.89.02 driver release. This can be achieved by installing
|
||||
525.147.05 driver release. This can be achieved by installing
|
||||
the NVIDIA GPU driver from the .run file using the `--no-kernel-modules`
|
||||
option. E.g.,
|
||||
|
||||
@ -167,7 +167,7 @@ for the target kernel.
|
||||
## Compatible GPUs
|
||||
|
||||
The open-gpu-kernel-modules can be used on any Turing or later GPU
|
||||
(see the table below). However, in the 525.89.02 release,
|
||||
(see the table below). However, in the 525.147.05 release,
|
||||
GeForce and Workstation support is still considered alpha-quality.
|
||||
|
||||
To enable use of the open kernel modules on GeForce and Workstation GPUs,
|
||||
@ -175,7 +175,7 @@ set the "NVreg_OpenRmEnableUnsupportedGpus" nvidia.ko kernel module
|
||||
parameter to 1. For more details, see the NVIDIA GPU driver end user
|
||||
README here:
|
||||
|
||||
https://us.download.nvidia.com/XFree86/Linux-x86_64/525.89.02/README/kernel_open.html
|
||||
https://us.download.nvidia.com/XFree86/Linux-x86_64/525.147.05/README/kernel_open.html
|
||||
|
||||
In the below table, if three IDs are listed, the first is the PCI Device
|
||||
ID, the second is the PCI Subsystem Vendor ID, and the third is the PCI
|
||||
@ -645,12 +645,15 @@ Subsystem Device ID.
|
||||
| NVIDIA A100-SXM4-80GB | 20B2 10DE 147F |
|
||||
| NVIDIA A100-SXM4-80GB | 20B2 10DE 1622 |
|
||||
| NVIDIA A100-SXM4-80GB | 20B2 10DE 1623 |
|
||||
| NVIDIA PG509-210 | 20B2 10DE 1625 |
|
||||
| NVIDIA A100-SXM-64GB | 20B3 10DE 14A7 |
|
||||
| NVIDIA A100-SXM-64GB | 20B3 10DE 14A8 |
|
||||
| NVIDIA A100 80GB PCIe | 20B5 10DE 1533 |
|
||||
| NVIDIA A100 80GB PCIe | 20B5 10DE 1642 |
|
||||
| NVIDIA PG506-232 | 20B6 10DE 1492 |
|
||||
| NVIDIA A30 | 20B7 10DE 1532 |
|
||||
| NVIDIA A30 | 20B7 10DE 1804 |
|
||||
| NVIDIA A30 | 20B7 10DE 1852 |
|
||||
| NVIDIA A100-PCIE-40GB | 20F1 10DE 145F |
|
||||
| NVIDIA A800-SXM4-80GB | 20F3 10DE 179B |
|
||||
| NVIDIA A800-SXM4-80GB | 20F3 10DE 179C |
|
||||
@ -720,9 +723,13 @@ Subsystem Device ID.
|
||||
| NVIDIA A10 | 2236 10DE 1482 |
|
||||
| NVIDIA A10G | 2237 10DE 152F |
|
||||
| NVIDIA A10M | 2238 10DE 1677 |
|
||||
| NVIDIA H800 PCIe | 2322 10DE 17A4 |
|
||||
| NVIDIA H800 | 2324 10DE 17A6 |
|
||||
| NVIDIA H800 | 2324 10DE 17A8 |
|
||||
| NVIDIA H100 80GB HBM3 | 2330 10DE 16C0 |
|
||||
| NVIDIA H100 80GB HBM3 | 2330 10DE 16C1 |
|
||||
| NVIDIA H100 PCIe | 2331 10DE 1626 |
|
||||
| NVIDIA H100 | 2339 10DE 17FC |
|
||||
| NVIDIA GeForce RTX 3060 Ti | 2414 |
|
||||
| NVIDIA GeForce RTX 3080 Ti Laptop GPU | 2420 |
|
||||
| NVIDIA RTX A5500 Laptop GPU | 2438 |
|
||||
@ -750,6 +757,7 @@ Subsystem Device ID.
|
||||
| NVIDIA RTX A3000 12GB Laptop GPU | 24B9 |
|
||||
| NVIDIA RTX A4500 Laptop GPU | 24BA |
|
||||
| NVIDIA RTX A3000 12GB Laptop GPU | 24BB |
|
||||
| NVIDIA GeForce RTX 3060 | 24C7 |
|
||||
| NVIDIA GeForce RTX 3060 Ti | 24C9 |
|
||||
| NVIDIA GeForce RTX 3080 Laptop GPU | 24DC |
|
||||
| NVIDIA GeForce RTX 3070 Laptop GPU | 24DD |
|
||||
@ -795,6 +803,8 @@ Subsystem Device ID.
|
||||
| NVIDIA RTX A1000 Laptop GPU | 25B9 |
|
||||
| NVIDIA RTX A2000 8GB Laptop GPU | 25BA |
|
||||
| NVIDIA RTX A500 Laptop GPU | 25BB |
|
||||
| NVIDIA RTX A1000 6GB Laptop GPU | 25BC |
|
||||
| NVIDIA RTX A500 Laptop GPU | 25BD |
|
||||
| NVIDIA GeForce RTX 3050 Ti Laptop GPU | 25E0 |
|
||||
| NVIDIA GeForce RTX 3050 Laptop GPU | 25E2 |
|
||||
| NVIDIA GeForce RTX 3050 Laptop GPU | 25E5 |
|
||||
@ -809,15 +819,33 @@ Subsystem Device ID.
|
||||
| NVIDIA RTX 6000 Ada Generation | 26B1 10DE 16A1 |
|
||||
| NVIDIA RTX 6000 Ada Generation | 26B1 17AA 16A1 |
|
||||
| NVIDIA L40 | 26B5 10DE 169D |
|
||||
| NVIDIA L40 | 26B5 10DE 17DA |
|
||||
| NVIDIA GeForce RTX 4080 | 2704 |
|
||||
| NVIDIA GeForce RTX 4090 Laptop GPU | 2717 |
|
||||
| NVIDIA RTX 5000 Ada Generation Laptop GPU | 2730 |
|
||||
| NVIDIA GeForce RTX 4090 Laptop GPU | 2757 |
|
||||
| NVIDIA RTX 5000 Ada Generation Embedded GPU | 2770 |
|
||||
| NVIDIA GeForce RTX 4070 Ti | 2782 |
|
||||
| NVIDIA GeForce RTX 4070 | 2786 |
|
||||
| NVIDIA GeForce RTX 4080 Laptop GPU | 27A0 |
|
||||
| NVIDIA RTX 4000 SFF Ada Generation | 27B0 1028 16FA |
|
||||
| NVIDIA RTX 4000 SFF Ada Generation | 27B0 103C 16FA |
|
||||
| NVIDIA RTX 4000 SFF Ada Generation | 27B0 10DE 16FA |
|
||||
| NVIDIA RTX 4000 SFF Ada Generation | 27B0 17AA 16FA |
|
||||
| NVIDIA L4 | 27B8 10DE 16CA |
|
||||
| NVIDIA L4 | 27B8 10DE 16EE |
|
||||
| NVIDIA RTX 4000 Ada Generation Laptop GPU | 27BA |
|
||||
| NVIDIA RTX 3500 Ada Generation Laptop GPU | 27BB |
|
||||
| NVIDIA GeForce RTX 4080 Laptop GPU | 27E0 |
|
||||
| NVIDIA GeForce RTX 4060 Ti | 2803 |
|
||||
| NVIDIA GeForce RTX 4060 Ti | 2805 |
|
||||
| NVIDIA GeForce RTX 4070 Laptop GPU | 2820 |
|
||||
| NVIDIA RTX 3000 Ada Generation Laptop GPU | 2838 |
|
||||
| NVIDIA GeForce RTX 4070 Laptop GPU | 2860 |
|
||||
| NVIDIA GeForce RTX 4060 | 2882 |
|
||||
| NVIDIA GeForce RTX 4060 Laptop GPU | 28A0 |
|
||||
| NVIDIA GeForce RTX 4050 Laptop GPU | 28A1 |
|
||||
| NVIDIA RTX 2000 Ada Generation Laptop GPU | 28B8 |
|
||||
| NVIDIA GeForce RTX 4060 Laptop GPU | 28E0 |
|
||||
| NVIDIA GeForce RTX 4050 Laptop GPU | 28E1 |
|
||||
| NVIDIA RTX 2000 Ada Generation Embedded GPU | 28F8 |
|
||||
|
@ -72,7 +72,7 @@ EXTRA_CFLAGS += -I$(src)/common/inc
|
||||
EXTRA_CFLAGS += -I$(src)
|
||||
EXTRA_CFLAGS += -Wall -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-error -Wno-format-extra-args
|
||||
EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -DNVRM
|
||||
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"525.89.02\"
|
||||
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"525.147.05\"
|
||||
|
||||
EXTRA_CFLAGS += -Wno-unused-function
|
||||
|
||||
@ -268,6 +268,7 @@ NV_HEADER_PRESENCE_TESTS = \
|
||||
asm/opal-api.h \
|
||||
sound/hdaudio.h \
|
||||
asm/pgtable_types.h \
|
||||
asm/page.h \
|
||||
linux/stringhash.h \
|
||||
linux/dma-map-ops.h \
|
||||
rdma/peer_mem.h \
|
||||
|
@ -57,6 +57,7 @@ typedef struct
|
||||
void *waitQueue;
|
||||
void *nv;
|
||||
NvU32 *vgpuTypeIds;
|
||||
NvU8 **vgpuNames;
|
||||
NvU32 numVgpuTypes;
|
||||
NvU32 domain;
|
||||
NvU8 bus;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2016-2017 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2016-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -36,12 +36,21 @@ typedef int vm_fault_t;
|
||||
* pin_user_pages() was added by commit eddb1c228f7951d399240
|
||||
* ("mm/gup: introduce pin_user_pages*() and FOLL_PIN") in v5.6-rc1 (2020-01-30)
|
||||
*
|
||||
* Removed vmas parameter from pin_user_pages() by commit 40896a02751
|
||||
* ("mm/gup: remove vmas parameter from pin_user_pages()")
|
||||
* in linux-next, expected in v6.5-rc1 (2023-05-17)
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/mm.h>
|
||||
#include <linux/sched.h>
|
||||
#if defined(NV_PIN_USER_PAGES_PRESENT)
|
||||
#define NV_PIN_USER_PAGES pin_user_pages
|
||||
#if defined(NV_PIN_USER_PAGES_HAS_ARGS_VMAS)
|
||||
#define NV_PIN_USER_PAGES pin_user_pages
|
||||
#else
|
||||
#define NV_PIN_USER_PAGES(start, nr_pages, gup_flags, pages, vmas) \
|
||||
pin_user_pages(start, nr_pages, gup_flags, pages)
|
||||
#endif // NV_PIN_USER_PAGES_HAS_ARGS_VMAS
|
||||
#define NV_UNPIN_USER_PAGE unpin_user_page
|
||||
#else
|
||||
#define NV_PIN_USER_PAGES NV_GET_USER_PAGES
|
||||
@ -64,11 +73,18 @@ typedef int vm_fault_t;
|
||||
* commit 8e50b8b07f462ab4b91bc1491b1c91bd75e4ad40 which cherry-picked the
|
||||
* replacement of the write and force parameters with gup_flags
|
||||
*
|
||||
* Removed vmas parameter from get_user_pages() by commit 7bbf9c8c99
|
||||
* ("mm/gup: remove unused vmas parameter from get_user_pages()")
|
||||
* in linux-next, expected in v6.5-rc1 (2023-05-17)
|
||||
*
|
||||
*/
|
||||
|
||||
#if defined(NV_GET_USER_PAGES_HAS_ARGS_FLAGS)
|
||||
#define NV_GET_USER_PAGES(start, nr_pages, flags, pages, vmas) \
|
||||
get_user_pages(start, nr_pages, flags, pages)
|
||||
#elif defined(NV_GET_USER_PAGES_HAS_ARGS_FLAGS_VMAS)
|
||||
#define NV_GET_USER_PAGES get_user_pages
|
||||
#elif defined(NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS)
|
||||
#elif defined(NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS_VMAS)
|
||||
#define NV_GET_USER_PAGES(start, nr_pages, flags, pages, vmas) \
|
||||
get_user_pages(current, current->mm, start, nr_pages, flags, pages, vmas)
|
||||
#else
|
||||
@ -81,13 +97,13 @@ typedef int vm_fault_t;
|
||||
int write = flags & FOLL_WRITE;
|
||||
int force = flags & FOLL_FORCE;
|
||||
|
||||
#if defined(NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE)
|
||||
#if defined(NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS)
|
||||
return get_user_pages(start, nr_pages, write, force, pages, vmas);
|
||||
#else
|
||||
// NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE
|
||||
// NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS
|
||||
return get_user_pages(current, current->mm, start, nr_pages, write,
|
||||
force, pages, vmas);
|
||||
#endif // NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE
|
||||
#endif // NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS
|
||||
}
|
||||
#endif // NV_GET_USER_PAGES_HAS_ARGS_FLAGS
|
||||
|
||||
@ -100,15 +116,22 @@ typedef int vm_fault_t;
|
||||
* 64019a2e467a ("mm/gup: remove task_struct pointer for all gup code")
|
||||
* in v5.9-rc1 (2020-08-11). *
|
||||
*
|
||||
* Removed unused vmas parameter from pin_user_pages_remote() by commit
|
||||
* 83bcc2e132("mm/gup: remove unused vmas parameter from pin_user_pages_remote()")
|
||||
* in linux-next, expected in v6.5-rc1 (2023-05-14)
|
||||
*
|
||||
*/
|
||||
|
||||
#if defined(NV_PIN_USER_PAGES_REMOTE_PRESENT)
|
||||
#if defined (NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK)
|
||||
#if defined(NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS)
|
||||
#define NV_PIN_USER_PAGES_REMOTE(mm, start, nr_pages, flags, pages, vmas, locked) \
|
||||
pin_user_pages_remote(NULL, mm, start, nr_pages, flags, pages, vmas, locked)
|
||||
#else
|
||||
#elif defined(NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_VMAS)
|
||||
#define NV_PIN_USER_PAGES_REMOTE pin_user_pages_remote
|
||||
#endif // NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK
|
||||
#else
|
||||
#define NV_PIN_USER_PAGES_REMOTE(mm, start, nr_pages, flags, pages, vmas, locked) \
|
||||
pin_user_pages_remote(mm, start, nr_pages, flags, pages, locked)
|
||||
#endif // NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS
|
||||
#else
|
||||
#define NV_PIN_USER_PAGES_REMOTE NV_GET_USER_PAGES_REMOTE
|
||||
#endif // NV_PIN_USER_PAGES_REMOTE_PRESENT
|
||||
@ -135,22 +158,30 @@ typedef int vm_fault_t;
|
||||
* commit 64019a2e467a ("mm/gup: remove task_struct pointer for
|
||||
* all gup code") in v5.9-rc1 (2020-08-11).
|
||||
*
|
||||
* Removed vmas parameter from get_user_pages_remote() by commit a4bde14d549
|
||||
* ("mm/gup: remove vmas parameter from get_user_pages_remote()")
|
||||
* in linux-next, expected in v6.5-rc1 (2023-05-14)
|
||||
*
|
||||
*/
|
||||
|
||||
#if defined(NV_GET_USER_PAGES_REMOTE_PRESENT)
|
||||
#if defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED)
|
||||
#define NV_GET_USER_PAGES_REMOTE(mm, start, nr_pages, flags, pages, vmas, locked) \
|
||||
get_user_pages_remote(mm, start, nr_pages, flags, pages, locked)
|
||||
|
||||
#elif defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED_VMAS)
|
||||
#define NV_GET_USER_PAGES_REMOTE get_user_pages_remote
|
||||
|
||||
#elif defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED)
|
||||
#elif defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED_VMAS)
|
||||
#define NV_GET_USER_PAGES_REMOTE(mm, start, nr_pages, flags, pages, vmas, locked) \
|
||||
get_user_pages_remote(NULL, mm, start, nr_pages, flags, pages, vmas, locked)
|
||||
|
||||
#elif defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS)
|
||||
#elif defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_VMAS)
|
||||
#define NV_GET_USER_PAGES_REMOTE(mm, start, nr_pages, flags, pages, vmas, locked) \
|
||||
get_user_pages_remote(NULL, mm, start, nr_pages, flags, pages, vmas)
|
||||
|
||||
#else
|
||||
// NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE
|
||||
// NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE_VMAS
|
||||
static inline long NV_GET_USER_PAGES_REMOTE(struct mm_struct *mm,
|
||||
unsigned long start,
|
||||
unsigned long nr_pages,
|
||||
@ -167,7 +198,7 @@ typedef int vm_fault_t;
|
||||
}
|
||||
#endif // NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED
|
||||
#else
|
||||
#if defined(NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE)
|
||||
#if defined(NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS)
|
||||
static inline long NV_GET_USER_PAGES_REMOTE(struct mm_struct *mm,
|
||||
unsigned long start,
|
||||
unsigned long nr_pages,
|
||||
@ -185,7 +216,7 @@ typedef int vm_fault_t;
|
||||
#else
|
||||
#define NV_GET_USER_PAGES_REMOTE(mm, start, nr_pages, flags, pages, vmas, locked) \
|
||||
get_user_pages(NULL, mm, start, nr_pages, flags, pages, vmas)
|
||||
#endif // NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE
|
||||
#endif // NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS
|
||||
#endif // NV_GET_USER_PAGES_REMOTE_PRESENT
|
||||
|
||||
/*
|
||||
@ -261,4 +292,22 @@ static inline struct rw_semaphore *nv_mmap_get_lock(struct mm_struct *mm)
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void nv_vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags)
|
||||
{
|
||||
#if defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS)
|
||||
vm_flags_set(vma, flags);
|
||||
#else
|
||||
vma->vm_flags |= flags;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void nv_vm_flags_clear(struct vm_area_struct *vma, vm_flags_t flags)
|
||||
{
|
||||
#if defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS)
|
||||
vm_flags_clear(vma, flags);
|
||||
#else
|
||||
vma->vm_flags &= ~flags;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // __NV_MM_H__
|
||||
|
@ -495,6 +495,12 @@ struct nv_file_private_t
|
||||
nv_file_private_t *ctl_nvfp;
|
||||
void *ctl_nvfp_priv;
|
||||
NvU32 register_or_refcount;
|
||||
|
||||
//
|
||||
// True if a client or an event was ever allocated on this fd.
|
||||
// If false, RMAPI cleanup is skipped.
|
||||
//
|
||||
NvBool bCleanupRmapi;
|
||||
};
|
||||
|
||||
// Forward define the gpu ops structures
|
||||
|
@ -450,6 +450,9 @@ compile_test() {
|
||||
#if defined(NV_ASM_PGTABLE_TYPES_H_PRESENT)
|
||||
#include <asm/pgtable_types.h>
|
||||
#endif
|
||||
#if defined(NV_ASM_PAGE_H_PRESENT)
|
||||
#include <asm/page.h>
|
||||
#endif
|
||||
#include <asm/set_memory.h>
|
||||
#else
|
||||
#include <asm/cacheflush.h>
|
||||
@ -472,6 +475,9 @@ compile_test() {
|
||||
#if defined(NV_ASM_PGTABLE_TYPES_H_PRESENT)
|
||||
#include <asm/pgtable_types.h>
|
||||
#endif
|
||||
#if defined(NV_ASM_PAGE_H_PRESENT)
|
||||
#include <asm/page.h>
|
||||
#endif
|
||||
#include <asm/set_memory.h>
|
||||
#else
|
||||
#include <asm/cacheflush.h>
|
||||
@ -529,6 +535,9 @@ compile_test() {
|
||||
#if defined(NV_ASM_PGTABLE_TYPES_H_PRESENT)
|
||||
#include <asm/pgtable_types.h>
|
||||
#endif
|
||||
#if defined(NV_ASM_PAGE_H_PRESENT)
|
||||
#include <asm/page.h>
|
||||
#endif
|
||||
#include <asm/set_memory.h>
|
||||
#else
|
||||
#include <asm/cacheflush.h>
|
||||
@ -556,6 +565,9 @@ compile_test() {
|
||||
#if defined(NV_ASM_PGTABLE_TYPES_H_PRESENT)
|
||||
#include <asm/pgtable_types.h>
|
||||
#endif
|
||||
#if defined(NV_ASM_PAGE_H_PRESENT)
|
||||
#include <asm/page.h>
|
||||
#endif
|
||||
#include <asm/set_memory.h>
|
||||
#else
|
||||
#include <asm/cacheflush.h>
|
||||
@ -942,9 +954,26 @@ compile_test() {
|
||||
compile_check_conftest "$CODE" "NV_VFIO_MIGRATION_OPS_PRESENT" "" "types"
|
||||
;;
|
||||
|
||||
mdev_parent)
|
||||
vfio_migration_ops_has_migration_get_data_size)
|
||||
#
|
||||
# Determine if the struct mdev_parent type is present.
|
||||
# Determine if vfio_migration_ops struct has .migration_get_data_size field.
|
||||
#
|
||||
# Added by commit in 4e016f969529f ("vfio: Add an option to get migration
|
||||
# data size") in v6.2 kernel.
|
||||
#
|
||||
CODE="
|
||||
#include <linux/pci.h>
|
||||
#include <linux/vfio.h>
|
||||
int conftest_mdev_vfio_migration_ops_has_migration_get_data_size(void) {
|
||||
return offsetof(struct vfio_migration_ops, migration_get_data_size);
|
||||
}"
|
||||
|
||||
compile_check_conftest "$CODE" "NV_VFIO_MIGRATION_OPS_HAS_MIGRATION_GET_DATA_SIZE" "" "types"
|
||||
;;
|
||||
|
||||
mdev_parent_ops)
|
||||
#
|
||||
# Determine if the struct mdev_parent_ops type is present.
|
||||
#
|
||||
# Added by commit 42930553a7c1 ("vfio-mdev: de-polute the
|
||||
# namespace, rename parent_device & parent_ops") in v4.10
|
||||
@ -952,12 +981,28 @@ compile_test() {
|
||||
CODE="
|
||||
#include <linux/pci.h>
|
||||
#include <linux/mdev.h>
|
||||
struct mdev_parent_ops conftest_mdev_parent;
|
||||
struct mdev_parent_ops conftest_mdev_parent_ops;
|
||||
"
|
||||
|
||||
compile_check_conftest "$CODE" "NV_MDEV_PARENT_OPS_STRUCT_PRESENT" "" "types"
|
||||
;;
|
||||
|
||||
mdev_parent)
|
||||
#
|
||||
# Determine if the struct mdev_parent type is present.
|
||||
#
|
||||
# Added by commit 89345d5177aa ("vfio/mdev: embedd struct mdev_parent in
|
||||
# the parent data structure") in v6.1
|
||||
#
|
||||
CODE="
|
||||
#include <linux/pci.h>
|
||||
#include <linux/mdev.h>
|
||||
struct mdev_parent conftest_mdev_parent;
|
||||
"
|
||||
|
||||
compile_check_conftest "$CODE" "NV_MDEV_PARENT_STRUCT_PRESENT" "" "types"
|
||||
;;
|
||||
|
||||
mdev_parent_dev)
|
||||
#
|
||||
# Determine if mdev_parent_dev() function is present or not
|
||||
@ -975,6 +1020,23 @@ compile_test() {
|
||||
compile_check_conftest "$CODE" "NV_MDEV_PARENT_DEV_PRESENT" "" "functions"
|
||||
;;
|
||||
|
||||
vfio_free_device)
|
||||
#
|
||||
# Determine if vfio_free_device() function is present or not
|
||||
#
|
||||
# Removed by commit 913447d06f03 ("vfio: Remove vfio_free_device")
|
||||
# in v6.2
|
||||
#
|
||||
CODE="
|
||||
#include <linux/pci.h>
|
||||
#include <linux/vfio.h>
|
||||
void conftest_vfio_free_device() {
|
||||
vfio_free_device();
|
||||
}"
|
||||
|
||||
compile_check_conftest "$CODE" "NV_VFIO_FREE_DEVICE_PRESENT" "" "functions"
|
||||
;;
|
||||
|
||||
mdev_from_dev)
|
||||
#
|
||||
# Determine if mdev_from_dev() function is present or not.
|
||||
@ -1147,7 +1209,6 @@ compile_test() {
|
||||
compile_check_conftest "$CODE" "NV_VFIO_UNINIT_GROUP_DEV_PRESENT" "" "functions"
|
||||
;;
|
||||
|
||||
|
||||
vfio_pci_core_available)
|
||||
# Determine if VFIO_PCI_CORE is available
|
||||
#
|
||||
@ -1170,6 +1231,23 @@ compile_test() {
|
||||
compile_check_conftest "$CODE" "NV_VFIO_PCI_CORE_PRESENT" "" "generic"
|
||||
;;
|
||||
|
||||
vfio_alloc_device)
|
||||
#
|
||||
# Determine if vfio_alloc_device() function is present or not.
|
||||
#
|
||||
# Added by commit cb9ff3f3b84c (vfio: Add helpers for unifying vfio_device
|
||||
# life cycle) in v6.1
|
||||
#
|
||||
CODE="
|
||||
#include <linux/vfio.h>
|
||||
void conftest_vfio_alloc_device() {
|
||||
vfio_alloc_device();
|
||||
}"
|
||||
|
||||
compile_check_conftest "$CODE" "NV_VFIO_ALLOC_DEVICE_PRESENT" "" "functions"
|
||||
;;
|
||||
|
||||
|
||||
vfio_register_emulated_iommu_dev)
|
||||
#
|
||||
# Determine if vfio_register_emulated_iommu_dev() function is present or not.
|
||||
@ -2237,6 +2315,10 @@ compile_test() {
|
||||
# commit 768ae309a961 ("mm: replace get_user_pages() write/force
|
||||
# parameters with gup_flags") in v4.9 (2016-10-13)
|
||||
#
|
||||
# Removed vmas parameter from get_user_pages() by commit 7bbf9c8c99
|
||||
# ("mm/gup: remove unused vmas parameter from get_user_pages()")
|
||||
# in linux-next, expected in v6.5-rc1
|
||||
#
|
||||
# linux-4.4.168 cherry-picked commit 768ae309a961 without
|
||||
# c12d2da56d0e which is covered in Conftest #3.
|
||||
#
|
||||
@ -2246,22 +2328,28 @@ compile_test() {
|
||||
# passing conftest's
|
||||
#
|
||||
set_get_user_pages_defines () {
|
||||
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE" | append_conftest "functions"
|
||||
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS" | append_conftest "functions"
|
||||
else
|
||||
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE" | append_conftest "functions"
|
||||
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE" | append_conftest "functions"
|
||||
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS" | append_conftest "functions"
|
||||
else
|
||||
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE" | append_conftest "functions"
|
||||
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS" | append_conftest "functions"
|
||||
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS_VMAS" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS_VMAS" | append_conftest "functions"
|
||||
else
|
||||
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS" | append_conftest "functions"
|
||||
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS_VMAS" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_FLAGS_VMAS" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_HAS_ARGS_FLAGS_VMAS" | append_conftest "functions"
|
||||
else
|
||||
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_FLAGS_VMAS" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_FLAGS" ]; then
|
||||
@ -2269,6 +2357,7 @@ compile_test() {
|
||||
else
|
||||
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_FLAGS" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# Conftest #1: Check if get_user_pages accepts 6 arguments.
|
||||
@ -2289,14 +2378,15 @@ compile_test() {
|
||||
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
|
||||
rm -f conftest$$.c
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE"
|
||||
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS"
|
||||
rm -f conftest$$.o
|
||||
return
|
||||
fi
|
||||
|
||||
# Conftest #2: Check if get_user_pages has gup_flags instead of
|
||||
# write and force parameters. And that gup doesn't accept a
|
||||
# task_struct and mm_struct as its first arguments.
|
||||
# task_struct and mm_struct as its first arguments. get_user_pages
|
||||
# has vm_area_struct as its last argument.
|
||||
# Return if available.
|
||||
# Fall through to conftest #3 on failure.
|
||||
|
||||
@ -2314,16 +2404,17 @@ compile_test() {
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_FLAGS"
|
||||
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_FLAGS_VMAS"
|
||||
rm -f conftest$$.o
|
||||
return
|
||||
fi
|
||||
|
||||
# Conftest #3: Check if get_user_pages has gup_flags instead of
|
||||
# write and force parameters AND that gup has task_struct and
|
||||
# mm_struct as its first arguments.
|
||||
# write and force parameters. The gup has task_struct and
|
||||
# mm_struct as its first arguments. get_user_pages
|
||||
# has vm_area_struct as its last argument.
|
||||
# Return if available.
|
||||
# Fall through to default case if absent.
|
||||
# Fall through to conftest #4 on failure.
|
||||
|
||||
echo "$CONFTEST_PREAMBLE
|
||||
#include <linux/mm.h>
|
||||
@ -2341,12 +2432,35 @@ compile_test() {
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS"
|
||||
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS_VMAS"
|
||||
rm -f conftest$$.o
|
||||
return
|
||||
fi
|
||||
|
||||
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE"
|
||||
# Conftest #4: gup doesn't accept a task_struct and mm_struct as
|
||||
# its first arguments. check if get_user_pages() does not take
|
||||
# vmas argument.
|
||||
# Fall through to default case otherwise.
|
||||
|
||||
echo "$CONFTEST_PREAMBLE
|
||||
#include <linux/mm.h>
|
||||
long get_user_pages(unsigned long start,
|
||||
unsigned long nr_pages,
|
||||
unsigned int gup_flags,
|
||||
struct page **pages) {
|
||||
return 0;
|
||||
}" > conftest$$.c
|
||||
|
||||
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_FLAGS"
|
||||
rm -f conftest$$.o
|
||||
return
|
||||
fi
|
||||
|
||||
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS"
|
||||
|
||||
return
|
||||
;;
|
||||
@ -2373,6 +2487,10 @@ compile_test() {
|
||||
# commit 64019a2e467a ("mm/gup: remove task_struct pointer for
|
||||
# all gup code") in v5.9-rc1 (2020-08-11).
|
||||
#
|
||||
# Removed vmas parameter from get_user_pages_remote() by commit
|
||||
# a4bde14d549 ("mm/gup: remove vmas parameter from get_user_pages_remote()")
|
||||
# in linux-next, expected in v6.5-rc1
|
||||
#
|
||||
|
||||
#
|
||||
# This function sets the NV_GET_USER_PAGES_REMOTE_* macros as per
|
||||
@ -2385,22 +2503,28 @@ compile_test() {
|
||||
echo "#define NV_GET_USER_PAGES_REMOTE_PRESENT" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE" | append_conftest "functions"
|
||||
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE_VMAS" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE_VMAS" | append_conftest "functions"
|
||||
else
|
||||
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE" | append_conftest "functions"
|
||||
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE_VMAS" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS" | append_conftest "functions"
|
||||
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_VMAS" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_VMAS" | append_conftest "functions"
|
||||
else
|
||||
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS" | append_conftest "functions"
|
||||
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_VMAS" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED" | append_conftest "functions"
|
||||
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED_VMAS" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED_VMAS" | append_conftest "functions"
|
||||
else
|
||||
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED" | append_conftest "functions"
|
||||
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED_VMAS" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED_VMAS" ]; then
|
||||
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED_VMAS" | append_conftest "functions"
|
||||
else
|
||||
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED_VMAS" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED" ]; then
|
||||
@ -2408,6 +2532,7 @@ compile_test() {
|
||||
else
|
||||
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# conftest #1: check if get_user_pages_remote() is available
|
||||
@ -2430,8 +2555,8 @@ compile_test() {
|
||||
fi
|
||||
|
||||
#
|
||||
# conftest #2: check if get_user_pages_remote() has write and
|
||||
# force arguments. Return if these arguments are present
|
||||
# conftest #2: check if get_user_pages_remote() has write, force
|
||||
# and vmas arguments. Return if these arguments are present
|
||||
# Fall through to conftest #3 if these args are absent.
|
||||
#
|
||||
echo "$CONFTEST_PREAMBLE
|
||||
@ -2451,14 +2576,14 @@ compile_test() {
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE"
|
||||
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE_VMAS"
|
||||
rm -f conftest$$.o
|
||||
return
|
||||
fi
|
||||
|
||||
#
|
||||
# conftest #3: check if get_user_pages_remote() has gpu_flags
|
||||
# arguments. Return if these arguments are present
|
||||
# conftest #3: check if get_user_pages_remote() has gpu_flags and
|
||||
# vmas arguments. Return if these arguments are present
|
||||
# Fall through to conftest #4 if these args are absent.
|
||||
#
|
||||
echo "$CONFTEST_PREAMBLE
|
||||
@ -2477,13 +2602,14 @@ compile_test() {
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS"
|
||||
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_VMAS"
|
||||
rm -f conftest$$.o
|
||||
return
|
||||
fi
|
||||
|
||||
#
|
||||
# conftest #4: check if get_user_pages_remote() has locked argument
|
||||
# conftest #4: check if get_user_pages_remote() has locked and
|
||||
# vmas argument
|
||||
# Return if these arguments are present. Fall through to conftest #5
|
||||
# if these args are absent.
|
||||
#
|
||||
@ -2504,7 +2630,7 @@ compile_test() {
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED"
|
||||
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED_VMAS"
|
||||
rm -f conftest$$.o
|
||||
return
|
||||
fi
|
||||
@ -2528,10 +2654,34 @@ compile_test() {
|
||||
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED_VMAS"
|
||||
rm -f conftest$$.o
|
||||
fi
|
||||
|
||||
#
|
||||
# conftest #6: check if get_user_pages_remote() does not take
|
||||
# vmas argument.
|
||||
#
|
||||
echo "$CONFTEST_PREAMBLE
|
||||
#include <linux/mm.h>
|
||||
long get_user_pages_remote(struct mm_struct *mm,
|
||||
unsigned long start,
|
||||
unsigned long nr_pages,
|
||||
unsigned int gup_flags,
|
||||
struct page **pages,
|
||||
int *locked) {
|
||||
return 0;
|
||||
}" > conftest$$.c
|
||||
|
||||
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED"
|
||||
rm -f conftest$$.o
|
||||
fi
|
||||
|
||||
;;
|
||||
|
||||
pin_user_pages)
|
||||
@ -2543,17 +2693,65 @@ compile_test() {
|
||||
# pin_user_pages() was added by commit eddb1c228f7951d399240
|
||||
# ("mm/gup: introduce pin_user_pages*() and FOLL_PIN") in
|
||||
# v5.6-rc1 (2020-01-30)
|
||||
#
|
||||
# Removed vmas parameter from pin_user_pages() by commit
|
||||
# 40896a02751("mm/gup: remove vmas parameter from pin_user_pages()")
|
||||
# in linux-next, expected in v6.5-rc1
|
||||
|
||||
set_pin_user_pages_defines () {
|
||||
if [ "$1" = "" ]; then
|
||||
echo "#undef NV_PIN_USER_PAGES_PRESENT" | append_conftest "functions"
|
||||
else
|
||||
echo "#define NV_PIN_USER_PAGES_PRESENT" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_PIN_USER_PAGES_HAS_ARGS_VMAS" ]; then
|
||||
echo "#define NV_PIN_USER_PAGES_HAS_ARGS_VMAS" | append_conftest "functions"
|
||||
else
|
||||
echo "#undef NV_PIN_USER_PAGES_HAS_ARGS_VMAS" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# conftest #1: check if pin_user_pages() is available
|
||||
# return if not available.
|
||||
# Fall through to conftest #2 if it is present
|
||||
#
|
||||
CODE="
|
||||
echo "$CONFTEST_PREAMBLE
|
||||
#include <linux/mm.h>
|
||||
void conftest_pin_user_pages(void) {
|
||||
pin_user_pages();
|
||||
}"
|
||||
}" > conftest$$.c
|
||||
|
||||
compile_check_conftest "$CODE" "NV_PIN_USER_PAGES_PRESENT" "" "functions"
|
||||
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_pin_user_pages_defines ""
|
||||
rm -f conftest$$.o
|
||||
return
|
||||
fi
|
||||
|
||||
# conftest #2: Check if pin_user_pages() has vmas argument
|
||||
echo "$CONFTEST_PREAMBLE
|
||||
#include <linux/mm.h>
|
||||
long pin_user_pages(unsigned long start,
|
||||
unsigned long nr_pages,
|
||||
unsigned int gup_flags,
|
||||
struct page **pages,
|
||||
struct vm_area_struct **vmas) {
|
||||
return 0;
|
||||
}" > conftest$$.c
|
||||
|
||||
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_pin_user_pages_defines "NV_PIN_USER_PAGES_HAS_ARGS_VMAS"
|
||||
rm -f conftest$$.o
|
||||
else
|
||||
set_pin_user_pages_defines "NV_PIN_USER_PAGES_PRESENT"
|
||||
fi
|
||||
;;
|
||||
|
||||
pin_user_pages_remote)
|
||||
@ -2566,6 +2764,10 @@ compile_test() {
|
||||
# pin_user_pages_remote() removed 'tsk' parameter by
|
||||
# commit 64019a2e467a ("mm/gup: remove task_struct pointer for
|
||||
# all gup code") in v5.9-rc1 (2020-08-11).
|
||||
#
|
||||
# Removed unused vmas parameter from pin_user_pages_remote() by
|
||||
# commit 83bcc2e132 ("mm/gup: remove unused vmas parameter from
|
||||
# pin_user_pages_remote()") in linux-next, expected in v6.5-rc1
|
||||
|
||||
#
|
||||
# This function sets the NV_PIN_USER_PAGES_REMOTE_* macros as per
|
||||
@ -2578,10 +2780,16 @@ compile_test() {
|
||||
echo "#define NV_PIN_USER_PAGES_REMOTE_PRESENT" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK" ]; then
|
||||
echo "#define NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK" | append_conftest "functions"
|
||||
if [ "$1" = "NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS" ]; then
|
||||
echo "#define NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS" | append_conftest "functions"
|
||||
else
|
||||
echo "#undef NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK" | append_conftest "functions"
|
||||
echo "#undef NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS" | append_conftest "functions"
|
||||
fi
|
||||
|
||||
if [ "$1" = "NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_VMAS" ]; then
|
||||
echo "#define NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_VMAS" | append_conftest "functions"
|
||||
else
|
||||
echo "#undef NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_VMAS" | append_conftest "functions"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -2604,7 +2812,11 @@ compile_test() {
|
||||
return
|
||||
fi
|
||||
|
||||
# conftest #2: Check if pin_user_pages_remote() has tsk argument
|
||||
# conftest #2: Check if pin_user_pages_remote() has tsk and
|
||||
# vmas argument
|
||||
# Return if these arguments are present else fall through to
|
||||
# conftest #3
|
||||
|
||||
echo "$CONFTEST_PREAMBLE
|
||||
#include <linux/mm.h>
|
||||
long pin_user_pages_remote(struct task_struct *tsk,
|
||||
@ -2622,11 +2834,34 @@ compile_test() {
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_pin_user_pages_remote_defines "NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK"
|
||||
set_pin_user_pages_remote_defines "NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS"
|
||||
rm -f conftest$$.o
|
||||
return
|
||||
fi
|
||||
|
||||
# conftest #3: Check if pin_user_pages_remote() has vmas argument
|
||||
echo "$CONFTEST_PREAMBLE
|
||||
#include <linux/mm.h>
|
||||
long pin_user_pages_remote(struct mm_struct *mm,
|
||||
unsigned long start,
|
||||
unsigned long nr_pages,
|
||||
unsigned int gup_flags,
|
||||
struct page **pages,
|
||||
struct vm_area_struct **vmas,
|
||||
int *locked) {
|
||||
return 0;
|
||||
}" > conftest$$.c
|
||||
|
||||
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
|
||||
rm -f conftest$$.c
|
||||
|
||||
if [ -f conftest$$.o ]; then
|
||||
set_pin_user_pages_remote_defines "NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_VMAS"
|
||||
rm -f conftest$$.o
|
||||
else
|
||||
set_pin_user_pages_remote_defines "NV_PIN_USER_PAGES_REMOTE_PRESENT"
|
||||
fi
|
||||
|
||||
;;
|
||||
|
||||
vfio_pin_pages_has_vfio_device_arg)
|
||||
@ -5095,23 +5330,6 @@ compile_test() {
|
||||
compile_check_conftest "$CODE" "NV_GPIO_TO_IRQ_PRESENT" "" "functions"
|
||||
;;
|
||||
|
||||
migrate_vma_setup)
|
||||
#
|
||||
# Determine if migrate_vma_setup() function is present
|
||||
#
|
||||
# migrate_vma_setup() function was added by commit
|
||||
# a7d1f22bb74f32cf3cd93f52776007e161f1a738 ("mm: turn migrate_vma
|
||||
# upside down) in v5.4.
|
||||
# (2019-08-20).
|
||||
CODE="
|
||||
#include <linux/migrate.h>
|
||||
int conftest_migrate_vma_setup(void) {
|
||||
migrate_vma_setup();
|
||||
}"
|
||||
|
||||
compile_check_conftest "$CODE" "NV_MIGRATE_VMA_SETUP_PRESENT" "" "functions"
|
||||
;;
|
||||
|
||||
migrate_vma_added_flags)
|
||||
#
|
||||
# Determine if migrate_vma structure has flags
|
||||
@ -5475,6 +5693,49 @@ compile_test() {
|
||||
compile_check_conftest "$CODE" "NV_DRM_CONNECTOR_HAS_OVERRIDE_EDID" "" "types"
|
||||
;;
|
||||
|
||||
vm_area_struct_has_const_vm_flags)
|
||||
#
|
||||
# Determine if the 'vm_area_struct' structure has
|
||||
# const 'vm_flags'.
|
||||
#
|
||||
# A union of '__vm_flags' and 'const vm_flags' was added
|
||||
# by commit bc292ab00f6c ("mm: introduce vma->vm_flags
|
||||
# wrapper functions") in mm-stable branch (2023-02-09)
|
||||
# of the akpm/mm maintainer tree.
|
||||
#
|
||||
CODE="
|
||||
#include <linux/mm_types.h>
|
||||
int conftest_vm_area_struct_has_const_vm_flags(void) {
|
||||
return offsetof(struct vm_area_struct, __vm_flags);
|
||||
}"
|
||||
|
||||
compile_check_conftest "$CODE" "NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS" "" "types"
|
||||
;;
|
||||
|
||||
drm_driver_has_dumb_destroy)
|
||||
#
|
||||
# Determine if the 'drm_driver' structure has a 'dumb_destroy'
|
||||
# function pointer.
|
||||
#
|
||||
# Removed by commit 96a7b60f6ddb2 ("drm: remove dumb_destroy
|
||||
# callback") in v6.3 linux-next (2023-02-10).
|
||||
#
|
||||
CODE="
|
||||
#if defined(NV_DRM_DRMP_H_PRESENT)
|
||||
#include <drm/drmP.h>
|
||||
#endif
|
||||
|
||||
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
|
||||
#include <drm/drm_drv.h>
|
||||
#endif
|
||||
|
||||
int conftest_drm_driver_has_dumb_destroy(void) {
|
||||
return offsetof(struct drm_driver, dumb_destroy);
|
||||
}"
|
||||
|
||||
compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_DUMB_DESTROY" "" "types"
|
||||
;;
|
||||
|
||||
# When adding a new conftest entry, please use the correct format for
|
||||
# specifying the relevant upstream Linux kernel commit.
|
||||
#
|
||||
|
@ -855,8 +855,23 @@ static struct drm_driver nv_drm_driver = {
|
||||
.ioctls = nv_drm_ioctls,
|
||||
.num_ioctls = ARRAY_SIZE(nv_drm_ioctls),
|
||||
|
||||
/*
|
||||
* linux-next commit 71a7974ac701 ("drm/prime: Unexport helpers for fd/handle
|
||||
* conversion") unexports drm_gem_prime_handle_to_fd() and
|
||||
* drm_gem_prime_fd_to_handle().
|
||||
*
|
||||
* Prior linux-next commit 6b85aa68d9d5 ("drm: Enable PRIME import/export for
|
||||
* all drivers") made these helpers the default when .prime_handle_to_fd /
|
||||
* .prime_fd_to_handle are unspecified, so it's fine to just skip specifying
|
||||
* them if the helpers aren't present.
|
||||
*/
|
||||
#if NV_IS_EXPORT_SYMBOL_PRESENT_drm_gem_prime_handle_to_fd
|
||||
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
|
||||
#endif
|
||||
#if NV_IS_EXPORT_SYMBOL_PRESENT_drm_gem_prime_fd_to_handle
|
||||
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
|
||||
#endif
|
||||
|
||||
.gem_prime_import = nv_drm_gem_prime_import,
|
||||
.gem_prime_import_sg_table = nv_drm_gem_prime_import_sg_table,
|
||||
|
||||
@ -921,7 +936,9 @@ static void nv_drm_update_drm_driver_features(void)
|
||||
|
||||
nv_drm_driver.dumb_create = nv_drm_dumb_create;
|
||||
nv_drm_driver.dumb_map_offset = nv_drm_dumb_map_offset;
|
||||
#if defined(NV_DRM_DRIVER_HAS_DUMB_DESTROY)
|
||||
nv_drm_driver.dumb_destroy = nv_drm_dumb_destroy;
|
||||
#endif /* NV_DRM_DRIVER_HAS_DUMB_DESTROY */
|
||||
#endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
|
||||
}
|
||||
|
||||
|
@ -201,7 +201,7 @@ static struct sg_table *__nv_drm_gem_nvkms_memory_prime_get_sg_table(
|
||||
nv_dev,
|
||||
"Cannot create sg_table for NvKmsKapiMemory 0x%p",
|
||||
nv_gem->pMemory);
|
||||
return NULL;
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
sg_table = nv_drm_prime_pages_to_sg(nv_dev->dev,
|
||||
@ -583,11 +583,13 @@ int nv_drm_dumb_map_offset(struct drm_file *file,
|
||||
return ret;
|
||||
}
|
||||
|
||||
#if defined(NV_DRM_DRIVER_HAS_DUMB_DESTROY)
|
||||
int nv_drm_dumb_destroy(struct drm_file *file,
|
||||
struct drm_device *dev,
|
||||
uint32_t handle)
|
||||
{
|
||||
return drm_gem_handle_delete(file, handle);
|
||||
}
|
||||
#endif /* NV_DRM_DRIVER_HAS_DUMB_DESTROY */
|
||||
|
||||
#endif
|
||||
|
@ -97,9 +97,11 @@ int nv_drm_dumb_map_offset(struct drm_file *file,
|
||||
struct drm_device *dev, uint32_t handle,
|
||||
uint64_t *offset);
|
||||
|
||||
#if defined(NV_DRM_DRIVER_HAS_DUMB_DESTROY)
|
||||
int nv_drm_dumb_destroy(struct drm_file *file,
|
||||
struct drm_device *dev,
|
||||
uint32_t handle);
|
||||
#endif /* NV_DRM_DRIVER_HAS_DUMB_DESTROY */
|
||||
|
||||
struct drm_gem_object *nv_drm_gem_nvkms_prime_import(
|
||||
struct drm_device *dev,
|
||||
|
@ -92,9 +92,9 @@ static int __nv_drm_gem_user_memory_mmap(struct nv_drm_gem_object *nv_gem,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
vma->vm_flags &= ~VM_PFNMAP;
|
||||
vma->vm_flags &= ~VM_IO;
|
||||
vma->vm_flags |= VM_MIXEDMAP;
|
||||
nv_vm_flags_clear(vma, VM_PFNMAP);
|
||||
nv_vm_flags_clear(vma, VM_IO);
|
||||
nv_vm_flags_set(vma, VM_MIXEDMAP);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -299,7 +299,7 @@ int nv_drm_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
vma->vm_flags &= ~VM_MAYWRITE;
|
||||
nv_vm_flags_clear(vma, VM_MAYWRITE);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -54,6 +54,8 @@ NV_CONFTEST_GENERIC_COMPILE_TESTS += drm_atomic_available
|
||||
NV_CONFTEST_GENERIC_COMPILE_TESTS += is_export_symbol_gpl_refcount_inc
|
||||
NV_CONFTEST_GENERIC_COMPILE_TESTS += is_export_symbol_gpl_refcount_dec_and_test
|
||||
NV_CONFTEST_GENERIC_COMPILE_TESTS += drm_alpha_blending_available
|
||||
NV_CONFTEST_GENERIC_COMPILE_TESTS += is_export_symbol_present_drm_gem_prime_fd_to_handle
|
||||
NV_CONFTEST_GENERIC_COMPILE_TESTS += is_export_symbol_present_drm_gem_prime_handle_to_fd
|
||||
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_dev_unref
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_reinit_primary_mode_group
|
||||
@ -124,3 +126,5 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += dma_resv_add_fence
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += dma_resv_reserve_fences
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += reservation_object_reserve_shared_has_num_fences_arg
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += drm_connector_has_override_edid
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += vm_area_struct_has_const_vm_flags
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += drm_driver_has_dumb_destroy
|
||||
|
@ -65,6 +65,9 @@
|
||||
static bool output_rounding_fix = true;
|
||||
module_param_named(output_rounding_fix, output_rounding_fix, bool, 0400);
|
||||
|
||||
static bool disable_vrr_memclk_switch = false;
|
||||
module_param_named(disable_vrr_memclk_switch, disable_vrr_memclk_switch, bool, 0400);
|
||||
|
||||
/* These parameters are used for fault injection tests. Normally the defaults
|
||||
* should be used. */
|
||||
MODULE_PARM_DESC(fail_malloc, "Fail the Nth call to nvkms_alloc");
|
||||
@ -82,6 +85,11 @@ NvBool nvkms_output_rounding_fix(void)
|
||||
return output_rounding_fix;
|
||||
}
|
||||
|
||||
NvBool nvkms_disable_vrr_memclk_switch(void)
|
||||
{
|
||||
return disable_vrr_memclk_switch;
|
||||
}
|
||||
|
||||
#define NVKMS_SYNCPT_STUBS_NEEDED
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -112,6 +112,8 @@ typedef struct {
|
||||
|
||||
NvBool nvkms_output_rounding_fix(void);
|
||||
|
||||
NvBool nvkms_disable_vrr_memclk_switch(void);
|
||||
|
||||
void nvkms_call_rm (void *ops);
|
||||
void* nvkms_alloc (size_t size,
|
||||
NvBool zero);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2011-2016 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2011-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -94,11 +94,10 @@ struct nvidia_p2p_params {
|
||||
} nvidia_p2p_params_t;
|
||||
|
||||
/*
|
||||
* Capability flag for users to detect
|
||||
* Macro for users to detect
|
||||
* driver support for persistent pages.
|
||||
*/
|
||||
extern int nvidia_p2p_cap_persistent_pages;
|
||||
#define NVIDIA_P2P_CAP_PERSISTENT_PAGES
|
||||
#define NVIDIA_P2P_CAP_GET_PAGES_PERSISTENT_API
|
||||
|
||||
/*
|
||||
* This API is not supported.
|
||||
@ -173,11 +172,6 @@ struct nvidia_p2p_page_table {
|
||||
* A pointer to the function to be invoked when the pages
|
||||
* underlying the virtual address range are freed
|
||||
* implicitly.
|
||||
* If NULL, persistent pages will be returned.
|
||||
* This means the pages underlying the range of GPU virtual memory
|
||||
* will persist until explicitly freed by nvidia_p2p_put_pages().
|
||||
* Persistent GPU memory mappings are not supported on PowerPC,
|
||||
* MIG-enabled devices and vGPU.
|
||||
* @param[in] data
|
||||
* A non-NULL opaque pointer to private data to be passed to the
|
||||
* callback function.
|
||||
@ -190,12 +184,48 @@ struct nvidia_p2p_page_table {
|
||||
* insufficient resources were available to complete the operation.
|
||||
* -EIO if an unknown error occurred.
|
||||
*/
|
||||
int nvidia_p2p_get_pages(uint64_t p2p_token, uint32_t va_space,
|
||||
uint64_t virtual_address,
|
||||
int nvidia_p2p_get_pages( uint64_t p2p_token, uint32_t va_space,
|
||||
uint64_t virtual_address, uint64_t length,
|
||||
struct nvidia_p2p_page_table **page_table,
|
||||
void (*free_callback)(void *data), void *data);
|
||||
|
||||
/*
|
||||
* @brief
|
||||
* Pin and make the pages underlying a range of GPU virtual memory
|
||||
* accessible to a third-party device. The pages will persist until
|
||||
* explicitly freed by nvidia_p2p_put_pages_persistent().
|
||||
*
|
||||
* Persistent GPU memory mappings are not supported on PowerPC,
|
||||
* MIG-enabled devices and vGPU.
|
||||
*
|
||||
* This API only supports pinned, GPU-resident memory, such as that provided
|
||||
* by cudaMalloc().
|
||||
*
|
||||
* This API may sleep.
|
||||
*
|
||||
* @param[in] virtual_address
|
||||
* The start address in the specified virtual address space.
|
||||
* Address must be aligned to the 64KB boundary.
|
||||
* @param[in] length
|
||||
* The length of the requested P2P mapping.
|
||||
* Length must be a multiple of 64KB.
|
||||
* @param[out] page_table
|
||||
* A pointer to an array of structures with P2P PTEs.
|
||||
* @param[in] flags
|
||||
* Must be set to zero for now.
|
||||
*
|
||||
* @return
|
||||
* 0 upon successful completion.
|
||||
* -EINVAL if an invalid argument was supplied.
|
||||
* -ENOTSUPP if the requested operation is not supported.
|
||||
* -ENOMEM if the driver failed to allocate memory or if
|
||||
* insufficient resources were available to complete the operation.
|
||||
* -EIO if an unknown error occurred.
|
||||
*/
|
||||
int nvidia_p2p_get_pages_persistent(uint64_t virtual_address,
|
||||
uint64_t length,
|
||||
struct nvidia_p2p_page_table **page_table,
|
||||
void (*free_callback)(void *data),
|
||||
void *data);
|
||||
uint32_t flags);
|
||||
|
||||
#define NVIDIA_P2P_DMA_MAPPING_VERSION 0x00020003
|
||||
|
||||
@ -268,6 +298,8 @@ int nvidia_p2p_dma_unmap_pages(struct pci_dev *peer,
|
||||
* Release a set of pages previously made accessible to
|
||||
* a third-party device.
|
||||
*
|
||||
* This API may sleep.
|
||||
*
|
||||
* @param[in] p2p_token
|
||||
* A token that uniquely identifies the P2P mapping.
|
||||
* @param[in] va_space
|
||||
@ -282,10 +314,33 @@ int nvidia_p2p_dma_unmap_pages(struct pci_dev *peer,
|
||||
* -EINVAL if an invalid argument was supplied.
|
||||
* -EIO if an unknown error occurred.
|
||||
*/
|
||||
int nvidia_p2p_put_pages(uint64_t p2p_token, uint32_t va_space,
|
||||
uint64_t virtual_address,
|
||||
int nvidia_p2p_put_pages(uint64_t p2p_token,
|
||||
uint32_t va_space, uint64_t virtual_address,
|
||||
struct nvidia_p2p_page_table *page_table);
|
||||
|
||||
/*
|
||||
* @brief
|
||||
* Release a set of persistent pages previously made accessible to
|
||||
* a third-party device.
|
||||
*
|
||||
* This API may sleep.
|
||||
*
|
||||
* @param[in] virtual_address
|
||||
* The start address in the specified virtual address space.
|
||||
* @param[in] page_table
|
||||
* A pointer to the array of structures with P2P PTEs.
|
||||
* @param[in] flags
|
||||
* Must be set to zero for now.
|
||||
*
|
||||
* @return
|
||||
* 0 upon successful completion.
|
||||
* -EINVAL if an invalid argument was supplied.
|
||||
* -EIO if an unknown error occurred.
|
||||
*/
|
||||
int nvidia_p2p_put_pages_persistent(uint64_t virtual_address,
|
||||
struct nvidia_p2p_page_table *page_table,
|
||||
uint32_t flags);
|
||||
|
||||
/*
|
||||
* @brief
|
||||
* Free a third-party P2P page table. (This function is a no-op.)
|
||||
|
@ -284,8 +284,9 @@ out:
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void nv_mem_put_pages(struct sg_table *sg_head, void *context)
|
||||
static void nv_mem_put_pages_common(int nc,
|
||||
struct sg_table *sg_head,
|
||||
void *context)
|
||||
{
|
||||
int ret = 0;
|
||||
struct nv_mem_context *nv_mem_context =
|
||||
@ -302,8 +303,13 @@ static void nv_mem_put_pages(struct sg_table *sg_head, void *context)
|
||||
if (nv_mem_context->callback_task == current)
|
||||
return;
|
||||
|
||||
ret = nvidia_p2p_put_pages(0, 0, nv_mem_context->page_virt_start,
|
||||
nv_mem_context->page_table);
|
||||
if (nc) {
|
||||
ret = nvidia_p2p_put_pages_persistent(nv_mem_context->page_virt_start,
|
||||
nv_mem_context->page_table, 0);
|
||||
} else {
|
||||
ret = nvidia_p2p_put_pages(0, 0, nv_mem_context->page_virt_start,
|
||||
nv_mem_context->page_table);
|
||||
}
|
||||
|
||||
#ifdef _DEBUG_ONLY_
|
||||
/* Here we expect an error in real life cases that should be ignored - not printed.
|
||||
@ -318,6 +324,16 @@ static void nv_mem_put_pages(struct sg_table *sg_head, void *context)
|
||||
return;
|
||||
}
|
||||
|
||||
static void nv_mem_put_pages(struct sg_table *sg_head, void *context)
|
||||
{
|
||||
nv_mem_put_pages_common(0, sg_head, context);
|
||||
}
|
||||
|
||||
static void nv_mem_put_pages_nc(struct sg_table *sg_head, void *context)
|
||||
{
|
||||
nv_mem_put_pages_common(1, sg_head, context);
|
||||
}
|
||||
|
||||
static void nv_mem_release(void *context)
|
||||
{
|
||||
struct nv_mem_context *nv_mem_context =
|
||||
@ -396,8 +412,9 @@ static int nv_mem_get_pages_nc(unsigned long addr,
|
||||
nv_mem_context->core_context = core_context;
|
||||
nv_mem_context->page_size = GPU_PAGE_SIZE;
|
||||
|
||||
ret = nvidia_p2p_get_pages(0, 0, nv_mem_context->page_virt_start, nv_mem_context->mapped_size,
|
||||
&nv_mem_context->page_table, NULL, NULL);
|
||||
ret = nvidia_p2p_get_pages_persistent(nv_mem_context->page_virt_start,
|
||||
nv_mem_context->mapped_size,
|
||||
&nv_mem_context->page_table, 0);
|
||||
if (ret < 0) {
|
||||
peer_err("error %d while calling nvidia_p2p_get_pages() with NULL callback\n", ret);
|
||||
return ret;
|
||||
@ -407,13 +424,13 @@ static int nv_mem_get_pages_nc(unsigned long addr,
|
||||
}
|
||||
|
||||
static struct peer_memory_client nv_mem_client_nc = {
|
||||
.acquire = nv_mem_acquire,
|
||||
.get_pages = nv_mem_get_pages_nc,
|
||||
.dma_map = nv_dma_map,
|
||||
.dma_unmap = nv_dma_unmap,
|
||||
.put_pages = nv_mem_put_pages,
|
||||
.get_page_size = nv_mem_get_page_size,
|
||||
.release = nv_mem_release,
|
||||
.acquire = nv_mem_acquire,
|
||||
.get_pages = nv_mem_get_pages_nc,
|
||||
.dma_map = nv_dma_map,
|
||||
.dma_unmap = nv_dma_unmap,
|
||||
.put_pages = nv_mem_put_pages_nc,
|
||||
.get_page_size = nv_mem_get_page_size,
|
||||
.release = nv_mem_release,
|
||||
};
|
||||
|
||||
#endif /* NV_MLNX_IB_PEER_MEM_SYMBOLS_PRESENT */
|
||||
@ -477,9 +494,6 @@ static int __init nv_mem_client_init(void)
|
||||
}
|
||||
|
||||
// The nc client enables support for persistent pages.
|
||||
// Thanks to this check, nvidia-peermem requires the new symbol from nvidia.ko, which
|
||||
// prevents users to unintentionally load this module with unsupported nvidia.ko.
|
||||
BUG_ON(!nvidia_p2p_cap_persistent_pages);
|
||||
strcpy(nv_mem_client_nc.name, DRV_NAME "_nc");
|
||||
strcpy(nv_mem_client_nc.version, DRV_VERSION);
|
||||
reg_handle_nc = ib_register_peer_memory_client(&nv_mem_client_nc, NULL);
|
||||
|
@ -81,7 +81,6 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += set_memory_uc
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += set_pages_uc
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += ktime_get_raw_ts64
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += ioasid_get
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += migrate_vma_setup
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += mmget_not_zero
|
||||
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += backing_dev_info
|
||||
@ -101,5 +100,7 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += timespec64
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += mm_has_mmap_lock
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += migrate_vma_added_flags
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += make_device_exclusive_range
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += vm_area_struct_has_const_vm_flags
|
||||
|
||||
NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_int_active_memcg
|
||||
NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_migrate_vma_setup
|
||||
|
@ -618,7 +618,7 @@ static int uvm_mmap(struct file *filp, struct vm_area_struct *vma)
|
||||
// Using VM_DONTCOPY would be nice, but madvise(MADV_DOFORK) can reset that
|
||||
// so we have to handle vm_open on fork anyway. We could disable MADV_DOFORK
|
||||
// with VM_IO, but that causes other mapping issues.
|
||||
vma->vm_flags |= VM_MIXEDMAP | VM_DONTEXPAND;
|
||||
nv_vm_flags_set(vma, VM_MIXEDMAP | VM_DONTEXPAND);
|
||||
|
||||
vma->vm_ops = &uvm_vm_ops_managed;
|
||||
|
||||
|
@ -179,7 +179,7 @@ static NV_STATUS test_membar(uvm_gpu_t *gpu)
|
||||
|
||||
for (i = 0; i < REDUCTIONS; ++i) {
|
||||
uvm_push_set_flag(&push, UVM_PUSH_FLAG_NEXT_MEMBAR_NONE);
|
||||
gpu->parent->ce_hal->semaphore_reduction_inc(&push, host_mem_gpu_va, REDUCTIONS + 1);
|
||||
gpu->parent->ce_hal->semaphore_reduction_inc(&push, host_mem_gpu_va, REDUCTIONS);
|
||||
}
|
||||
|
||||
// Without a sys membar the channel tracking semaphore can and does complete
|
||||
@ -528,7 +528,7 @@ static NV_STATUS test_semaphore_reduction_inc(uvm_gpu_t *gpu)
|
||||
|
||||
for (i = 0; i < REDUCTIONS; i++) {
|
||||
uvm_push_set_flag(&push, UVM_PUSH_FLAG_NEXT_MEMBAR_NONE);
|
||||
gpu->parent->ce_hal->semaphore_reduction_inc(&push, gpu_va, i+1);
|
||||
gpu->parent->ce_hal->semaphore_reduction_inc(&push, gpu_va, REDUCTIONS);
|
||||
}
|
||||
|
||||
status = uvm_push_end_and_wait(&push);
|
||||
|
@ -153,7 +153,6 @@ done:
|
||||
|
||||
static NV_STATUS test_unexpected_completed_values(uvm_va_space_t *va_space)
|
||||
{
|
||||
NV_STATUS status;
|
||||
uvm_gpu_t *gpu;
|
||||
|
||||
for_each_va_space_gpu(gpu, va_space) {
|
||||
|
@ -50,7 +50,7 @@ typedef struct
|
||||
#if defined(CONFIG_MIGRATE_VMA_HELPER)
|
||||
#define UVM_MIGRATE_VMA_SUPPORTED 1
|
||||
#else
|
||||
#if defined(CONFIG_DEVICE_PRIVATE) && defined(NV_MIGRATE_VMA_SETUP_PRESENT)
|
||||
#if NV_IS_EXPORT_SYMBOL_PRESENT_migrate_vma_setup
|
||||
#define UVM_MIGRATE_VMA_SUPPORTED 1
|
||||
#endif
|
||||
#endif
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*******************************************************************************
|
||||
Copyright (c) 2015-2022 NVIDIA Corporation
|
||||
Copyright (c) 2015-2023 NVIDIA Corporation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
@ -102,7 +102,7 @@ static NV_STATUS phys_mem_allocate_sysmem(uvm_page_tree_t *tree, NvLength size,
|
||||
NvU64 dma_addr;
|
||||
unsigned long flags = __GFP_ZERO;
|
||||
uvm_memcg_context_t memcg_context;
|
||||
uvm_va_space_t *va_space;
|
||||
uvm_va_space_t *va_space = NULL;
|
||||
struct mm_struct *mm = NULL;
|
||||
|
||||
if (tree->type == UVM_PAGE_TREE_TYPE_USER && tree->gpu_va_space && UVM_CGROUP_ACCOUNTING_SUPPORTED()) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*******************************************************************************
|
||||
Copyright (c) 2022 NVIDIA Corporation
|
||||
Copyright (c) 2022-2023 NVIDIA Corporation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
@ -53,7 +53,7 @@ typedef enum
|
||||
// The VA range is determined from either the uvm_va_range_t for managed
|
||||
// allocations or the uvm_va_policy_node_t for HMM allocations.
|
||||
//
|
||||
typedef struct uvm_va_policy_struct
|
||||
struct uvm_va_policy_struct
|
||||
{
|
||||
// Read duplication policy for this VA range (unset, enabled, or disabled).
|
||||
uvm_read_duplication_policy_t read_duplication;
|
||||
@ -66,7 +66,7 @@ typedef struct uvm_va_policy_struct
|
||||
// their page tables updated to access the (possibly remote) pages.
|
||||
uvm_processor_mask_t accessed_by;
|
||||
|
||||
} uvm_va_policy_t;
|
||||
};
|
||||
|
||||
// Policy nodes are used for storing policies in HMM va_blocks.
|
||||
// The va_block lock protects the tree so that invalidation callbacks can
|
||||
|
@ -452,7 +452,7 @@ static int nvidia_mmap_numa(
|
||||
}
|
||||
|
||||
// Needed for the linux kernel for mapping compound pages
|
||||
vma->vm_flags |= VM_MIXEDMAP;
|
||||
nv_vm_flags_set(vma, VM_MIXEDMAP);
|
||||
|
||||
for (i = 0, addr = mmap_context->page_array[0]; i < pages;
|
||||
addr = mmap_context->page_array[++i], start += PAGE_SIZE)
|
||||
@ -596,7 +596,7 @@ int nvidia_mmap_helper(
|
||||
}
|
||||
up(&nvl->mmap_lock);
|
||||
|
||||
vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND;
|
||||
nv_vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -663,15 +663,15 @@ int nvidia_mmap_helper(
|
||||
|
||||
NV_PRINT_AT(NV_DBG_MEMINFO, at);
|
||||
|
||||
vma->vm_flags |= (VM_IO | VM_LOCKED | VM_RESERVED);
|
||||
vma->vm_flags |= (VM_DONTEXPAND | VM_DONTDUMP);
|
||||
nv_vm_flags_set(vma, VM_IO | VM_LOCKED | VM_RESERVED);
|
||||
nv_vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
|
||||
}
|
||||
|
||||
if ((prot & NV_PROTECT_WRITEABLE) == 0)
|
||||
{
|
||||
vma->vm_page_prot = NV_PGPROT_READ_ONLY(vma->vm_page_prot);
|
||||
vma->vm_flags &= ~VM_WRITE;
|
||||
vma->vm_flags &= ~VM_MAYWRITE;
|
||||
nv_vm_flags_clear(vma, VM_WRITE);
|
||||
nv_vm_flags_clear(vma, VM_MAYWRITE);
|
||||
}
|
||||
|
||||
vma->vm_ops = &nv_vm_ops;
|
||||
|
@ -213,7 +213,7 @@ void NV_API_CALL nv_cancel_nano_timer(
|
||||
#if NV_NANO_TIMER_USE_HRTIMER
|
||||
hrtimer_cancel(&nv_nstimer->hr_timer);
|
||||
#else
|
||||
del_timer(&nv_nstimer->jiffy_timer);
|
||||
del_timer_sync(&nv_nstimer->jiffy_timer);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2011-2019 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2011-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -31,6 +31,11 @@
|
||||
#include "nv-p2p.h"
|
||||
#include "rmp2pdefines.h"
|
||||
|
||||
typedef enum nv_p2p_page_table_type {
|
||||
NV_P2P_PAGE_TABLE_TYPE_NON_PERSISTENT = 0,
|
||||
NV_P2P_PAGE_TABLE_TYPE_PERSISTENT,
|
||||
} nv_p2p_page_table_type_t;
|
||||
|
||||
typedef struct nv_p2p_dma_mapping {
|
||||
struct list_head list_node;
|
||||
struct nvidia_p2p_dma_mapping *dma_mapping;
|
||||
@ -44,13 +49,9 @@ typedef struct nv_p2p_mem_info {
|
||||
struct list_head list_head;
|
||||
struct semaphore lock;
|
||||
} dma_mapping_list;
|
||||
NvBool bPersistent;
|
||||
void *private;
|
||||
} nv_p2p_mem_info_t;
|
||||
|
||||
int nvidia_p2p_cap_persistent_pages = 1;
|
||||
EXPORT_SYMBOL(nvidia_p2p_cap_persistent_pages);
|
||||
|
||||
// declared and created in nv.c
|
||||
extern void *nvidia_p2p_page_t_cache;
|
||||
|
||||
@ -238,6 +239,7 @@ static void nv_p2p_free_page_table(
|
||||
}
|
||||
|
||||
static NV_STATUS nv_p2p_put_pages(
|
||||
nv_p2p_page_table_type_t pt_type,
|
||||
nvidia_stack_t * sp,
|
||||
uint64_t p2p_token,
|
||||
uint32_t va_space,
|
||||
@ -246,9 +248,6 @@ static NV_STATUS nv_p2p_put_pages(
|
||||
)
|
||||
{
|
||||
NV_STATUS status;
|
||||
struct nv_p2p_mem_info *mem_info = NULL;
|
||||
|
||||
mem_info = container_of(*page_table, nv_p2p_mem_info_t, page_table);
|
||||
|
||||
/*
|
||||
* rm_p2p_put_pages returns NV_OK if the page_table was found and
|
||||
@ -258,8 +257,15 @@ static NV_STATUS nv_p2p_put_pages(
|
||||
* rm_p2p_put_pages returns NV_ERR_OBJECT_NOT_FOUND if the page_table
|
||||
* was already unlinked.
|
||||
*/
|
||||
if (mem_info->bPersistent)
|
||||
if (pt_type == NV_P2P_PAGE_TABLE_TYPE_PERSISTENT)
|
||||
{
|
||||
struct nv_p2p_mem_info *mem_info = NULL;
|
||||
|
||||
/*
|
||||
* It is safe to access persistent page_table as there is no async
|
||||
* callback which can free it unlike non-persistent page_table.
|
||||
*/
|
||||
mem_info = container_of(*page_table, nv_p2p_mem_info_t, page_table);
|
||||
status = rm_p2p_put_pages_persistent(sp, mem_info->private, *page_table);
|
||||
}
|
||||
else
|
||||
@ -273,7 +279,8 @@ static NV_STATUS nv_p2p_put_pages(
|
||||
nv_p2p_free_page_table(*page_table);
|
||||
*page_table = NULL;
|
||||
}
|
||||
else if (!mem_info->bPersistent && (status == NV_ERR_OBJECT_NOT_FOUND))
|
||||
else if ((pt_type == NV_P2P_PAGE_TABLE_TYPE_NON_PERSISTENT) &&
|
||||
(status == NV_ERR_OBJECT_NOT_FOUND))
|
||||
{
|
||||
status = NV_OK;
|
||||
*page_table = NULL;
|
||||
@ -327,7 +334,8 @@ static void nv_p2p_mem_info_free_callback(void *data)
|
||||
nv_p2p_free_platform_data(&mem_info->page_table);
|
||||
}
|
||||
|
||||
int nvidia_p2p_get_pages(
|
||||
static int nv_p2p_get_pages(
|
||||
nv_p2p_page_table_type_t pt_type,
|
||||
uint64_t p2p_token,
|
||||
uint32_t va_space,
|
||||
uint64_t virtual_address,
|
||||
@ -376,9 +384,10 @@ int nvidia_p2p_get_pages(
|
||||
|
||||
*page_table = &(mem_info->page_table);
|
||||
|
||||
mem_info->bPersistent = (free_callback == NULL);
|
||||
|
||||
//asign length to temporary variable since do_div macro does in-place division
|
||||
/*
|
||||
* assign length to temporary variable since do_div macro does in-place
|
||||
* division
|
||||
*/
|
||||
temp_length = length;
|
||||
do_div(temp_length, page_size);
|
||||
page_count = temp_length;
|
||||
@ -405,7 +414,7 @@ int nvidia_p2p_get_pages(
|
||||
goto failed;
|
||||
}
|
||||
|
||||
if (mem_info->bPersistent)
|
||||
if (pt_type == NV_P2P_PAGE_TABLE_TYPE_PERSISTENT)
|
||||
{
|
||||
void *gpu_info = NULL;
|
||||
|
||||
@ -415,12 +424,15 @@ int nvidia_p2p_get_pages(
|
||||
goto failed;
|
||||
}
|
||||
|
||||
status = rm_p2p_get_gpu_info(sp, virtual_address, length, &gpu_uuid, &gpu_info);
|
||||
status = rm_p2p_get_gpu_info(sp, virtual_address, length,
|
||||
&gpu_uuid, &gpu_info);
|
||||
if (status != NV_OK)
|
||||
{
|
||||
goto failed;
|
||||
}
|
||||
|
||||
(*page_table)->gpu_uuid = gpu_uuid;
|
||||
|
||||
rc = nvidia_dev_get_uuid(gpu_uuid, sp);
|
||||
if (rc != 0)
|
||||
{
|
||||
@ -432,8 +444,10 @@ int nvidia_p2p_get_pages(
|
||||
|
||||
bGetUuid = NV_TRUE;
|
||||
|
||||
status = rm_p2p_get_pages_persistent(sp, virtual_address, length, &mem_info->private,
|
||||
physical_addresses, &entries, *page_table, gpu_info);
|
||||
status = rm_p2p_get_pages_persistent(sp, virtual_address, length,
|
||||
&mem_info->private,
|
||||
physical_addresses, &entries,
|
||||
*page_table, gpu_info);
|
||||
if (status != NV_OK)
|
||||
{
|
||||
goto failed;
|
||||
@ -449,10 +463,11 @@ int nvidia_p2p_get_pages(
|
||||
{
|
||||
goto failed;
|
||||
}
|
||||
|
||||
(*page_table)->gpu_uuid = gpu_uuid;
|
||||
}
|
||||
|
||||
bGetPages = NV_TRUE;
|
||||
(*page_table)->gpu_uuid = gpu_uuid;
|
||||
|
||||
status = os_alloc_mem((void *)&(*page_table)->pages,
|
||||
(entries * sizeof(page)));
|
||||
@ -491,8 +506,13 @@ int nvidia_p2p_get_pages(
|
||||
(*page_table)->page_size = page_size_index;
|
||||
|
||||
os_free_mem(physical_addresses);
|
||||
physical_addresses = NULL;
|
||||
|
||||
os_free_mem(wreqmb_h);
|
||||
wreqmb_h = NULL;
|
||||
|
||||
os_free_mem(rreqmb_h);
|
||||
rreqmb_h = NULL;
|
||||
|
||||
if (free_callback != NULL)
|
||||
{
|
||||
@ -516,10 +536,12 @@ failed:
|
||||
{
|
||||
os_free_mem(physical_addresses);
|
||||
}
|
||||
|
||||
if (wreqmb_h != NULL)
|
||||
{
|
||||
os_free_mem(wreqmb_h);
|
||||
}
|
||||
|
||||
if (rreqmb_h != NULL)
|
||||
{
|
||||
os_free_mem(rreqmb_h);
|
||||
@ -527,7 +549,7 @@ failed:
|
||||
|
||||
if (bGetPages)
|
||||
{
|
||||
(void)nv_p2p_put_pages(sp, p2p_token, va_space,
|
||||
(void)nv_p2p_put_pages(pt_type, sp, p2p_token, va_space,
|
||||
virtual_address, page_table);
|
||||
}
|
||||
|
||||
@ -546,8 +568,45 @@ failed:
|
||||
return nvidia_p2p_map_status(status);
|
||||
}
|
||||
|
||||
int nvidia_p2p_get_pages(
|
||||
uint64_t p2p_token,
|
||||
uint32_t va_space,
|
||||
uint64_t virtual_address,
|
||||
uint64_t length,
|
||||
struct nvidia_p2p_page_table **page_table,
|
||||
void (*free_callback)(void * data),
|
||||
void *data
|
||||
)
|
||||
{
|
||||
if (free_callback == NULL)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return nv_p2p_get_pages(NV_P2P_PAGE_TABLE_TYPE_NON_PERSISTENT,
|
||||
p2p_token, va_space, virtual_address,
|
||||
length, page_table, free_callback, data);
|
||||
}
|
||||
EXPORT_SYMBOL(nvidia_p2p_get_pages);
|
||||
|
||||
int nvidia_p2p_get_pages_persistent(
|
||||
uint64_t virtual_address,
|
||||
uint64_t length,
|
||||
struct nvidia_p2p_page_table **page_table,
|
||||
uint32_t flags
|
||||
)
|
||||
{
|
||||
if (flags != 0)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return nv_p2p_get_pages(NV_P2P_PAGE_TABLE_TYPE_PERSISTENT, 0, 0,
|
||||
virtual_address, length, page_table,
|
||||
NULL, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL(nvidia_p2p_get_pages_persistent);
|
||||
|
||||
/*
|
||||
* This function is a no-op, but is left in place (for now), in order to allow
|
||||
* third-party callers to build and run without errors or warnings. This is OK,
|
||||
@ -568,15 +627,14 @@ int nvidia_p2p_put_pages(
|
||||
struct nvidia_p2p_page_table *page_table
|
||||
)
|
||||
{
|
||||
struct nv_p2p_mem_info *mem_info = NULL;
|
||||
NvU8 uuid[NVIDIA_P2P_GPU_UUID_LEN] = {0};
|
||||
NV_STATUS status;
|
||||
nvidia_stack_t *sp = NULL;
|
||||
int rc = 0;
|
||||
|
||||
os_mem_copy(uuid, page_table->gpu_uuid, NVIDIA_P2P_GPU_UUID_LEN);
|
||||
|
||||
mem_info = container_of(page_table, nv_p2p_mem_info_t, page_table);
|
||||
if (page_table == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
rc = nv_kmem_cache_alloc_stack(&sp);
|
||||
if (rc != 0)
|
||||
@ -584,21 +642,56 @@ int nvidia_p2p_put_pages(
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
status = nv_p2p_put_pages(sp, p2p_token, va_space,
|
||||
status = nv_p2p_put_pages(NV_P2P_PAGE_TABLE_TYPE_NON_PERSISTENT,
|
||||
sp, p2p_token, va_space,
|
||||
virtual_address, &page_table);
|
||||
|
||||
if (mem_info->bPersistent)
|
||||
{
|
||||
nvidia_dev_put_uuid(uuid, sp);
|
||||
}
|
||||
|
||||
nv_kmem_cache_free_stack(sp);
|
||||
|
||||
return nvidia_p2p_map_status(status);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(nvidia_p2p_put_pages);
|
||||
|
||||
int nvidia_p2p_put_pages_persistent(
|
||||
uint64_t virtual_address,
|
||||
struct nvidia_p2p_page_table *page_table,
|
||||
uint32_t flags
|
||||
)
|
||||
{
|
||||
NvU8 uuid[NVIDIA_P2P_GPU_UUID_LEN] = {0};
|
||||
NV_STATUS status;
|
||||
nvidia_stack_t *sp = NULL;
|
||||
int rc = 0;
|
||||
|
||||
if (flags != 0)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (page_table == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
rc = nv_kmem_cache_alloc_stack(&sp);
|
||||
if (rc != 0)
|
||||
{
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
os_mem_copy(uuid, page_table->gpu_uuid, NVIDIA_P2P_GPU_UUID_LEN);
|
||||
|
||||
status = nv_p2p_put_pages(NV_P2P_PAGE_TABLE_TYPE_PERSISTENT,
|
||||
sp, 0, 0, virtual_address, &page_table);
|
||||
|
||||
nvidia_dev_put_uuid(uuid, sp);
|
||||
|
||||
nv_kmem_cache_free_stack(sp);
|
||||
|
||||
return nvidia_p2p_map_status(status);
|
||||
}
|
||||
EXPORT_SYMBOL(nvidia_p2p_put_pages_persistent);
|
||||
|
||||
int nvidia_p2p_dma_map_pages(
|
||||
struct pci_dev *peer,
|
||||
struct nvidia_p2p_page_table *page_table,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2011-2016 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2011-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -94,11 +94,10 @@ struct nvidia_p2p_params {
|
||||
} nvidia_p2p_params_t;
|
||||
|
||||
/*
|
||||
* Capability flag for users to detect
|
||||
* Macro for users to detect
|
||||
* driver support for persistent pages.
|
||||
*/
|
||||
extern int nvidia_p2p_cap_persistent_pages;
|
||||
#define NVIDIA_P2P_CAP_PERSISTENT_PAGES
|
||||
#define NVIDIA_P2P_CAP_GET_PAGES_PERSISTENT_API
|
||||
|
||||
/*
|
||||
* This API is not supported.
|
||||
@ -173,11 +172,6 @@ struct nvidia_p2p_page_table {
|
||||
* A pointer to the function to be invoked when the pages
|
||||
* underlying the virtual address range are freed
|
||||
* implicitly.
|
||||
* If NULL, persistent pages will be returned.
|
||||
* This means the pages underlying the range of GPU virtual memory
|
||||
* will persist until explicitly freed by nvidia_p2p_put_pages().
|
||||
* Persistent GPU memory mappings are not supported on PowerPC,
|
||||
* MIG-enabled devices and vGPU.
|
||||
* @param[in] data
|
||||
* A non-NULL opaque pointer to private data to be passed to the
|
||||
* callback function.
|
||||
@ -190,12 +184,48 @@ struct nvidia_p2p_page_table {
|
||||
* insufficient resources were available to complete the operation.
|
||||
* -EIO if an unknown error occurred.
|
||||
*/
|
||||
int nvidia_p2p_get_pages(uint64_t p2p_token, uint32_t va_space,
|
||||
uint64_t virtual_address,
|
||||
int nvidia_p2p_get_pages( uint64_t p2p_token, uint32_t va_space,
|
||||
uint64_t virtual_address, uint64_t length,
|
||||
struct nvidia_p2p_page_table **page_table,
|
||||
void (*free_callback)(void *data), void *data);
|
||||
|
||||
/*
|
||||
* @brief
|
||||
* Pin and make the pages underlying a range of GPU virtual memory
|
||||
* accessible to a third-party device. The pages will persist until
|
||||
* explicitly freed by nvidia_p2p_put_pages_persistent().
|
||||
*
|
||||
* Persistent GPU memory mappings are not supported on PowerPC,
|
||||
* MIG-enabled devices and vGPU.
|
||||
*
|
||||
* This API only supports pinned, GPU-resident memory, such as that provided
|
||||
* by cudaMalloc().
|
||||
*
|
||||
* This API may sleep.
|
||||
*
|
||||
* @param[in] virtual_address
|
||||
* The start address in the specified virtual address space.
|
||||
* Address must be aligned to the 64KB boundary.
|
||||
* @param[in] length
|
||||
* The length of the requested P2P mapping.
|
||||
* Length must be a multiple of 64KB.
|
||||
* @param[out] page_table
|
||||
* A pointer to an array of structures with P2P PTEs.
|
||||
* @param[in] flags
|
||||
* Must be set to zero for now.
|
||||
*
|
||||
* @return
|
||||
* 0 upon successful completion.
|
||||
* -EINVAL if an invalid argument was supplied.
|
||||
* -ENOTSUPP if the requested operation is not supported.
|
||||
* -ENOMEM if the driver failed to allocate memory or if
|
||||
* insufficient resources were available to complete the operation.
|
||||
* -EIO if an unknown error occurred.
|
||||
*/
|
||||
int nvidia_p2p_get_pages_persistent(uint64_t virtual_address,
|
||||
uint64_t length,
|
||||
struct nvidia_p2p_page_table **page_table,
|
||||
void (*free_callback)(void *data),
|
||||
void *data);
|
||||
uint32_t flags);
|
||||
|
||||
#define NVIDIA_P2P_DMA_MAPPING_VERSION 0x00020003
|
||||
|
||||
@ -268,6 +298,8 @@ int nvidia_p2p_dma_unmap_pages(struct pci_dev *peer,
|
||||
* Release a set of pages previously made accessible to
|
||||
* a third-party device.
|
||||
*
|
||||
* This API may sleep.
|
||||
*
|
||||
* @param[in] p2p_token
|
||||
* A token that uniquely identifies the P2P mapping.
|
||||
* @param[in] va_space
|
||||
@ -282,10 +314,33 @@ int nvidia_p2p_dma_unmap_pages(struct pci_dev *peer,
|
||||
* -EINVAL if an invalid argument was supplied.
|
||||
* -EIO if an unknown error occurred.
|
||||
*/
|
||||
int nvidia_p2p_put_pages(uint64_t p2p_token, uint32_t va_space,
|
||||
uint64_t virtual_address,
|
||||
int nvidia_p2p_put_pages(uint64_t p2p_token,
|
||||
uint32_t va_space, uint64_t virtual_address,
|
||||
struct nvidia_p2p_page_table *page_table);
|
||||
|
||||
/*
|
||||
* @brief
|
||||
* Release a set of persistent pages previously made accessible to
|
||||
* a third-party device.
|
||||
*
|
||||
* This API may sleep.
|
||||
*
|
||||
* @param[in] virtual_address
|
||||
* The start address in the specified virtual address space.
|
||||
* @param[in] page_table
|
||||
* A pointer to the array of structures with P2P PTEs.
|
||||
* @param[in] flags
|
||||
* Must be set to zero for now.
|
||||
*
|
||||
* @return
|
||||
* 0 upon successful completion.
|
||||
* -EINVAL if an invalid argument was supplied.
|
||||
* -EIO if an unknown error occurred.
|
||||
*/
|
||||
int nvidia_p2p_put_pages_persistent(uint64_t virtual_address,
|
||||
struct nvidia_p2p_page_table *page_table,
|
||||
uint32_t flags);
|
||||
|
||||
/*
|
||||
* @brief
|
||||
* Free a third-party P2P page table. (This function is a no-op.)
|
||||
|
@ -165,7 +165,7 @@ NvBool nv_ats_supported = NVCPU_IS_PPC64LE
|
||||
/* nvos_ functions.. do not take a state device parameter */
|
||||
static int nvos_count_devices(void);
|
||||
|
||||
static nv_alloc_t *nvos_create_alloc(struct device *, int);
|
||||
static nv_alloc_t *nvos_create_alloc(struct device *, NvU64);
|
||||
static int nvos_free_alloc(nv_alloc_t *);
|
||||
|
||||
/***
|
||||
@ -280,11 +280,12 @@ void nv_sev_init(
|
||||
static
|
||||
nv_alloc_t *nvos_create_alloc(
|
||||
struct device *dev,
|
||||
int num_pages
|
||||
NvU64 num_pages
|
||||
)
|
||||
{
|
||||
nv_alloc_t *at;
|
||||
unsigned int pt_size, i;
|
||||
nv_alloc_t *at;
|
||||
NvU64 pt_size;
|
||||
unsigned int i;
|
||||
|
||||
NV_KZALLOC(at, sizeof(nv_alloc_t));
|
||||
if (at == NULL)
|
||||
@ -295,6 +296,24 @@ nv_alloc_t *nvos_create_alloc(
|
||||
|
||||
at->dev = dev;
|
||||
pt_size = num_pages * sizeof(nvidia_pte_t *);
|
||||
//
|
||||
// Check for multiplication overflow and check whether num_pages value can fit in at->num_pages.
|
||||
//
|
||||
if ((num_pages != 0) && ((pt_size / num_pages) != sizeof(nvidia_pte_t*)))
|
||||
{
|
||||
nv_printf(NV_DBG_ERRORS, "NVRM: Invalid page table allocation - Number of pages exceeds max value.\n");
|
||||
NV_KFREE(at, sizeof(nv_alloc_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
at->num_pages = num_pages;
|
||||
if (at->num_pages != num_pages)
|
||||
{
|
||||
nv_printf(NV_DBG_ERRORS, "NVRM: Invalid page table allocation - requested size overflows.\n");
|
||||
NV_KFREE(at, sizeof(nv_alloc_t));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (os_alloc_mem((void **)&at->page_table, pt_size) != NV_OK)
|
||||
{
|
||||
nv_printf(NV_DBG_ERRORS, "NVRM: failed to allocate page table\n");
|
||||
@ -303,7 +322,6 @@ nv_alloc_t *nvos_create_alloc(
|
||||
}
|
||||
|
||||
memset(at->page_table, 0, pt_size);
|
||||
at->num_pages = num_pages;
|
||||
NV_ATOMIC_SET(at->usage_count, 0);
|
||||
|
||||
for (i = 0; i < at->num_pages; i++)
|
||||
@ -4487,19 +4505,19 @@ NvU64 NV_API_CALL nv_get_dma_start_address(
|
||||
* as the starting address for all DMA mappings.
|
||||
*/
|
||||
saved_dma_mask = pci_dev->dma_mask;
|
||||
if (pci_set_dma_mask(pci_dev, DMA_BIT_MASK(64)) != 0)
|
||||
if (dma_set_mask(&pci_dev->dev, DMA_BIT_MASK(64)) != 0)
|
||||
{
|
||||
goto done;
|
||||
}
|
||||
|
||||
dma_addr = pci_map_single(pci_dev, NULL, 1, DMA_BIDIRECTIONAL);
|
||||
if (pci_dma_mapping_error(pci_dev, dma_addr))
|
||||
dma_addr = dma_map_single(&pci_dev->dev, NULL, 1, DMA_BIDIRECTIONAL);
|
||||
if (dma_mapping_error(&pci_dev->dev, dma_addr))
|
||||
{
|
||||
pci_set_dma_mask(pci_dev, saved_dma_mask);
|
||||
dma_set_mask(&pci_dev->dev, saved_dma_mask);
|
||||
goto done;
|
||||
}
|
||||
|
||||
pci_unmap_single(pci_dev, dma_addr, 1, DMA_BIDIRECTIONAL);
|
||||
dma_unmap_single(&pci_dev->dev, dma_addr, 1, DMA_BIDIRECTIONAL);
|
||||
|
||||
/*
|
||||
* From IBM: "For IODA2, native DMA bypass or KVM TCE-based implementation
|
||||
@ -4531,7 +4549,7 @@ NvU64 NV_API_CALL nv_get_dma_start_address(
|
||||
*/
|
||||
nv_printf(NV_DBG_WARNINGS,
|
||||
"NVRM: DMA window limited by platform\n");
|
||||
pci_set_dma_mask(pci_dev, saved_dma_mask);
|
||||
dma_set_mask(&pci_dev->dev, saved_dma_mask);
|
||||
goto done;
|
||||
}
|
||||
else if ((dma_addr & saved_dma_mask) != 0)
|
||||
@ -4550,7 +4568,7 @@ NvU64 NV_API_CALL nv_get_dma_start_address(
|
||||
*/
|
||||
nv_printf(NV_DBG_WARNINGS,
|
||||
"NVRM: DMA window limited by memory size\n");
|
||||
pci_set_dma_mask(pci_dev, saved_dma_mask);
|
||||
dma_set_mask(&pci_dev->dev, saved_dma_mask);
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
@ -230,6 +230,7 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += remove_memory_has_nid_arg
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += add_memory_driver_managed_has_mhp_flags_arg
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += num_registered_fb
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += pci_driver_has_driver_managed_dma
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += vm_area_struct_has_const_vm_flags
|
||||
|
||||
NV_CONFTEST_GENERIC_COMPILE_TESTS += dom0_kernel_present
|
||||
NV_CONFTEST_GENERIC_COMPILE_TESTS += nvidia_vgpu_kvm_build
|
||||
|
@ -46,6 +46,11 @@ NvlStatus nvlink_lib_unload(void);
|
||||
*/
|
||||
NvlStatus nvlink_lib_ioctl_ctrl(nvlink_ioctrl_params *ctrl_params);
|
||||
|
||||
/*
|
||||
* Gets number of devices with type deviceType
|
||||
*/
|
||||
NvlStatus nvlink_lib_return_device_count_by_type(NvU32 deviceType, NvU32 *numDevices);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -30,6 +30,9 @@ extern "C" {
|
||||
|
||||
#include "nvlink_common.h"
|
||||
|
||||
#define TOP_LEVEL_LOCKING_DISABLED 1
|
||||
#define PER_LINK_LOCKING_DISABLED 1
|
||||
|
||||
#define NVLINK_FREE(x) nvlink_free((void *)x)
|
||||
|
||||
// Memory management functions
|
||||
|
@ -213,6 +213,10 @@ namespace DisplayPort
|
||||
|
||||
virtual NvBool isDSCSupported() = 0;
|
||||
|
||||
virtual NvBool isDSCDecompressionSupported() = 0;
|
||||
|
||||
virtual NvBool isDSCPassThroughSupported() = 0;
|
||||
|
||||
virtual DscCaps getDscCaps() = 0;
|
||||
|
||||
//
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -125,6 +125,7 @@ namespace DisplayPort
|
||||
bool bPConConnected; // HDMI2.1-Protocol Converter (Support SRC control mode) connected.
|
||||
bool bSkipAssessLinkForPCon; // Skip assessLink() for PCON. DD will call assessFRLLink later.
|
||||
bool bHdcpAuthOnlyOnDemand; // True if only initiate Hdcp authentication on demand and MST won't auto-trigger authenticate at device attach.
|
||||
bool bReassessMaxLink; // Retry assessLink() if the first assessed link config is lower than the panel max config.
|
||||
|
||||
bool constructorFailed;
|
||||
|
||||
@ -335,6 +336,14 @@ namespace DisplayPort
|
||||
//
|
||||
bool bPowerDownPhyBeforeD3;
|
||||
|
||||
//
|
||||
// Reset the MSTM_CTRL registers on Synaptics branch device irrespective of
|
||||
// IRQ VECTOR register having stale message. Synaptics device needs to reset
|
||||
// the topology before issue of new LAM message if previous LAM was not finished
|
||||
// bug 3928070
|
||||
//
|
||||
bool bForceClearPendingMsg;
|
||||
|
||||
void sharedInit();
|
||||
ConnectorImpl(MainLink * main, AuxBus * auxBus, Timer * timer, Connector::EventSink * sink);
|
||||
|
||||
|
@ -447,6 +447,7 @@ namespace DisplayPort
|
||||
bool getFECSupport();
|
||||
NvBool isDSCPassThroughSupported();
|
||||
NvBool isDSCSupported();
|
||||
NvBool isDSCDecompressionSupported();
|
||||
NvBool isDSCPossible();
|
||||
bool isFECSupported();
|
||||
bool readAndParseDSCCaps();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -160,6 +160,7 @@ namespace DisplayPort
|
||||
bool _applyLinkBwOverrideWarRegVal;
|
||||
bool _isDynamicMuxCapable;
|
||||
bool _enableMSAOverrideOverMST;
|
||||
bool _enableFecCheckForDDS;
|
||||
|
||||
bool _isLTPhyRepeaterSupported;
|
||||
//
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -62,15 +62,25 @@
|
||||
// Regkey to enable OUI caching/restoring in release branch.
|
||||
#define NV_DP_REGKEY_ENABLE_OUI_RESTORING "DP_ENABLE_OUI_RESTORING"
|
||||
|
||||
// Regkey to make sure enable FEC only when RM notified sink successfully
|
||||
#define NV_DP_CHECK_FEC_FOR_DDS_DSC_PANEL "DP_DDS_CHECK_FEC_TO_ENABLE"
|
||||
|
||||
// Message to power down video stream before power down link (set D3)
|
||||
#define NV_DP_REGKEY_POWER_DOWN_PHY "DP_POWER_DOWN_PHY"
|
||||
|
||||
//
|
||||
// Regkey to re-assess max link if the first assessed link config
|
||||
// is lower than the panel max
|
||||
//
|
||||
#define NV_DP_REGKEY_REASSESS_MAX_LINK "DP_REASSESS_MAX_LINK"
|
||||
|
||||
//
|
||||
// DSC capability of downstream device should be decided based on device's own
|
||||
// and its parent's DSC capability.
|
||||
//
|
||||
#define NV_DP_DSC_MST_CAP_BUG_3143315 "DP_DSC_MST_CAP_BUG_3143315"
|
||||
|
||||
|
||||
//
|
||||
// Data Base used to store all the regkey values.
|
||||
// The actual data base is declared statically in dp_evoadapter.cpp.
|
||||
@ -104,6 +114,8 @@ struct DP_REGKEY_DATABASE
|
||||
bool bDscMstCapBug3143315;
|
||||
bool bEnableOuiRestoring;
|
||||
bool bPowerDownPhyBeforeD3;
|
||||
bool bCheckFECForDynamicMuxDSCPanel;
|
||||
bool bReassessMaxLink;
|
||||
};
|
||||
|
||||
#endif //INCLUDED_DP_REGKEYDATABASE_H
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -190,6 +190,7 @@ void ConnectorImpl::applyRegkeyOverrides(const DP_REGKEY_DATABASE& dpRegkeyDatab
|
||||
this->bDscMstCapBug3143315 = dpRegkeyDatabase.bDscMstCapBug3143315;
|
||||
this->bEnableOuiRestoring = dpRegkeyDatabase.bEnableOuiRestoring;
|
||||
this->bPowerDownPhyBeforeD3 = dpRegkeyDatabase.bPowerDownPhyBeforeD3;
|
||||
this->bReassessMaxLink = dpRegkeyDatabase.bReassessMaxLink;
|
||||
}
|
||||
|
||||
void ConnectorImpl::setPolicyModesetOrderMitigation(bool enabled)
|
||||
@ -2691,8 +2692,15 @@ bool ConnectorImpl::notifyAttachBegin(Group * target, // Gr
|
||||
|
||||
DP_ASSERT(!this->isLinkQuiesced && "TMDS is attached, NABegin is impossible!");
|
||||
|
||||
//
|
||||
// Update the FEC enabled flag according to the mode requested.
|
||||
//
|
||||
// In MST config, if one panel needs DSC/FEC and the other one does not,
|
||||
// we still need to keep FEC enabled on the connector since at least one
|
||||
// stream needs it.
|
||||
//
|
||||
this->bFECEnable |= bEnableFEC;
|
||||
|
||||
highestAssessedLC.enableFEC(this->bFECEnable);
|
||||
|
||||
if (main->isEDP() && this->bEnableOuiRestoring)
|
||||
@ -4646,6 +4654,7 @@ bool ConnectorImpl::train(const LinkConfiguration & lConfig, bool force,
|
||||
{
|
||||
LinkTrainingType preferredTrainingType = trainType;
|
||||
bool result;
|
||||
bool bEnableFecOnSor;
|
||||
//
|
||||
// Validate link config against caps
|
||||
//
|
||||
@ -4732,14 +4741,22 @@ bool ConnectorImpl::train(const LinkConfiguration & lConfig, bool force,
|
||||
this->hal->setDirtyLinkStatus(true);
|
||||
|
||||
// We don't need post LQA while powering down the lanes.
|
||||
if ((lConfig.lanes != 0) &&
|
||||
hal->isPostLtAdjustRequestSupported() &&
|
||||
result)
|
||||
if ((lConfig.lanes != 0) && hal->isPostLtAdjustRequestSupported() && result)
|
||||
{
|
||||
result = postLTAdjustment(activeLinkConfig, force);
|
||||
}
|
||||
|
||||
if((lConfig.lanes != 0) && result && lConfig.bEnableFEC)
|
||||
bEnableFecOnSor = lConfig.bEnableFEC;
|
||||
|
||||
if (main->isEDP())
|
||||
{
|
||||
DeviceImpl * nativeDev = findDeviceInList(Address());
|
||||
|
||||
if (nativeDev && nativeDev->bIsPreviouslyFakedMuxDevice)
|
||||
bEnableFecOnSor = activeLinkConfig.bEnableFEC;
|
||||
}
|
||||
|
||||
if((lConfig.lanes != 0) && result && bEnableFecOnSor)
|
||||
{
|
||||
//
|
||||
// Extended latency from link-train end to FEC enable pattern
|
||||
@ -4755,7 +4772,14 @@ bool ConnectorImpl::train(const LinkConfiguration & lConfig, bool force,
|
||||
DP_ASSERT(result);
|
||||
}
|
||||
|
||||
if (lConfig != activeLinkConfig)
|
||||
//
|
||||
// Do not compare bEnableFEC here. In DDS case FEC might be requested but
|
||||
// not performed in RM.
|
||||
//
|
||||
if ((lConfig.lanes != activeLinkConfig.lanes) ||
|
||||
(lConfig.peakRate != activeLinkConfig.peakRate) ||
|
||||
(lConfig.enhancedFraming != activeLinkConfig.enhancedFraming) ||
|
||||
(lConfig.multistream != activeLinkConfig.multistream))
|
||||
{
|
||||
// fallback happens, returns fail to make sure clients notice it.
|
||||
result = false;
|
||||
@ -5539,7 +5563,8 @@ void ConnectorImpl::notifyLongPulse(bool statusConnected)
|
||||
|
||||
if (existingDev && existingDev->isFakedMuxDevice() && !bIsMuxOnDgpu)
|
||||
{
|
||||
DP_LOG((" NotifyLongPulse ignored as mux is not pointing to dGPU and there is a faked device"));
|
||||
DP_LOG((" NotifyLongPulse ignored as mux is not pointing to dGPU and there is a faked device. Marking detect complete"));
|
||||
sink->notifyDetectComplete();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -5755,7 +5780,7 @@ void ConnectorImpl::notifyLongPulseInternal(bool statusConnected)
|
||||
discoveryManager = new DiscoveryManager(messageManager, this, timer, hal);
|
||||
|
||||
// Check and clear if any pending message here
|
||||
if (hal->clearPendingMsg())
|
||||
if (hal->clearPendingMsg() || bForceClearPendingMsg)
|
||||
{
|
||||
DP_LOG(("DP> Stale MSG found: set branch to D3 and back to D0..."));
|
||||
if (hal->isAtLeastVersion(1, 4))
|
||||
@ -5922,11 +5947,13 @@ void ConnectorImpl::notifyLongPulseInternal(bool statusConnected)
|
||||
bPConConnected = true;
|
||||
}
|
||||
|
||||
LinkConfiguration maxLinkConfig = getMaxLinkConfig();
|
||||
|
||||
if (bPConConnected ||
|
||||
(main->isEDP() && this->bSkipAssessLinkForEDP) ||
|
||||
(main->isInternalPanelDynamicMuxCapable()))
|
||||
{
|
||||
this->highestAssessedLC = getMaxLinkConfig();
|
||||
this->highestAssessedLC = maxLinkConfig;
|
||||
this->linkGuessed = bPConConnected;
|
||||
this->bSkipAssessLinkForPCon = bPConConnected;
|
||||
}
|
||||
@ -5941,6 +5968,22 @@ void ConnectorImpl::notifyLongPulseInternal(bool statusConnected)
|
||||
hal->setPowerState(PowerStateD0);
|
||||
}
|
||||
this->assessLink();
|
||||
|
||||
if (this->bReassessMaxLink)
|
||||
{
|
||||
//
|
||||
// If the highest assessed LC is not equal to
|
||||
// max possible link config, re-assess link
|
||||
//
|
||||
NvU8 retries = 0U;
|
||||
|
||||
while((retries < WAR_MAX_REASSESS_ATTEMPT) && (highestAssessedLC != maxLinkConfig))
|
||||
{
|
||||
DP_LOG(("DP> Assessed link is not equal to highest possible config. Reassess link."));
|
||||
this->assessLink();
|
||||
retries++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hal->getLegacyPortCount() != 0)
|
||||
@ -6513,6 +6556,7 @@ void ConnectorImpl::createFakeMuxDevice(const NvU8 *buffer, NvU32 bufferSize)
|
||||
|
||||
// Initialize DSC state
|
||||
newDev->dscCaps.bDSCSupported = true;
|
||||
newDev->dscCaps.bDSCDecompressionSupported = true;
|
||||
newDev->parseDscCaps(buffer, bufferSize);
|
||||
dpMemCopy(newDev->rawDscCaps, buffer, DP_MIN(bufferSize, 16));
|
||||
newDev->bDSCPossible = true;
|
||||
@ -6797,6 +6841,7 @@ bool ConnectorImpl::updatePsrLinkState(bool bTrainLink)
|
||||
{
|
||||
// Bug 3438892 If the panel is turned off the reciever on its side,
|
||||
// force panel link on by writting 600 = 1
|
||||
this->hal->setDirtyLinkStatus(true);
|
||||
if (this->isLinkLost())
|
||||
{
|
||||
hal->setPowerState(PowerStateD0);
|
||||
@ -6961,5 +7006,6 @@ void ConnectorImpl::configInit()
|
||||
bNoFallbackInPostLQA = 0;
|
||||
LT2FecLatencyMs = 0;
|
||||
bDscCapBasedOnParent = false;
|
||||
bForceClearPendingMsg = false;
|
||||
}
|
||||
|
||||
|
@ -1508,7 +1508,11 @@ NvBool DeviceImpl::getDSCSupport()
|
||||
{
|
||||
if (FLD_TEST_DRF(_DPCD14, _DSC_SUPPORT, _DSC_SUPPORT, _YES, byte))
|
||||
{
|
||||
dscCaps.bDSCSupported = true;
|
||||
dscCaps.bDSCDecompressionSupported = true;
|
||||
}
|
||||
if (FLD_TEST_DRF(_DPCD20, _DSC_SUPPORT, _PASS_THROUGH_SUPPORT, _YES, byte))
|
||||
{
|
||||
dscCaps.bDSCPassThroughSupported = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1517,6 +1521,11 @@ NvBool DeviceImpl::getDSCSupport()
|
||||
DP_LOG(("DP-DEV> DSC Support AUX READ failed for %s!", address.toString(sb)));
|
||||
}
|
||||
|
||||
if (dscCaps.bDSCDecompressionSupported || dscCaps.bDSCPassThroughSupported)
|
||||
{
|
||||
dscCaps.bDSCSupported = true;
|
||||
}
|
||||
|
||||
return dscCaps.bDSCSupported;
|
||||
}
|
||||
|
||||
@ -1636,6 +1645,11 @@ NvBool DeviceImpl::isDSCSupported()
|
||||
return dscCaps.bDSCSupported;
|
||||
}
|
||||
|
||||
NvBool DeviceImpl::isDSCDecompressionSupported()
|
||||
{
|
||||
return dscCaps.bDSCDecompressionSupported;
|
||||
}
|
||||
|
||||
NvBool DeviceImpl::isDSCPassThroughSupported()
|
||||
{
|
||||
return dscCaps.bDSCPassThroughSupported;
|
||||
@ -1974,7 +1988,7 @@ void DeviceImpl::setDscDecompressionDevice(bool bDscCapBasedOnParent)
|
||||
this->devDoingDscDecompression = this;
|
||||
this->bDSCPossible = true;
|
||||
}
|
||||
else if (this->parent->isDSCSupported())
|
||||
else if (this->parent->isDSCDecompressionSupported())
|
||||
{
|
||||
//
|
||||
// This condition takes care of DSC capable sink devices
|
||||
@ -1987,12 +2001,15 @@ void DeviceImpl::setDscDecompressionDevice(bool bDscCapBasedOnParent)
|
||||
}
|
||||
else
|
||||
{
|
||||
// This condition takes care of branch device capable of DSC.
|
||||
this->devDoingDscDecompression = this;
|
||||
this->bDSCPossible = true;
|
||||
if (this->isDSCDecompressionSupported())
|
||||
{
|
||||
// This condition takes care of branch device capable of DSC decoding.
|
||||
this->devDoingDscDecompression = this;
|
||||
this->bDSCPossible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (this->parent && this->parent->isDSCSupported())
|
||||
}
|
||||
else if (this->parent && this->parent->isDSCDecompressionSupported())
|
||||
{
|
||||
//
|
||||
// This condition takes care of sink devices not capable of DSC
|
||||
@ -2005,7 +2022,7 @@ void DeviceImpl::setDscDecompressionDevice(bool bDscCapBasedOnParent)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this->isDSCSupported())
|
||||
if (this->isDSCDecompressionSupported())
|
||||
{
|
||||
this->bDSCPossible = true;
|
||||
this->devDoingDscDecompression = this;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -95,7 +95,9 @@ const struct
|
||||
{NV_DP_REGKEY_FORCE_EDP_ILR, &dpRegkeyDatabase.bBypassEDPRevCheck, DP_REG_VAL_BOOL},
|
||||
{NV_DP_DSC_MST_CAP_BUG_3143315, &dpRegkeyDatabase.bDscMstCapBug3143315, DP_REG_VAL_BOOL},
|
||||
{NV_DP_REGKEY_ENABLE_OUI_RESTORING, &dpRegkeyDatabase.bEnableOuiRestoring, DP_REG_VAL_BOOL},
|
||||
{NV_DP_REGKEY_POWER_DOWN_PHY, &dpRegkeyDatabase.bPowerDownPhyBeforeD3, DP_REG_VAL_BOOL}
|
||||
{NV_DP_CHECK_FEC_FOR_DDS_DSC_PANEL, &dpRegkeyDatabase.bCheckFECForDynamicMuxDSCPanel, DP_REG_VAL_BOOL},
|
||||
{NV_DP_REGKEY_POWER_DOWN_PHY, &dpRegkeyDatabase.bPowerDownPhyBeforeD3, DP_REG_VAL_BOOL},
|
||||
{NV_DP_REGKEY_REASSESS_MAX_LINK, &dpRegkeyDatabase.bReassessMaxLink, DP_REG_VAL_BOOL}
|
||||
};
|
||||
|
||||
EvoMainLink::EvoMainLink(EvoInterface * provider, Timer * timer) :
|
||||
@ -896,6 +898,7 @@ void EvoMainLink::applyRegkeyOverrides()
|
||||
_skipPowerdownEDPPanelWhenHeadDetach = dpRegkeyDatabase.bPoweroffEdpInHeadDetachSkipped;
|
||||
_applyLinkBwOverrideWarRegVal = dpRegkeyDatabase.bLinkBwOverrideWarApplied;
|
||||
_enableMSAOverrideOverMST = dpRegkeyDatabase.bMsaOverMstEnabled;
|
||||
_enableFecCheckForDDS = dpRegkeyDatabase.bCheckFECForDynamicMuxDSCPanel;
|
||||
}
|
||||
|
||||
NvU32 EvoMainLink::getRegkeyValue(const char *key)
|
||||
@ -1162,8 +1165,12 @@ bool EvoMainLink::train(const LinkConfiguration & link, bool force,
|
||||
// 1. CR or EQ phase failed.
|
||||
// 2. The request link bandwidth is NOT RBR
|
||||
//
|
||||
if (!requestRmLC.lowerConfig())
|
||||
{
|
||||
// If no valid link config could be found, break here.
|
||||
break;
|
||||
}
|
||||
fallback = true;
|
||||
requestRmLC.lowerConfig();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1235,6 +1242,16 @@ bool EvoMainLink::train(const LinkConfiguration & link, bool force,
|
||||
retLink->setLaneRate(requestRmLC.peakRate, result ? requestRmLC.lanes : 0);
|
||||
retLink->setLTCounter(ltCounter);
|
||||
|
||||
// For release branch only, check FEC return values and update to "retLink"
|
||||
if (_enableFecCheckForDDS)
|
||||
{
|
||||
if (requestRmLC.bEnableFEC && (FLD_TEST_DRF(0073_CTRL_DP, _ERR, _ENABLE_FEC, _ERR, err)))
|
||||
{
|
||||
retLink->bEnableFEC = false;
|
||||
DP_ASSERT(0);
|
||||
}
|
||||
}
|
||||
|
||||
NV_DPTRACE_INFO(LINK_TRAINING_DONE, status, requestRmLC.peakRate, requestRmLC.lanes);
|
||||
|
||||
return result;
|
||||
|
@ -84,6 +84,17 @@ void ConnectorImpl::applyOuiWARs()
|
||||
//
|
||||
LT2FecLatencyMs = 57;
|
||||
|
||||
//
|
||||
// This is to reset the MSTM control bit on the branch device. On this
|
||||
// device, if continuous LAM message are sent very close then IRQ vector
|
||||
// will fail to see stale/pending message and will not reset the MSTM_CTRL
|
||||
// register. Currently making this specific to linux so as to have minimum
|
||||
// effect on windows. Later proper fix for this will be generic.
|
||||
//
|
||||
#if defined(NV_UNIX)
|
||||
bForceClearPendingMsg = true;
|
||||
#endif
|
||||
|
||||
if (bDscMstCapBug3143315)
|
||||
{
|
||||
//
|
||||
|
@ -240,6 +240,7 @@ typedef enum
|
||||
typedef struct DscCaps
|
||||
{
|
||||
NvBool bDSCSupported;
|
||||
NvBool bDSCDecompressionSupported;
|
||||
NvBool bDSCPassThroughSupported;
|
||||
unsigned versionMajor, versionMinor;
|
||||
unsigned rcBufferBlockSize;
|
||||
|
@ -36,25 +36,25 @@
|
||||
// and then checked back in. You cannot make changes to these sections without
|
||||
// corresponding changes to the buildmeister script
|
||||
#ifndef NV_BUILD_BRANCH
|
||||
#define NV_BUILD_BRANCH r528_37
|
||||
#define NV_BUILD_BRANCH r529_18
|
||||
#endif
|
||||
#ifndef NV_PUBLIC_BRANCH
|
||||
#define NV_PUBLIC_BRANCH r528_37
|
||||
#define NV_PUBLIC_BRANCH r529_18
|
||||
#endif
|
||||
|
||||
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS)
|
||||
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r525/r528_37-265"
|
||||
#define NV_BUILD_CHANGELIST_NUM (32376659)
|
||||
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r525/r529_18-534"
|
||||
#define NV_BUILD_CHANGELIST_NUM (33451322)
|
||||
#define NV_BUILD_TYPE "Official"
|
||||
#define NV_BUILD_NAME "rel/gpu_drv/r525/r528_37-265"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (32376659)
|
||||
#define NV_BUILD_NAME "rel/gpu_drv/r525/r529_18-534"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (33451322)
|
||||
|
||||
#else /* Windows builds */
|
||||
#define NV_BUILD_BRANCH_VERSION "r528_37-4"
|
||||
#define NV_BUILD_CHANGELIST_NUM (32375411)
|
||||
#define NV_BUILD_BRANCH_VERSION "r529_18-2"
|
||||
#define NV_BUILD_CHANGELIST_NUM (33403873)
|
||||
#define NV_BUILD_TYPE "Official"
|
||||
#define NV_BUILD_NAME "528.46"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (32375411)
|
||||
#define NV_BUILD_NAME "529.19"
|
||||
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (33403873)
|
||||
#define NV_BUILD_BRANCH_BASE_VERSION R525
|
||||
#endif
|
||||
// End buildmeister python edited section
|
||||
|
@ -4,7 +4,7 @@
|
||||
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS) || defined(NV_VMWARE) || defined(NV_QNX) || defined(NV_INTEGRITY) || \
|
||||
(defined(RMCFG_FEATURE_PLATFORM_GSP) && RMCFG_FEATURE_PLATFORM_GSP == 1)
|
||||
|
||||
#define NV_VERSION_STRING "525.89.02"
|
||||
#define NV_VERSION_STRING "525.147.05"
|
||||
|
||||
#else
|
||||
|
||||
|
@ -112,21 +112,12 @@ struct _NVLOG_BUFFER
|
||||
#endif // NVOS_IS_UNIX
|
||||
|
||||
|
||||
//
|
||||
// Due to this file's peculiar location, NvPort may or may not be includable
|
||||
// This hack will go away when NvLog is moved into common/shared
|
||||
//
|
||||
#if NVOS_IS_MACINTOSH
|
||||
|
||||
#if !PORT_IS_KERNEL_BUILD
|
||||
typedef struct PORT_SPINLOCK PORT_SPINLOCK;
|
||||
#else
|
||||
#include "nvport/nvport.h"
|
||||
#endif
|
||||
typedef struct PORT_MUTEX PORT_MUTEX;
|
||||
typedef struct PORT_RWLOCK PORT_RWLOCK;
|
||||
|
||||
#elif !defined(PORT_IS_KERNEL_BUILD)
|
||||
typedef struct PORT_SPINLOCK PORT_SPINLOCK;
|
||||
#else
|
||||
#if PORT_IS_KERNEL_BUILD
|
||||
#include "nvport/nvport.h"
|
||||
#endif
|
||||
|
||||
@ -143,11 +134,35 @@ typedef struct _NVLOG_LOGGER
|
||||
NvU32 nextFree;
|
||||
/** Total number of free buffer slots */
|
||||
NvU32 totalFree;
|
||||
/** Lock for all buffer oprations */
|
||||
/** Lock for some buffer oprations */
|
||||
PORT_SPINLOCK* mainLock;
|
||||
/** Lock for creating/deleting pBuffers and accessing them from RmCtrls */
|
||||
PORT_MUTEX* buffersLock;
|
||||
/** Lock for registering/deregistering flush callbacks */
|
||||
PORT_RWLOCK *flushCbsLock;
|
||||
} NVLOG_LOGGER;
|
||||
extern NVLOG_LOGGER NvLogLogger;
|
||||
|
||||
/**
|
||||
* NvLog uses two locks:
|
||||
* - NVLOG_LOGGER::mainLock is used to protect some accesses to pBuffers, or
|
||||
* an individual pBuffers entry depending on locking flags.
|
||||
* - NVLOG_LOGGER::buffersLock is used to protect creating/deleting pBuffers and accessing them
|
||||
* from certain RmCtrl handlers.
|
||||
*
|
||||
* Historically in most contexts obtaining RMAPI lock would suffice, and mainLock would optionally
|
||||
* be used for certain buffers. Ioctl NV_ESC_RM_NVLOG_CTRL cannot touch RMAPI lock and needs
|
||||
* to access NvLog. The latter operation might race if called at an inopportune time: e.g. if the
|
||||
* ioctl is called during RM init when KGSP creates/deletes GSP NvLog buffers. Using buffersLock is
|
||||
* thus necessary to resolve the potential race.
|
||||
*
|
||||
* This leads to an unfortunate sequence where mainLock and buffersLock are nested. The latter lock
|
||||
* cannot be removed as it is used in IRQ paths.
|
||||
*
|
||||
* This should be refactored to use a single RWLock that does conditional acquire in possible IRQ
|
||||
* paths.
|
||||
*/
|
||||
|
||||
//
|
||||
// Buffer flags
|
||||
//
|
||||
|
@ -20,7 +20,7 @@
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __gh100_dev_fb_h
|
||||
#define __gh100_dev_fb_h_
|
||||
#define NV_PFB_NISO_FLUSH_SYSMEM_ADDR_SHIFT 8 /* */
|
||||
@ -29,4 +29,25 @@
|
||||
#define NV_PFB_FBHUB_PCIE_FLUSH_SYSMEM_ADDR_HI 0x00100A38 /* RW-4R */
|
||||
#define NV_PFB_FBHUB_PCIE_FLUSH_SYSMEM_ADDR_HI_ADR 31:0 /* RWIVF */
|
||||
#define NV_PFB_FBHUB_PCIE_FLUSH_SYSMEM_ADDR_HI_ADR_MASK 0x000FFFFF /* ----V */
|
||||
|
||||
#define NV_PFB_PRI_MMU_L2TLB_ECC_UNCORRECTED_ERR_COUNT 0x00100E78 /* RW-4R */
|
||||
#define NV_PFB_PRI_MMU_L2TLB_ECC_UNCORRECTED_ERR_COUNT 0x00100E78 /* RW-4R */
|
||||
#define NV_PFB_PRI_MMU_L2TLB_ECC_UNCORRECTED_ERR_COUNT_TOTAL 15:0 /* RWEVF */
|
||||
#define NV_PFB_PRI_MMU_L2TLB_ECC_UNCORRECTED_ERR_COUNT_TOTAL_INIT 0 /* RWE-V */
|
||||
#define NV_PFB_PRI_MMU_L2TLB_ECC_UNCORRECTED_ERR_COUNT_UNIQUE 31:16 /* RWEVF */
|
||||
#define NV_PFB_PRI_MMU_L2TLB_ECC_UNCORRECTED_ERR_COUNT_UNIQUE_INIT 0 /* RWE-V */
|
||||
|
||||
#define NV_PFB_PRI_MMU_HUBTLB_ECC_UNCORRECTED_ERR_COUNT 0x00100E8C /* RW-4R */
|
||||
#define NV_PFB_PRI_MMU_HUBTLB_ECC_UNCORRECTED_ERR_COUNT 0x00100E8C /* RW-4R */
|
||||
#define NV_PFB_PRI_MMU_HUBTLB_ECC_UNCORRECTED_ERR_COUNT_TOTAL 15:0 /* RWEVF */
|
||||
#define NV_PFB_PRI_MMU_HUBTLB_ECC_UNCORRECTED_ERR_COUNT_TOTAL_INIT 0 /* RWE-V */
|
||||
#define NV_PFB_PRI_MMU_HUBTLB_ECC_UNCORRECTED_ERR_COUNT_UNIQUE 31:16 /* RWEVF */
|
||||
#define NV_PFB_PRI_MMU_HUBTLB_ECC_UNCORRECTED_ERR_COUNT_UNIQUE_INIT 0 /* RWE-V */
|
||||
|
||||
#define NV_PFB_PRI_MMU_FILLUNIT_ECC_UNCORRECTED_ERR_COUNT 0x00100EA0 /* RW-4R */
|
||||
#define NV_PFB_PRI_MMU_FILLUNIT_ECC_UNCORRECTED_ERR_COUNT 0x00100EA0 /* RW-4R */
|
||||
#define NV_PFB_PRI_MMU_FILLUNIT_ECC_UNCORRECTED_ERR_COUNT_TOTAL 15:0 /* RWEVF */
|
||||
#define NV_PFB_PRI_MMU_FILLUNIT_ECC_UNCORRECTED_ERR_COUNT_TOTAL_INIT 0 /* RWE-V */
|
||||
#define NV_PFB_PRI_MMU_FILLUNIT_ECC_UNCORRECTED_ERR_COUNT_UNIQUE 31:16 /* RWEVF */
|
||||
#define NV_PFB_PRI_MMU_FILLUNIT_ECC_UNCORRECTED_ERR_COUNT_UNIQUE_INIT 0 /* RWE-V */
|
||||
#endif // __gh100_dev_fb_h__
|
||||
|
29
src/common/inc/swref/published/hopper/gh100/dev_fbpa.h
Normal file
29
src/common/inc/swref/published/hopper/gh100/dev_fbpa.h
Normal file
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef __gh100_dev_fbpa_h_
|
||||
#define __gh100_dev_fbpa_h_
|
||||
|
||||
#define NV_PFB_FBPA_0_ECC_DED_COUNT__SIZE_1 4 /* */
|
||||
#define NV_PFB_FBPA_0_ECC_DED_COUNT(i) (0x009025A0+(i)*4) /* RW-4A */
|
||||
#endif // __gh100_dev_fbpa_h_
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2003-2021 NVIDIA CORPORATION & AFFILIATES
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -24,6 +24,11 @@
|
||||
#ifndef __gh100_dev_fsp_addendum_h__
|
||||
#define __gh100_dev_fsp_addendum_h__
|
||||
|
||||
#define NV_GFW_FSP_UCODE_VERSION NV_PFSP_FALCON_COMMON_SCRATCH_GROUP_3(1)
|
||||
#define NV_GFW_FSP_UCODE_VERSION_FULL 11:0
|
||||
#define NV_GFW_FSP_UCODE_VERSION_MAJOR 11:8
|
||||
#define NV_GFW_FSP_UCODE_VERSION_MINOR 7:0
|
||||
|
||||
//
|
||||
// RM uses channel 0 for FSP EMEM on GH100.
|
||||
//
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2003-2021 NVIDIA CORPORATION & AFFILIATES
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -64,5 +64,9 @@
|
||||
#define NV_PFSP_FALCON_COMMON_SCRATCH_GROUP_2__DEVICE_MAP 0x00000016 /* */
|
||||
#define NV_PFSP_FALCON_COMMON_SCRATCH_GROUP_2_VAL 31:0 /* RWIVF */
|
||||
#define NV_PFSP_FALCON_COMMON_SCRATCH_GROUP_2_VAL_INIT 0x00000000 /* RWI-V */
|
||||
#define NV_PFSP_FALCON_COMMON_SCRATCH_GROUP_3(i) (0x008f0330+(i)*4) /* RW-4A */
|
||||
#define NV_PFSP_FALCON_COMMON_SCRATCH_GROUP_3__SIZE_1 4 /* */
|
||||
#define NV_PFSP_FALCON_COMMON_SCRATCH_GROUP_3_VAL 31:0 /* RWIVF */
|
||||
#define NV_PFSP_FALCON_COMMON_SCRATCH_GROUP_3_VAL_INIT 0x00000000 /* RWI-V */
|
||||
|
||||
#endif // __gh100_dev_fsp_pri_h__
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2003-2022 NVIDIA CORPORATION & AFFILIATES
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -24,6 +24,14 @@
|
||||
#ifndef __gh100_dev_gc6_island_h__
|
||||
#define __gh100_dev_gc6_island_h__
|
||||
|
||||
#define NV_PGC6_SCI_SEC_TIMER_TIME_0 0x00118f54 /* RW-4R */
|
||||
#define NV_PGC6_SCI_SEC_TIMER_TIME_0_NSEC 31:5 /* RWEUF */
|
||||
#define NV_PGC6_SCI_SEC_TIMER_TIME_0_NSEC_ZERO 0x00000000 /* RWE-V */
|
||||
|
||||
#define NV_PGC6_SCI_SEC_TIMER_TIME_1 0x00118f58 /* RW-4R */
|
||||
#define NV_PGC6_SCI_SEC_TIMER_TIME_1_NSEC 28:0 /* RWEUF */
|
||||
#define NV_PGC6_SCI_SEC_TIMER_TIME_1_NSEC_ZERO 0x00000000 /* RWE-V */
|
||||
|
||||
#define NV_PGC6_SCI_SYS_TIMER_OFFSET_0 0x00118df4 /* RW-4R */
|
||||
#define NV_PGC6_SCI_SYS_TIMER_OFFSET_0_UPDATE 0:0 /* RWEVF */
|
||||
#define NV_PGC6_SCI_SYS_TIMER_OFFSET_0_UPDATE_DONE 0x00000000 /* R-E-V */
|
||||
|
33
src/common/inc/swref/published/hopper/gh100/dev_ltc.h
Normal file
33
src/common/inc/swref/published/hopper/gh100/dev_ltc.h
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef __gh100_dev_ltc_h_
|
||||
#define __gh100_dev_ltc_h_
|
||||
|
||||
#define NV_PLTCG_LTC0_LTS0_L2_CACHE_ECC_UNCORRECTED_ERR_COUNT 0x001404f8 /* RW-4R */
|
||||
#define NV_PLTCG_LTC0_LTS0_L2_CACHE_ECC_UNCORRECTED_ERR_COUNT_TOTAL 15:0 /* RWIVF */
|
||||
#define NV_PLTCG_LTC0_LTS0_L2_CACHE_ECC_UNCORRECTED_ERR_COUNT_TOTAL_INIT 0x0000 /* RWI-V */
|
||||
#define NV_PLTCG_LTC0_LTS0_L2_CACHE_ECC_UNCORRECTED_ERR_COUNT_UNIQUE 31:16 /* RWIVF */
|
||||
#define NV_PLTCG_LTC0_LTS0_L2_CACHE_ECC_UNCORRECTED_ERR_COUNT_UNIQUE_INIT 0x0000 /* RWI-V */
|
||||
|
||||
#endif // __gh100_dev_ltc_h_
|
52
src/common/inc/swref/published/hopper/gh100/dev_nv_xpl.h
Normal file
52
src/common/inc/swref/published/hopper/gh100/dev_nv_xpl.h
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef __gh100_dev_nv_xpl_h_
|
||||
#define __gh100_dev_nv_xpl_h_
|
||||
#define NV_XPL_DL_ERR_COUNT_RBUF 0x00000a54 /* R--4R */
|
||||
#define NV_XPL_DL_ERR_COUNT_RBUF__PRIV_LEVEL_MASK 0x00000b08 /* */
|
||||
#define NV_XPL_DL_ERR_COUNT_RBUF_CORR_ERR 15:0 /* R-EVF */
|
||||
#define NV_XPL_DL_ERR_COUNT_RBUF_CORR_ERR_INIT 0x0000 /* R-E-V */
|
||||
#define NV_XPL_DL_ERR_COUNT_RBUF_UNCORR_ERR 31:16 /* R-EVF */
|
||||
#define NV_XPL_DL_ERR_COUNT_RBUF_UNCORR_ERR_INIT 0x0000 /* R-E-V */
|
||||
#define NV_XPL_DL_ERR_COUNT_SEQ_LUT 0x00000a58 /* R--4R */
|
||||
#define NV_XPL_DL_ERR_COUNT_SEQ_LUT__PRIV_LEVEL_MASK 0x00000b08 /* */
|
||||
#define NV_XPL_DL_ERR_COUNT_SEQ_LUT_CORR_ERR 15:0 /* R-EVF */
|
||||
#define NV_XPL_DL_ERR_COUNT_SEQ_LUT_CORR_ERR_INIT 0x0000 /* R-E-V */
|
||||
#define NV_XPL_DL_ERR_COUNT_SEQ_LUT_UNCORR_ERR 31:16 /* R-EVF */
|
||||
#define NV_XPL_DL_ERR_COUNT_SEQ_LUT_UNCORR_ERR_INIT 0x0000 /* R-E-V */
|
||||
|
||||
#define NV_XPL_DL_ERR_RESET 0x00000a5c /* RW-4R */
|
||||
#define NV_XPL_DL_ERR_RESET_RBUF_CORR_ERR_COUNT 0:0 /* RWCVF */
|
||||
#define NV_XPL_DL_ERR_RESET_RBUF_CORR_ERR_COUNT_DONE 0x0 /* RWC-V */
|
||||
#define NV_XPL_DL_ERR_RESET_RBUF_CORR_ERR_COUNT_PENDING 0x1 /* -W--T */
|
||||
#define NV_XPL_DL_ERR_RESET_SEQ_LUT_CORR_ERR_COUNT 1:1 /* RWCVF */
|
||||
#define NV_XPL_DL_ERR_RESET_SEQ_LUT_CORR_ERR_COUNT_DONE 0x0 /* RWC-V */
|
||||
#define NV_XPL_DL_ERR_RESET_SEQ_LUT_CORR_ERR_COUNT_PENDING 0x1 /* -W--T */
|
||||
#define NV_XPL_DL_ERR_RESET_RBUF_UNCORR_ERR_COUNT 16:16 /* RWCVF */
|
||||
#define NV_XPL_DL_ERR_RESET_RBUF_UNCORR_ERR_COUNT_DONE 0x0 /* RWC-V */
|
||||
#define NV_XPL_DL_ERR_RESET_RBUF_UNCORR_ERR_COUNT_PENDING 0x1 /* -W--T */
|
||||
#define NV_XPL_DL_ERR_RESET_SEQ_LUT_UNCORR_ERR_COUNT 17:17 /* RWCVF */
|
||||
#define NV_XPL_DL_ERR_RESET_SEQ_LUT_UNCORR_ERR_COUNT_DONE 0x0 /* RWC-V */
|
||||
#define NV_XPL_DL_ERR_RESET_SEQ_LUT_UNCORR_ERR_COUNT_PENDING 0x1 /* -W--T */
|
||||
#endif // __gh100_dev_nv_xpl_h__
|
@ -32,6 +32,11 @@
|
||||
#define NV_EP_PCFG_GPU_REVISION_ID_AND_CLASSCODE_SUB_CLASSCODE 23:16 /* R-IVF */
|
||||
#define NV_EP_PCFG_GPU_REVISION_ID_AND_CLASSCODE_BASE_CLASSCODE 31:24 /* R-IVF */
|
||||
#define NV_EP_PCFG_GPU_REVISION_ID_AND_CLASSCODE_BASE_CLASSCODE_3D 0x00000003 /* R-I-V */
|
||||
#define NV_EP_PCFG_GPU_BARREG0 0x00000010 /* RW-4R */
|
||||
#define NV_EP_PCFG_GPU_BARREG0_REG_ADDR_TYPE 2:1 /* R-IVF */
|
||||
#define NV_EP_PCFG_GPU_BARREG0_REG_ADDR_TYPE_32BIT 0x00000000 /* R-I-V */
|
||||
#define NV_EP_PCFG_GPU_BARREG0_REG_ADDR_TYPE_64BIT 0x00000002 /* R---V */
|
||||
#define NV_EP_PCFG_GPU_BARREG5 0x00000024 /* RW-4R */
|
||||
#define NV_EP_PCFG_GPU_SUBSYSTEM_ID 0x0000002C /* R--4R */
|
||||
#define NV_EP_PCFG_GPU_MSI_64_HEADER 0x00000048 /* RW-4R */
|
||||
#define NV_EP_PCFG_GPU_MSI_64_HEADER_MSI_ENABLE 16:16 /* RWIVF */
|
||||
@ -70,6 +75,11 @@
|
||||
#define NV_EP_PCFG_GPU_CORRECTABLE_ERROR_STATUS_REPLAY_NUM_ROLLOVER 8:8 /* RWCVF */
|
||||
#define NV_EP_PCFG_GPU_CORRECTABLE_ERROR_STATUS_REPLAY_TIMER_TIMEOUT 12:12 /* RWCVF */
|
||||
#define NV_EP_PCFG_GPU_CORRECTABLE_ERROR_STATUS_ADVISORY_NON_FATAL_ERROR 13:13 /* RWCVF */
|
||||
#define NV_EP_PCFG_GPU_SRIOV_INIT_TOT_VF 0x0000025C /* R--4R */
|
||||
#define NV_EP_PCFG_GPU_SRIOV_INIT_TOT_VF_TOTAL_VFS 31:16 /* R-EVF */
|
||||
#define NV_EP_PCFG_GPU_SRIOV_FIRST_VF_STRIDE 0x00000264 /* R--4R */
|
||||
#define NV_EP_PCFG_GPU_SRIOV_FIRST_VF_STRIDE_FIRST_VF_OFFSET 15:0 /* R-IVF */
|
||||
#define NV_EP_PCFG_GPU_VF_BAR0 0x00000274 /* RW-4R */
|
||||
#define NV_EP_PCFG_GPU_VSEC_DEBUG_SEC 0x000002B4 /* R--4R */
|
||||
#define NV_EP_PCFG_GPU_VSEC_DEBUG_SEC_FAULT_FUSE_POD 0:0 /* R-CVF */
|
||||
#define NV_EP_PCFG_GPU_VSEC_DEBUG_SEC_FAULT_FUSE_SCPM 1:1 /* R-CVF */
|
||||
|
@ -24,4 +24,7 @@
|
||||
#ifndef __gh100_dev_xtl_ep_pri_h__
|
||||
#define __gh100_dev_xtl_ep_pri_h__
|
||||
#define NV_EP_PCFGM 0x92FFF:0x92000 /* RW--D */
|
||||
|
||||
#define NV_XTL_EP_PRI_DED_ERROR_STATUS 0x0000043C /* RW-4R */
|
||||
#define NV_XTL_EP_PRI_RAM_ERROR_INTR_STATUS 0x000003C8 /* RW-4R */
|
||||
#endif // __gh100_dev_xtl_ep_pri_h__
|
||||
|
@ -21,3 +21,9 @@
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
#define NV_CHIP_EXTENDED_SYSTEM_PHYSICAL_ADDRESS_BITS 52
|
||||
#define NV_LTC_PRI_STRIDE 8192
|
||||
#define NV_LTS_PRI_STRIDE 512
|
||||
#define NV_FBPA_PRI_STRIDE 16384
|
||||
#define NV_SCAL_LITTER_NUM_FBPAS 24
|
||||
#define NV_XPL_BASE_ADDRESS 540672
|
||||
#define NV_XTL_BASE_ADDRESS 593920
|
||||
|
@ -47,5 +47,17 @@
|
||||
#define NV_XAL_EP_INTR_0_PRI_RSP_TIMEOUT 3:3
|
||||
#define NV_XAL_EP_INTR_0_PRI_RSP_TIMEOUT_PENDING 0x1
|
||||
#define NV_XAL_EP_SCPM_PRI_DUMMY_DATA_PATTERN_INIT 0xbadf0200
|
||||
|
||||
#define NV_XAL_EP_REORDER_ECC_UNCORRECTED_ERR_COUNT 0x0010f364 /* RW-4R */
|
||||
#define NV_XAL_EP_REORDER_ECC_UNCORRECTED_ERR_COUNT_TOTAL 15:0 /* RWIUF */
|
||||
#define NV_XAL_EP_REORDER_ECC_UNCORRECTED_ERR_COUNT_TOTAL_INIT 0x0000 /* RWI-V */
|
||||
#define NV_XAL_EP_REORDER_ECC_UNCORRECTED_ERR_COUNT_UNIQUE 31:16 /* RWIUF */
|
||||
#define NV_XAL_EP_REORDER_ECC_UNCORRECTED_ERR_COUNT_UNIQUE_INIT 0x0000 /* RWI-V */
|
||||
|
||||
#define NV_XAL_EP_P2PREQ_ECC_UNCORRECTED_ERR_COUNT 0x0010f37c /* RW-4R */
|
||||
#define NV_XAL_EP_P2PREQ_ECC_UNCORRECTED_ERR_COUNT_TOTAL 15:0 /* RWIUF */
|
||||
#define NV_XAL_EP_P2PREQ_ECC_UNCORRECTED_ERR_COUNT_TOTAL_INIT 0x0000 /* RWI-V */
|
||||
#define NV_XAL_EP_P2PREQ_ECC_UNCORRECTED_ERR_COUNT_UNIQUE 31:16 /* RWIUF */
|
||||
#define NV_XAL_EP_P2PREQ_ECC_UNCORRECTED_ERR_COUNT_UNIQUE_INIT 0x0000 /* RWI-V */
|
||||
#endif // __gh100_pri_nv_xal_ep_h__
|
||||
|
||||
|
@ -12,17 +12,13 @@
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef __lr10_dev_minion_ip_addendum_h__
|
||||
#define __lr10_dev_minion_ip_addendum_h__
|
||||
|
||||
#define NV_MINION_NVLINK_DL_CMD_COMMAND_INITRXTXTERM 0x12
|
||||
|
||||
#define NV_NVLSTAT 0x00000103:0x00000000 /* RW--D */
|
||||
#define NV_NVLSTAT_UC01 0x00000001 /* R--4R */
|
||||
#define NV_NVLSTAT_UC01_PM_STATE 31:31 /* R---F */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2003-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2003-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -635,4 +635,7 @@
|
||||
#define NV_NVLIPT_LNK_CTRL_CAP_LOCAL_LINK_CHANNEL_ALI_SUPPORT 28:28 /* RWIVF */
|
||||
#define NV_NVLIPT_LNK_CTRL_CAP_LOCAL_LINK_CHANNEL_ALI_SUPPORT_SUPPORTED 0x00000001 /* RWI-V */
|
||||
#define NV_NVLIPT_LNK_CTRL_CAP_LOCAL_LINK_CHANNEL_ALI_SUPPORT_NOT_SUPPORTED 0x00000000 /* RW--V */
|
||||
#define NV_NVLIPT_LNK_SCRATCH_WARM 0x000007c0 /* RW-4R */
|
||||
#define NV_NVLIPT_LNK_SCRATCH_WARM_DATA 31:0 /* RWEVF */
|
||||
#define NV_NVLIPT_LNK_SCRATCH_WARM_DATA_INIT 0xdeadbaad /* RWE-V */
|
||||
#endif // __ls10_dev_nvlipt_lnk_ip_h__
|
||||
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2003-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the Software),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef __ls10_ptop_discovery_ip_h__
|
||||
#define __ls10_ptop_discovery_ip_h__
|
||||
/* This file is autogenerated. Do not edit */
|
||||
#define NV_PTOP_UNICAST_SW_DEVICE_BASE_SAW_0 0x00028000 /* */
|
||||
#endif // __ls10_ptop_discovery_ip_h__
|
@ -23,9 +23,18 @@
|
||||
|
||||
#ifndef __tu102_dev_nv_xve_h__
|
||||
#define __tu102_dev_nv_xve_h__
|
||||
#define NV_PCFG 0x00088FFF:0x00088000 /* RW--D */
|
||||
#define NV_PCFG 0x00088FFF:0x00088000 /* RW--D */
|
||||
#define NV_XVE_MSIX_CAP_HDR 0x000000C8 /* RW-4R */
|
||||
#define NV_XVE_MSIX_CAP_HDR_ENABLE 31:31 /* RWIVF */
|
||||
#define NV_XVE_MSIX_CAP_HDR_ENABLE_ENABLED 0x00000001 /* RW--V */
|
||||
#define NV_XVE_MSIX_CAP_HDR_ENABLE_DISABLED 0x00000000 /* RWI-V */
|
||||
#define NV_XVE_SRIOV_CAP_HDR3 0x00000BD8 /* R--4R */
|
||||
#define NV_XVE_SRIOV_CAP_HDR3_TOTAL_VFS 31:16 /* R-EVF */
|
||||
#define NV_XVE_SRIOV_CAP_HDR5 0x00000BE0 /* R--4R */
|
||||
#define NV_XVE_SRIOV_CAP_HDR5_FIRST_VF_OFFSET 15:0 /* R-IVF */
|
||||
#define NV_XVE_SRIOV_CAP_HDR9 0x00000BF0 /* RW-4R */
|
||||
#define NV_XVE_SRIOV_CAP_HDR10 0x00000BF4 /* RW-4R */
|
||||
#define NV_XVE_SRIOV_CAP_HDR11_VF_BAR1_HI 0x00000BF8 /* RW-4R */
|
||||
#define NV_XVE_SRIOV_CAP_HDR12 0x00000BFC /* RW-4R */
|
||||
#define NV_XVE_SRIOV_CAP_HDR13_VF_BAR2_HI 0x00000C00 /* RW-4R */
|
||||
#endif // __tu102_dev_nv_xve_h__
|
||||
|
@ -315,7 +315,8 @@ NvHdmi_QueryFRLConfig(NvHdmiPkt_Handle libHandle,
|
||||
}
|
||||
|
||||
// if there is no FRL capability reported fail this call
|
||||
if (pSinkCaps->linkMaxFRLRate == HDMI_FRL_DATA_RATE_NONE)
|
||||
if ((pSrcCaps->linkMaxFRLRate == HDMI_FRL_DATA_RATE_NONE) ||
|
||||
(pSinkCaps->linkMaxFRLRate == HDMI_FRL_DATA_RATE_NONE))
|
||||
{
|
||||
return NVHDMIPKT_FAIL;
|
||||
}
|
||||
|
@ -2098,8 +2098,8 @@ NvU32 NvTiming_EDIDValidationMask(NvU8 *pEdid, NvU32 length, NvBool bIsStrongVal
|
||||
|
||||
// validate DTD blocks
|
||||
pDTD = (DETAILEDTIMINGDESCRIPTOR *)&pExt[((EIA861EXTENSION *)pExt)->offset];
|
||||
while (pDTD->wDTPixelClock != 0 &&
|
||||
(NvU8 *)pDTD - pExt < (int)sizeof(EIA861EXTENSION))
|
||||
while ((pDTD->wDTPixelClock != 0) &&
|
||||
(((NvU8 *)pDTD - pExt + sizeof(DETAILEDTIMINGDESCRIPTOR)) < ((NvU8)sizeof(EIA861EXTENSION) - 1)))
|
||||
{
|
||||
if (parseEdidDetailedTimingDescriptor((NvU8 *)pDTD, NULL) != NVT_STATUS_SUCCESS)
|
||||
{
|
||||
@ -2342,8 +2342,8 @@ NvU32 NvTiming_EDIDStrongValidationMask(NvU8 *pEdid, NvU32 length)
|
||||
|
||||
// validate DTD blocks
|
||||
pDTD = (DETAILEDTIMINGDESCRIPTOR *)&pExt[((EIA861EXTENSION *)pExt)->offset];
|
||||
while (pDTD->wDTPixelClock != 0 &&
|
||||
(NvU8 *)pDTD - pExt < (int)sizeof(EIA861EXTENSION))
|
||||
while ((pDTD->wDTPixelClock != 0) &&
|
||||
(((NvU8 *)pDTD - pExt + sizeof(DETAILEDTIMINGDESCRIPTOR)) < ((NvU8)sizeof(EIA861EXTENSION) -1)))
|
||||
{
|
||||
if (parseEdidDetailedTimingDescriptor((NvU8 *)pDTD, NULL) != NVT_STATUS_SUCCESS)
|
||||
ret |= NVT_EDID_VALIDATION_ERR_MASK(NVT_EDID_VALIDATION_ERR_EXT_DTD);
|
||||
|
@ -397,7 +397,7 @@ void parse861ExtDetailedTiming(NvU8 *pEdidExt,
|
||||
// Get all detailed timings in CEA ext block
|
||||
pDTD = (DETAILEDTIMINGDESCRIPTOR *)&pEdidExt[pEIA861->offset];
|
||||
|
||||
while((NvU8 *)pDTD < (pEdidExt + sizeof(EDIDV1STRUC)) && // Check that we're not going beyond this extension block.
|
||||
while((NvU8 *)pDTD + sizeof(DETAILEDTIMINGDESCRIPTOR) < (pEdidExt + sizeof(EDIDV1STRUC) - 1) &&
|
||||
pDTD->wDTPixelClock != 0)
|
||||
{
|
||||
NVMISC_MEMSET(&newTiming, 0, sizeof(newTiming));
|
||||
@ -1237,6 +1237,12 @@ NVT_STATUS get861ExtInfo(NvU8 *p, NvU32 size, NVT_EDID_CEA861_INFO *p861info)
|
||||
return NVT_STATUS_ERR;
|
||||
}
|
||||
|
||||
// DTD offset sanity check
|
||||
if (p[2] >= 1 && p[2] <= 3)
|
||||
{
|
||||
return NVT_STATUS_ERR;
|
||||
}
|
||||
|
||||
// don't do anything further if p861info is NULL
|
||||
if (p861info == NULL)
|
||||
{
|
||||
@ -1299,6 +1305,11 @@ NVT_STATUS parseCta861DataBlockInfo(NvU8 *p,
|
||||
tag = NVT_CEA861_GET_SHORT_DESCRIPTOR_TAG(p[i]);
|
||||
payload = NVT_CEA861_GET_SHORT_DESCRIPTOR_SIZE(p[i]);
|
||||
|
||||
/*don't allow data colleciton totally size larger than [127 - 5 (tag, revision, offset, describing native video format, checksum)]*/
|
||||
if ((i + payload > size) || (i + payload > 122))
|
||||
{
|
||||
return NVT_STATUS_ERR;
|
||||
}
|
||||
// move the pointer to the payload section or extended Tag Code
|
||||
i++;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*******************************************************************************
|
||||
Copyright (c) 2014-2022 NVidia Corporation
|
||||
Copyright (c) 2014-2023 NVidia Corporation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
@ -120,6 +120,12 @@ struct nvlink_device
|
||||
NvU32 numLinksPerIoctrl;
|
||||
NvU32 numActiveLinksPerIoctrl;
|
||||
|
||||
//
|
||||
// boolean indicating if a given device
|
||||
// is a reduced nvlink config
|
||||
//
|
||||
NvBool bReducedNvlinkConfig;
|
||||
|
||||
// Client private information
|
||||
void *pDevInfo;
|
||||
};
|
||||
@ -397,6 +403,10 @@ NvBool nvlink_lib_is_initialized(void);
|
||||
*/
|
||||
NvBool nvlink_lib_is_device_list_empty(void);
|
||||
|
||||
/*
|
||||
* Get if a device registerd to the nvlink corelib has a reduced nvlink config
|
||||
*/
|
||||
NvBool nvlink_lib_is_registerd_device_with_reduced_config(void);
|
||||
|
||||
/************************************************************************************************/
|
||||
/************************** NVLink library driver-side interface ********************************/
|
||||
@ -429,6 +439,11 @@ NvlStatus nvlink_lib_register_link(nvlink_device *dev, nvlink_link *link);
|
||||
*/
|
||||
NvlStatus nvlink_lib_unregister_link(nvlink_link *link);
|
||||
|
||||
/*
|
||||
* Gets number of devices with type deviceType
|
||||
*/
|
||||
NvlStatus nvlink_lib_return_device_count_by_type(NvU32 deviceType, NvU32 *numDevices);
|
||||
|
||||
|
||||
/************************************************************************************************/
|
||||
/******************************* NVLink link management functions *******************************/
|
||||
@ -465,6 +480,7 @@ NvlStatus nvlink_lib_is_link_using_ALI(nvlink_link *link, NvBool *usingALI);
|
||||
* Set the training state for the given link as non-ALI or ALI
|
||||
*/
|
||||
NvlStatus nvlink_lib_link_set_training_mode(nvlink_link *link, NvBool enableALI);
|
||||
|
||||
/************************************************************************************************/
|
||||
/*************************** NVLink topology discovery functions ********************************/
|
||||
/************************************************************************************************/
|
||||
|
@ -46,6 +46,11 @@ NvlStatus nvlink_lib_unload(void);
|
||||
*/
|
||||
NvlStatus nvlink_lib_ioctl_ctrl(nvlink_ioctrl_params *ctrl_params);
|
||||
|
||||
/*
|
||||
* Gets number of devices with type deviceType
|
||||
*/
|
||||
NvlStatus nvlink_lib_return_device_count_by_type(NvU32 deviceType, NvU32 *numDevices);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -30,6 +30,9 @@ extern "C" {
|
||||
|
||||
#include "nvlink_common.h"
|
||||
|
||||
#define TOP_LEVEL_LOCKING_DISABLED 1
|
||||
#define PER_LINK_LOCKING_DISABLED 1
|
||||
|
||||
#define NVLINK_FREE(x) nvlink_free((void *)x)
|
||||
|
||||
// Memory management functions
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*******************************************************************************
|
||||
Copyright (c) 2019-2020 NVidia Corporation
|
||||
Copyright (c) 2019-2023 NVidia Corporation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
@ -127,8 +127,8 @@ nvlink_lib_unload(void)
|
||||
}
|
||||
|
||||
// Release and free top-level lock
|
||||
nvlink_lib_top_lock_release();
|
||||
nvlink_lib_top_lock_free();
|
||||
nvlink_lib_top_lock_release();
|
||||
nvlink_lib_top_lock_free();
|
||||
}
|
||||
|
||||
return NVL_SUCCESS;
|
||||
@ -160,3 +160,86 @@ nvlink_lib_is_device_list_empty(void)
|
||||
return isEmpty;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get if a device registerd to the nvlink corelib has a reduced nvlink config
|
||||
*
|
||||
* return NV_TRUE if there is a device registered to the core library that is a reduced
|
||||
* nvlink config device
|
||||
*/
|
||||
NvBool
|
||||
nvlink_lib_is_registerd_device_with_reduced_config(void)
|
||||
{
|
||||
NvlStatus lock_status = NVL_SUCCESS;
|
||||
nvlink_device *dev = NULL;
|
||||
|
||||
// Acquire top-level lock
|
||||
lock_status = nvlink_lib_top_lock_acquire();
|
||||
if (lock_status != NVL_SUCCESS)
|
||||
{
|
||||
NVLINK_PRINT((DBG_MODULE_NVLINK_CORE, NVLINK_DBG_LEVEL_ERRORS,
|
||||
"%s: Failed to acquire top-level lock\n",
|
||||
__FUNCTION__));
|
||||
|
||||
return NV_FALSE;
|
||||
}
|
||||
|
||||
FOR_EACH_DEVICE_REGISTERED(dev, nvlinkLibCtx.nv_devicelist_head, node)
|
||||
{
|
||||
if (dev->bReducedNvlinkConfig == NV_TRUE)
|
||||
{
|
||||
// Release top-level lock
|
||||
nvlink_lib_top_lock_release();
|
||||
return NV_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// Release top-level lock
|
||||
nvlink_lib_top_lock_release();
|
||||
|
||||
return NV_FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the number of devices that have the device type deviceType
|
||||
*/
|
||||
NvlStatus
|
||||
nvlink_lib_return_device_count_by_type
|
||||
(
|
||||
NvU32 deviceType,
|
||||
NvU32 *numDevices
|
||||
)
|
||||
{
|
||||
NvlStatus lock_status = NVL_SUCCESS;
|
||||
nvlink_device *dev = NULL;
|
||||
NvU32 device_count = 0;
|
||||
|
||||
if (nvlink_lib_is_initialized())
|
||||
{
|
||||
// Acquire top-level lock
|
||||
lock_status = nvlink_lib_top_lock_acquire();
|
||||
if (lock_status != NVL_SUCCESS)
|
||||
{
|
||||
NVLINK_PRINT((DBG_MODULE_NVLINK_CORE, NVLINK_DBG_LEVEL_ERRORS,
|
||||
"%s: Failed to acquire top-level lock\n",
|
||||
__FUNCTION__));
|
||||
|
||||
return lock_status;
|
||||
}
|
||||
|
||||
// Top-level lock is now acquired
|
||||
|
||||
// Loop through device list
|
||||
FOR_EACH_DEVICE_REGISTERED(dev, nvlinkLibCtx.nv_devicelist_head, node)
|
||||
{
|
||||
if (dev->type == deviceType)
|
||||
{
|
||||
device_count++;
|
||||
}
|
||||
}
|
||||
|
||||
// Release top-level lock
|
||||
nvlink_lib_top_lock_release();
|
||||
}
|
||||
*numDevices = device_count;
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
@ -26,14 +26,18 @@
|
||||
#include "nvlink_lock.h"
|
||||
|
||||
//
|
||||
// Only enabling locking for testing purposes at the moment.
|
||||
// Disabled at all other times.
|
||||
//
|
||||
#define LOCKING_DISABLED 1
|
||||
// Only enabling top level locking for linux as required by Bug 4108674.
|
||||
// Per link locking is still disabled at all times. It will be enabled
|
||||
// after other locking related clean up is done.
|
||||
//
|
||||
|
||||
static void _sort_links(nvlink_link **, NvU32, NvBool (*)(void *, void *));
|
||||
static NvBool _compare(void *, void *);
|
||||
|
||||
#if defined(NV_LINUX)
|
||||
#undef TOP_LEVEL_LOCKING_DISABLED
|
||||
# define TOP_LEVEL_LOCKING_DISABLED 0
|
||||
#endif /* defined(NV_LINUX) */
|
||||
/*
|
||||
* Allocate top level lock. Return NVL_SUCCESS if
|
||||
* the lock was allocated else return NVL_ERR_GENERIC.
|
||||
@ -41,7 +45,7 @@ static NvBool _compare(void *, void *);
|
||||
NvlStatus
|
||||
nvlink_lib_top_lock_alloc(void)
|
||||
{
|
||||
if (LOCKING_DISABLED)
|
||||
if (TOP_LEVEL_LOCKING_DISABLED)
|
||||
{
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
@ -82,7 +86,7 @@ nvlink_lib_top_lock_alloc(void)
|
||||
NvlStatus
|
||||
nvlink_lib_top_lock_free(void)
|
||||
{
|
||||
if (LOCKING_DISABLED)
|
||||
if (TOP_LEVEL_LOCKING_DISABLED)
|
||||
{
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
@ -115,7 +119,7 @@ nvlink_lib_link_lock_alloc
|
||||
nvlink_link *link
|
||||
)
|
||||
{
|
||||
if (LOCKING_DISABLED)
|
||||
if (PER_LINK_LOCKING_DISABLED)
|
||||
{
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
@ -158,7 +162,7 @@ nvlink_lib_link_lock_free
|
||||
nvlink_link *link
|
||||
)
|
||||
{
|
||||
if (LOCKING_DISABLED)
|
||||
if (PER_LINK_LOCKING_DISABLED)
|
||||
{
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
@ -188,7 +192,7 @@ nvlink_lib_link_lock_free
|
||||
NvlStatus
|
||||
nvlink_lib_top_lock_acquire(void)
|
||||
{
|
||||
if (LOCKING_DISABLED)
|
||||
if (TOP_LEVEL_LOCKING_DISABLED)
|
||||
{
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
@ -223,7 +227,7 @@ nvlink_lib_top_lock_acquire(void)
|
||||
NvlStatus
|
||||
nvlink_lib_top_lock_release(void)
|
||||
{
|
||||
if (LOCKING_DISABLED)
|
||||
if (TOP_LEVEL_LOCKING_DISABLED)
|
||||
{
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
@ -265,13 +269,12 @@ nvlink_lib_link_locks_acquire
|
||||
int numLinks
|
||||
)
|
||||
{
|
||||
if (LOCKING_DISABLED)
|
||||
if (PER_LINK_LOCKING_DISABLED)
|
||||
{
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
int i;
|
||||
|
||||
nvlink_link *link_prev = NULL;
|
||||
|
||||
// Check if array of links is already empty before attempting to release.
|
||||
@ -328,13 +331,12 @@ nvlink_lib_link_locks_release
|
||||
int numLinks
|
||||
)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (LOCKING_DISABLED)
|
||||
if (PER_LINK_LOCKING_DISABLED)
|
||||
{
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
int i;
|
||||
nvlink_link *link_prev = NULL;
|
||||
|
||||
// Check if array of links is already empty before attempting to release.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -40,48 +40,62 @@ enum
|
||||
/*!
|
||||
* Read the BIOS Size
|
||||
*/
|
||||
RM_SOE_CORE_CMD_READ_BIOS_SIZE,
|
||||
RM_SOE_CORE_CMD_READ_BIOS_SIZE = 0x0,
|
||||
|
||||
/*!
|
||||
* Read the BIOS
|
||||
*/
|
||||
RM_SOE_CORE_CMD_READ_BIOS,
|
||||
RM_SOE_CORE_CMD_READ_BIOS = 0x1,
|
||||
|
||||
/*!
|
||||
* Run DMA self-test
|
||||
*/
|
||||
RM_SOE_CORE_CMD_DMA_SELFTEST,
|
||||
RM_SOE_CORE_CMD_DMA_SELFTEST = 0x2,
|
||||
|
||||
/*!
|
||||
* Perform I2C transaction
|
||||
*/
|
||||
RM_SOE_CORE_CMD_I2C_ACCESS,
|
||||
RM_SOE_CORE_CMD_I2C_ACCESS = 0x3,
|
||||
|
||||
/*!
|
||||
* Issue NPORT Reset
|
||||
*/
|
||||
RM_SOE_CORE_CMD_ISSUE_NPORT_RESET,
|
||||
RM_SOE_CORE_CMD_ISSUE_NPORT_RESET = 0x4,
|
||||
|
||||
/*!
|
||||
* Restore NPORT state
|
||||
*/
|
||||
RM_SOE_CORE_CMD_RESTORE_NPORT_STATE,
|
||||
RM_SOE_CORE_CMD_RESTORE_NPORT_STATE = 0x5,
|
||||
|
||||
/*!
|
||||
* Set NPORT TPROD state
|
||||
*/
|
||||
RM_SOE_CORE_CMD_SET_NPORT_TPROD_STATE,
|
||||
RM_SOE_CORE_CMD_SET_NPORT_TPROD_STATE = 0x6,
|
||||
|
||||
/*!
|
||||
* Read VRs
|
||||
* Needed to be in sync with chips_a defines
|
||||
*/
|
||||
RM_SOE_CORE_CMD_GET_VOLTAGE_VALUES,
|
||||
RM_SOE_CORE_CMD_GET_VOLTAGE_VALUES = 0x7,
|
||||
|
||||
/*!
|
||||
* Init PLM2 protected registers
|
||||
*/
|
||||
RM_SOE_CORE_CMD_INIT_L2_STATE
|
||||
RM_SOE_CORE_CMD_INIT_L2_STATE = 0x8,
|
||||
|
||||
/*!
|
||||
* Read Power
|
||||
*/
|
||||
RM_SOE_CORE_CMD_GET_POWER_VALUES = 0x9,
|
||||
|
||||
/*!
|
||||
* Set NPORT interrupts
|
||||
*/
|
||||
RM_SOE_CORE_CMD_SET_NPORT_INTRS = 0xA,
|
||||
|
||||
/*!
|
||||
* Disable NPORT fatal interrupt
|
||||
*/
|
||||
RM_SOE_CORE_CMD_DISABLE_NPORT_FATAL_INTR = 0xF,
|
||||
};
|
||||
|
||||
// Timeout for SOE reset callback function
|
||||
@ -153,6 +167,41 @@ typedef struct
|
||||
NvU8 cmdType;
|
||||
} RM_SOE_CORE_CMD_L2_STATE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU8 cmdType;
|
||||
} RM_SOE_CORE_CMD_GET_POWER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU8 cmdType;
|
||||
NvU32 nport;
|
||||
NvBool bEnable;
|
||||
} RM_SOE_CORE_CMD_NPORT_INTRS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU8 cmdType;
|
||||
NvU32 nport;
|
||||
NvU32 nportIntrEnable;
|
||||
NvU8 nportIntrType;
|
||||
} RM_SOE_CORE_CMD_NPORT_FATAL_INTR;
|
||||
|
||||
/*!
|
||||
* NPORT Interrupt Types
|
||||
*/
|
||||
enum
|
||||
{
|
||||
RM_SOE_CORE_NPORT_ROUTE_INTERRUPT,
|
||||
RM_SOE_CORE_NPORT_INGRESS_INTERRUPT,
|
||||
RM_SOE_CORE_NPORT_EGRESS_0_INTERRUPT,
|
||||
RM_SOE_CORE_NPORT_EGRESS_1_INTERRUPT,
|
||||
RM_SOE_CORE_NPORT_TSTATE_INTERRUPT,
|
||||
RM_SOE_CORE_NPORT_SOURCETRACK_INTERRUPT,
|
||||
RM_SOE_CORE_NPORT_MULTICAST_INTERRUPT,
|
||||
RM_SOE_CORE_NPORT_REDUCTION_INTERRUPT
|
||||
};
|
||||
|
||||
typedef union
|
||||
{
|
||||
NvU8 cmdType;
|
||||
@ -164,9 +213,11 @@ typedef union
|
||||
RM_SOE_CORE_CMD_NPORT_TPROD_STATE nportTprodState;
|
||||
RM_SOE_CORE_CMD_GET_VOLTAGE getVoltage;
|
||||
RM_SOE_CORE_CMD_L2_STATE l2State;
|
||||
RM_SOE_CORE_CMD_GET_POWER getPower;
|
||||
RM_SOE_CORE_CMD_NPORT_INTRS nportIntrs;
|
||||
RM_SOE_CORE_CMD_NPORT_FATAL_INTR nportDisableIntr;
|
||||
} RM_SOE_CORE_CMD;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU8 msgType;
|
||||
@ -176,9 +227,19 @@ typedef struct
|
||||
NvU32 hvdd_mv;
|
||||
} RM_SOE_CORE_MSG_GET_VOLTAGE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU8 msgType;
|
||||
NvU8 flcnStatus;
|
||||
NvU32 vdd_w;
|
||||
NvU32 dvdd_w;
|
||||
NvU32 hvdd_w;
|
||||
} RM_SOE_CORE_MSG_GET_POWER;
|
||||
|
||||
typedef union
|
||||
{
|
||||
NvU8 msgType;
|
||||
RM_SOE_CORE_MSG_GET_VOLTAGE getVoltage;
|
||||
RM_SOE_CORE_MSG_GET_POWER getPower;
|
||||
} RM_SOE_CORE_MSG;
|
||||
#endif // _SOECORE_H_
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -27,6 +27,7 @@
|
||||
#include "flcnifcmn.h"
|
||||
|
||||
#define INFOROM_FS_FILE_NAME_SIZE 3
|
||||
#define INFOROM_BBX_OBJ_XID_ENTRIES 10
|
||||
|
||||
enum
|
||||
{
|
||||
@ -36,6 +37,17 @@ enum
|
||||
RM_SOE_IFR_BBX_SHUTDOWN,
|
||||
RM_SOE_IFR_BBX_SXID_ADD,
|
||||
RM_SOE_IFR_BBX_SXID_GET,
|
||||
RM_SOE_IFR_BBX_DATA_GET,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
RM_SOE_IFR_BBX_GET_NONE,
|
||||
RM_SOE_IFR_BBX_GET_SXID,
|
||||
RM_SOE_IFR_BBX_GET_SYS_INFO,
|
||||
RM_SOE_IFR_BBX_GET_TIME_INFO,
|
||||
RM_SOE_IFR_BBX_GET_TEMP_DATA,
|
||||
RM_SOE_IFR_BBX_GET_TEMP_SAMPLES,
|
||||
};
|
||||
|
||||
typedef struct
|
||||
@ -70,9 +82,18 @@ typedef struct
|
||||
typedef struct
|
||||
{
|
||||
NvU8 cmdType;
|
||||
NvU32 sizeInBytes;
|
||||
RM_FLCN_U64 dmaHandle;
|
||||
} RM_SOE_IFR_CMD_BBX_SXID_GET_PARAMS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU8 cmdType;
|
||||
NvU32 sizeInBytes;
|
||||
RM_FLCN_U64 dmaHandle;
|
||||
NvU8 dataType;
|
||||
} RM_SOE_IFR_CMD_BBX_GET_DATA_PARAMS;
|
||||
|
||||
typedef union
|
||||
{
|
||||
NvU8 cmdType;
|
||||
@ -80,6 +101,99 @@ typedef union
|
||||
RM_SOE_IFR_CMD_BBX_INIT_PARAMS bbxInit;
|
||||
RM_SOE_IFR_CMD_BBX_SXID_ADD_PARAMS bbxSxidAdd;
|
||||
RM_SOE_IFR_CMD_BBX_SXID_GET_PARAMS bbxSxidGet;
|
||||
RM_SOE_IFR_CMD_BBX_GET_DATA_PARAMS bbxDataGet;
|
||||
} RM_SOE_IFR_CMD;
|
||||
|
||||
// entry of getSxid
|
||||
typedef struct
|
||||
{
|
||||
NvU32 sxid;
|
||||
NvU32 timestamp;
|
||||
} RM_SOE_BBX_SXID_ENTRY;
|
||||
|
||||
// SXID data array return to getSxid
|
||||
typedef struct
|
||||
{
|
||||
NvU32 sxidCount;
|
||||
RM_SOE_BBX_SXID_ENTRY sxidFirst[INFOROM_BBX_OBJ_XID_ENTRIES];
|
||||
RM_SOE_BBX_SXID_ENTRY sxidLast[INFOROM_BBX_OBJ_XID_ENTRIES];
|
||||
} RM_SOE_BBX_GET_SXID_DATA;
|
||||
|
||||
// NVSwitch system version information returning with the command GET_SYS_INFO
|
||||
typedef struct
|
||||
{
|
||||
NvU32 driverLo; //Driver Version Low 32 bits
|
||||
NvU16 driverHi; //Driver Version High 16 bits
|
||||
NvU32 vbiosVersion; //VBIOS Version
|
||||
NvU8 vbiosVersionOem; //VBIOS OEM Version byte
|
||||
NvU8 osType; //OS Type (UNIX/WIN/WIN2K/WIN9x/OTHER)
|
||||
NvU32 osVersion; //OS Version (Build|MINOR|MAJOR)
|
||||
} RM_SOE_BBX_GET_SYS_INFO_DATA;
|
||||
|
||||
// NVSwitch time information returning with the command GET_TIME_INFO
|
||||
typedef struct
|
||||
{
|
||||
NvU32 timeStart; //Timestamp (EPOCH) when the driver was loaded on the GPU for the first time
|
||||
NvU32 timeEnd; //Timestamp (EPOCH) when the data was last flushed
|
||||
NvU32 timeRun; //Amount of time (in seconds) driver was loaded, and GPU has run
|
||||
NvU32 time24Hours; //Timestamp (EPOCH) of when the first 24 operational hours is hit
|
||||
NvU32 time100Hours; //Timestamp (EPOCH) of when the first 100 operational hours is hit
|
||||
} RM_SOE_BBX_GET_TIME_INFO_DATA;
|
||||
|
||||
#define RM_SOE_BBX_TEMP_DAY_ENTRIES 5
|
||||
#define RM_SOE_BBX_TEMP_WEEK_ENTRIES 5
|
||||
#define RM_SOE_BBX_TEMP_MNT_ENTRIES 5
|
||||
#define RM_SOE_BBX_TEMP_ALL_ENTRIES 5
|
||||
#define RM_SOE_BBX_TEMP_SUM_HOUR_ENTRIES 23
|
||||
#define RM_SOE_BBX_TEMP_SUM_DAY_ENTRIES 5
|
||||
#define RM_SOE_BBX_TEMP_SUM_MNT_ENTRIES 3
|
||||
#define RM_SOE_BBX_TEMP_HISTOGRAM_THLD_ENTRIES 20
|
||||
#define RM_SOE_BBX_TEMP_HISTOGRAM_TIME_ENTRIES 21
|
||||
#define RM_SOE_BBX_TEMP_HOURLY_MAX_ENTRIES 168
|
||||
#define RM_SOE_BBX_TEMP_COMPRESS_BUFFER_ENTRIES 1096
|
||||
#define RM_SOE_BBX_NUM_COMPRESSION_PERIODS 8
|
||||
|
||||
// NVSwitch Temperature Entry
|
||||
typedef struct
|
||||
{
|
||||
NvU16 value; //Temperature (SFXP 9.7 format in Celsius)
|
||||
NvU32 timestamp; //Timestamp (EPOCH) of when the entry is recorded
|
||||
} RM_SOE_BBX_TEMP_ENTRY;
|
||||
|
||||
// NVSwitch Temperature Data returning with the command GET_TEMP_DATA
|
||||
typedef struct
|
||||
{
|
||||
NvU32 tempMaxDayIdx;
|
||||
RM_SOE_BBX_TEMP_ENTRY tempMaxDay[RM_SOE_BBX_TEMP_DAY_ENTRIES];
|
||||
NvU32 tempMaxWeekIdx;
|
||||
RM_SOE_BBX_TEMP_ENTRY tempMaxWeek[RM_SOE_BBX_TEMP_WEEK_ENTRIES];
|
||||
NvU32 tempMaxMntIdx;
|
||||
RM_SOE_BBX_TEMP_ENTRY tempMaxMnt[RM_SOE_BBX_TEMP_MNT_ENTRIES];
|
||||
NvU32 tempMaxAllIdx;
|
||||
RM_SOE_BBX_TEMP_ENTRY tempMaxAll[RM_SOE_BBX_TEMP_ALL_ENTRIES];
|
||||
NvU32 tempMinDayIdx;
|
||||
RM_SOE_BBX_TEMP_ENTRY tempMinDay[RM_SOE_BBX_TEMP_DAY_ENTRIES];
|
||||
NvU32 tempMinWeekIdx;
|
||||
RM_SOE_BBX_TEMP_ENTRY tempMinWeek[RM_SOE_BBX_TEMP_WEEK_ENTRIES];
|
||||
NvU32 tempMinMntIdx;
|
||||
RM_SOE_BBX_TEMP_ENTRY tempMinMnt[RM_SOE_BBX_TEMP_MNT_ENTRIES];
|
||||
NvU32 tempMinAllIdx;
|
||||
RM_SOE_BBX_TEMP_ENTRY tempMinAll[RM_SOE_BBX_TEMP_ALL_ENTRIES];
|
||||
NvU32 tempSumDelta;
|
||||
NvU32 tempSumHour[RM_SOE_BBX_TEMP_SUM_HOUR_ENTRIES];
|
||||
NvU32 tempSumDay[RM_SOE_BBX_TEMP_SUM_DAY_ENTRIES];
|
||||
NvU32 tempSumMnt[RM_SOE_BBX_TEMP_SUM_MNT_ENTRIES];
|
||||
NvU32 tempHistogramThld[RM_SOE_BBX_TEMP_HISTOGRAM_THLD_ENTRIES];
|
||||
NvU32 tempHistogramTime[RM_SOE_BBX_TEMP_HISTOGRAM_TIME_ENTRIES];
|
||||
RM_SOE_BBX_TEMP_ENTRY tempHourlyMaxSample[RM_SOE_BBX_TEMP_HOURLY_MAX_ENTRIES];
|
||||
} RM_SOE_BBX_GET_TEMP_DATA;
|
||||
|
||||
// NVSwitch Temperature Compressed Samples returning with the command GET_TEMP_SAMPLES
|
||||
typedef struct
|
||||
{
|
||||
NvU32 compressionPeriodIdx;
|
||||
NvU32 compressionPeriod[RM_SOE_BBX_NUM_COMPRESSION_PERIODS];
|
||||
RM_SOE_BBX_TEMP_ENTRY tempCompressionBuffer[RM_SOE_BBX_TEMP_COMPRESS_BUFFER_ENTRIES];
|
||||
} RM_SOE_BBX_GET_TEMP_SAMPLES;
|
||||
|
||||
#endif // _SOEIFIFR_H_
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2018-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2018-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -751,6 +751,19 @@ typedef struct
|
||||
NvU32 hvdd_mv;
|
||||
} NVSWITCH_CTRL_GET_VOLTAGE_PARAMS;
|
||||
|
||||
/*
|
||||
* CTRL_NVSWITCH_GET_POWER
|
||||
*
|
||||
* Zero(0) indicates that a measurement is not available
|
||||
* on the current platform.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
NvU32 vdd_w;
|
||||
NvU32 dvdd_w;
|
||||
NvU32 hvdd_w;
|
||||
} NVSWITCH_GET_POWER_PARAMS;
|
||||
|
||||
/*
|
||||
* CTRL_NVSWITCH_GET_ERRORS
|
||||
*
|
||||
@ -817,6 +830,7 @@ typedef enum nvswitch_err_type
|
||||
NVSWITCH_ERR_HW_HOST_THERMAL_SHUTDOWN = 10006,
|
||||
NVSWITCH_ERR_HW_HOST_IO_FAILURE = 10007,
|
||||
NVSWITCH_ERR_HW_HOST_FIRMWARE_INITIALIZATION_FAILURE = 10008,
|
||||
NVSWITCH_ERR_HW_HOST_FIRMWARE_RECOVERY_MODE = 10009,
|
||||
NVSWITCH_ERR_HW_HOST_LAST,
|
||||
|
||||
|
||||
@ -2954,6 +2968,197 @@ typedef struct
|
||||
NVSWITCH_SXID_ENTRY sxidLast[NVSWITCH_SXID_ENTRIES_NUM];
|
||||
} NVSWITCH_GET_SXIDS_PARAMS;
|
||||
|
||||
/*
|
||||
* CTRL_NVSWITCH_GET_SYS_INFO
|
||||
*
|
||||
* Control to get the NVSwitch system version information from inforom cache
|
||||
*
|
||||
* Parameters:
|
||||
* driverLo [OUT]
|
||||
* The driver version low 32 bits. Example: driverLo = 54531 (Driver 545.31)
|
||||
* driverHi [OUT]
|
||||
* The driver version high 16 bits
|
||||
* vbiosVersion [OUT]
|
||||
* The vbios version number. Example: vbiosVersion=0x96104100 (release 96.10.41.00)
|
||||
* vbiosVersionOem [OUT]
|
||||
* The vbios OEM version byte.
|
||||
* osType [OUT]
|
||||
* The OS type. Example: osType=0x05 (UNIX)
|
||||
* osVersion [OUT]
|
||||
* The OS version number. [BUILD[31:16]|MINOR[15:8]|MAJOR[7:0]]
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU32 driverLo;
|
||||
NvU16 driverHi;
|
||||
NvU32 vbiosVersion;
|
||||
NvU8 vbiosVersionOem;
|
||||
NvU8 osType;
|
||||
NvU32 osVersion;
|
||||
} NVSWITCH_GET_SYS_INFO_PARAMS;
|
||||
|
||||
/*
|
||||
* CTRL_NVSWITCH_GET_TIME_INFO
|
||||
*
|
||||
* Control to get the NVSwitch time information from inforom cache
|
||||
*
|
||||
* Parameters:
|
||||
* timeStart [OUT]
|
||||
* The timestamp (EPOCH) when driver load onto the NVSwitch for the 1st time
|
||||
* timeEnd [OUT]
|
||||
* The timestamp (EPOCH) when the data was last flushed
|
||||
* timeRun [OUT]
|
||||
* The amount of time (in seconds) driver was loaded/running
|
||||
* time24Hours [OUT]
|
||||
* The timestamp (EPOCH) when the first 24 operational hours is hit
|
||||
* time100Hours [OUT]
|
||||
* The timestamp (EPOCH) when the first 100 operational hours is hit
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU32 timeStart;
|
||||
NvU32 timeEnd;
|
||||
NvU32 timeRun;
|
||||
NvU32 time24Hours;
|
||||
NvU32 time100Hours;
|
||||
} NVSWITCH_GET_TIME_INFO_PARAMS;
|
||||
|
||||
#define NVSWITCH_TEMP_DAY_ENTRIES 5
|
||||
#define NVSWITCH_TEMP_WEEK_ENTRIES 5
|
||||
#define NVSWITCH_TEMP_MNT_ENTRIES 5
|
||||
#define NVSWITCH_TEMP_ALL_ENTRIES 5
|
||||
#define NVSWITCH_TEMP_SUM_HOUR_ENTRIES 23
|
||||
#define NVSWITCH_TEMP_SUM_DAY_ENTRIES 5
|
||||
#define NVSWITCH_TEMP_SUM_MNT_ENTRIES 3
|
||||
#define NVSWITCH_TEMP_HISTOGRAM_THLD_ENTRIES 20
|
||||
#define NVSWITCH_TEMP_HISTOGRAM_TIME_ENTRIES 21
|
||||
#define NVSWITCH_TEMP_HOURLY_MAX_ENTRIES 168
|
||||
|
||||
/*
|
||||
* NVSWITCH_TEMP_ENTRY
|
||||
*
|
||||
* This structure represents the NVSwitch TEMP with its timestamp.
|
||||
*
|
||||
* value
|
||||
* This parameter specifies the NVSwitch Temperature
|
||||
* (SFXP 9.7 format in Celsius).
|
||||
*
|
||||
* timestamp
|
||||
* This parameter specifies the timestamp (EPOCH) of the entry.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
NvU16 value;
|
||||
NvU32 timestamp;
|
||||
} NVSWITCH_TEMP_ENTRY;
|
||||
|
||||
/*
|
||||
* CTRL_NVSWITCH_GET_TEMP_DATA
|
||||
*
|
||||
* Control to get the NVSwitch device historical temperature information from inforom cache
|
||||
*
|
||||
* Parameters:
|
||||
* tempMaxDayIdx [OUT]
|
||||
* The current index to the maximum day temperature array
|
||||
* tempMaxDay[] [OUT]
|
||||
* The maximum temperature array for last NVSWITCH_TEMP_DAY_ENTRIES days
|
||||
* tempMaxWeekIdx [OUT]
|
||||
* The current index to the maximum week temperature array
|
||||
* tempMaxWeek[] [OUT]
|
||||
* The maximum temperature array for last NVSWITCH_TEMP_WEEK_ENTRIES weeks
|
||||
* tempMaxMntIdx [OUT]
|
||||
* The current index to the maximum month temperature array
|
||||
* tempMaxMnt[] [OUT]
|
||||
* The maximum temperature array for last NVSWITCH_TEMP_MNT_ENTRIES months
|
||||
* tempMaxAllIdx [OUT]
|
||||
* The current index to the maximum temperature array
|
||||
* tempMaxAll[] [OUT]
|
||||
* The maximum temperature array for the device
|
||||
* tempMinDayIdx [OUT]
|
||||
* The current index to the minimum day temperature array
|
||||
* tempMinDay[] [OUT]
|
||||
* The minimum temperature array for last NVSWITCH_TEMP_DAY_ENTRIES days
|
||||
* tempMinWeekIdx [OUT]
|
||||
* The current index to the minimum week temperature array
|
||||
* tempMinWeek[] [OUT]
|
||||
* The minimum temperature array for last NVSWITCH_TEMP_WEEK_ENTRIES weeks
|
||||
* tempMinMntIdx [OUT]
|
||||
* The current index to the minimum month temperature array
|
||||
* tempMinMnt[] [OUT]
|
||||
* The minimum temperature array for last NVSWITCH_TEMP_MNT_ENTRIES months
|
||||
* tempMinAllIdx [OUT]
|
||||
* The current index to the minimum temperature array
|
||||
* tempMinAll[] [OUT]
|
||||
* The minimum temperature array for the device
|
||||
* tempSumDelta [OUT]
|
||||
* The total sum of temperature change in 0.1C granularity
|
||||
* tempSumHour[] [OUT]
|
||||
* The moving average of temperature per hour, for last NVSWITCH_TEMP_SUM_HOUR_ENTRIES hours
|
||||
* tempSumDay[] [OUT]
|
||||
* The moving average of temperature per day, for last NVSWITCH_TEMP_SUM_DAY_ENTRIES days
|
||||
* tempSumMnt[] [OUT]
|
||||
* The moving average of temperature per month, for last NVSWITCH_TEMP_SUM_MNT_ENTRIES months
|
||||
* tempHistogramThld[] [OUT]
|
||||
* The histogram of temperature crossing various thresholds (5/10/15/.../95/100)
|
||||
* tempHistogramTime[] [OUT]
|
||||
* The histogram of time was in various temperature ranges (0..5/5..10/.../100..)
|
||||
* tempHourlyMaxSample[] [OUT]
|
||||
* The maximum hourly temperature array for the device
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU32 tempMaxDayIdx;
|
||||
NVSWITCH_TEMP_ENTRY tempMaxDay[NVSWITCH_TEMP_DAY_ENTRIES];
|
||||
NvU32 tempMaxWeekIdx;
|
||||
NVSWITCH_TEMP_ENTRY tempMaxWeek[NVSWITCH_TEMP_WEEK_ENTRIES];
|
||||
NvU32 tempMaxMntIdx;
|
||||
NVSWITCH_TEMP_ENTRY tempMaxMnt[NVSWITCH_TEMP_MNT_ENTRIES];
|
||||
NvU32 tempMaxAllIdx;
|
||||
NVSWITCH_TEMP_ENTRY tempMaxAll[NVSWITCH_TEMP_ALL_ENTRIES];
|
||||
NvU32 tempMinDayIdx;
|
||||
NVSWITCH_TEMP_ENTRY tempMinDay[NVSWITCH_TEMP_DAY_ENTRIES];
|
||||
NvU32 tempMinWeekIdx;
|
||||
NVSWITCH_TEMP_ENTRY tempMinWeek[NVSWITCH_TEMP_WEEK_ENTRIES];
|
||||
NvU32 tempMinMntIdx;
|
||||
NVSWITCH_TEMP_ENTRY tempMinMnt[NVSWITCH_TEMP_MNT_ENTRIES];
|
||||
NvU32 tempMinAllIdx;
|
||||
NVSWITCH_TEMP_ENTRY tempMinAll[NVSWITCH_TEMP_ALL_ENTRIES];
|
||||
NvU32 tempSumDelta;
|
||||
NvU32 tempSumHour[NVSWITCH_TEMP_SUM_HOUR_ENTRIES];
|
||||
NvU32 tempSumDay[NVSWITCH_TEMP_SUM_DAY_ENTRIES];
|
||||
NvU32 tempSumMnt[NVSWITCH_TEMP_SUM_MNT_ENTRIES];
|
||||
NvU32 tempHistogramThld[NVSWITCH_TEMP_HISTOGRAM_THLD_ENTRIES];
|
||||
NvU32 tempHistogramTime[NVSWITCH_TEMP_HISTOGRAM_TIME_ENTRIES];
|
||||
NVSWITCH_TEMP_ENTRY tempHourlyMaxSample[NVSWITCH_TEMP_HOURLY_MAX_ENTRIES];
|
||||
} NVSWITCH_GET_TEMP_DATA_PARAMS;
|
||||
|
||||
#define NVSWITCH_TEMP_COMPRESS_BUFFER_ENTRIES 1096
|
||||
#define NVSWITCH_NUM_COMPRESSION_PERIODS 8
|
||||
|
||||
/*
|
||||
* CTRL_NVSWITCH_GET_TEMP_DATA
|
||||
*
|
||||
* Control to get the NVSwitch device temperature information from inforom cache
|
||||
*
|
||||
* Parameters:
|
||||
* compressionPeriodIdx [OUT]
|
||||
* The current index to the sample period array
|
||||
* compressionPeriod[] [OUT]
|
||||
* The samples period array (seconds)
|
||||
* tempCompressionBuffer[] [OUT]
|
||||
* The temperature array sampling at a specific period in compressionPeriod[]
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU32 compressionPeriodIdx;
|
||||
NvU32 compressionPeriod[NVSWITCH_NUM_COMPRESSION_PERIODS];
|
||||
NVSWITCH_TEMP_ENTRY tempCompressionBuffer[NVSWITCH_TEMP_COMPRESS_BUFFER_ENTRIES];
|
||||
} NVSWITCH_GET_TEMP_SAMPLES_PARAMS;
|
||||
|
||||
/*
|
||||
* CTRL_NVSWITCH_GET_FOM_VALUES
|
||||
* This command gives the FOM values to MODS
|
||||
@ -3534,6 +3739,15 @@ typedef struct
|
||||
|
||||
#define NVSWITCH_CTRL_I2C_MESSAGE_LENGTH_MAX 256
|
||||
|
||||
typedef enum
|
||||
{
|
||||
NVSWITCH_I2C_ACQUIRER_NONE = 0,
|
||||
NVSWITCH_I2C_ACQUIRER_UNKNOWN,
|
||||
NVSWITCH_I2C_ACQUIRER_IOCTL, // e.g. MODS
|
||||
NVSWITCH_I2C_ACQUIRER_EXTERNAL, // e.g. Linux Direct
|
||||
|
||||
} NVSWITCH_I2C_ACQUIRER;
|
||||
|
||||
/*
|
||||
* CTRL_NVSWITCH_I2C_INDEXED
|
||||
*
|
||||
@ -3816,8 +4030,13 @@ typedef struct
|
||||
#define CTRL_NVSWITCH_CLEAR_COUNTERS 0x51
|
||||
#define CTRL_NVSWITCH_SET_NVLINK_ERROR_THRESHOLD 0x52
|
||||
#define CTRL_NVSWITCH_GET_NVLINK_ERROR_THRESHOLD 0x53
|
||||
#define CTRL_NVSWITCH_GET_VOLTAGE 0x55
|
||||
#define CTRL_NVSWITCH_GET_BOARD_PART_NUMBER 0x54
|
||||
#define CTRL_NVSWITCH_GET_VOLTAGE 0x54
|
||||
#define CTRL_NVSWITCH_GET_BOARD_PART_NUMBER 0x55
|
||||
#define CTRL_NVSWITCH_GET_POWER 0x56
|
||||
#define CTRL_NVSWITCH_GET_SYS_INFO 0x57
|
||||
#define CTRL_NVSWITCH_GET_TIME_INFO 0x58
|
||||
#define CTRL_NVSWITCH_GET_TEMP_DATA 0x59
|
||||
#define CTRL_NVSWITCH_GET_TEMP_SAMPLES 0x60
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -569,6 +569,7 @@ NvlStatus nvswitch_reset_and_train_link(nvswitch_device *device, nvlink_link *li
|
||||
NvlStatus nvswitch_set_training_mode(nvswitch_device *device);
|
||||
NvBool nvswitch_is_link_in_reset(nvswitch_device *device, nvlink_link *link);
|
||||
void nvswitch_apply_recal_settings(nvswitch_device *device, nvlink_link *link);
|
||||
void nvswitch_init_buffer_ready(nvswitch_device *device, nvlink_link *link, NvBool bNportBufferReady);
|
||||
|
||||
void nvswitch_init_buffer_ready(nvswitch_device *device, nvlink_link *link, NvBool bNportBufferReady);
|
||||
NvBool nvswitch_does_link_need_termination_enabled(nvswitch_device *device, nvlink_link *link);
|
||||
NvlStatus nvswitch_link_termination_setup(nvswitch_device *device, nvlink_link* link);
|
||||
#endif //_COMMON_NVSWITCH_H_
|
||||
|
@ -52,6 +52,7 @@
|
||||
_op(void, nvswitch_destroy_device_state, (nvswitch_device *device), _arch) \
|
||||
_op(void, nvswitch_determine_platform, (nvswitch_device *device), _arch) \
|
||||
_op(NvU32, nvswitch_get_num_links, (nvswitch_device *device), _arch) \
|
||||
_op(NvU8, nvswitch_get_num_links_per_nvlipt,(nvswitch_device *device), _arch) \
|
||||
_op(NvBool, nvswitch_is_link_valid, (nvswitch_device *device, NvU32 link_id), _arch) \
|
||||
_op(void, nvswitch_set_fatal_error, (nvswitch_device *device, NvBool device_fatal, NvU32 link_id), _arch) \
|
||||
_op(NvU32, nvswitch_get_swap_clk_default, (nvswitch_device *device), _arch) \
|
||||
@ -138,6 +139,9 @@
|
||||
_op(NvlStatus, nvswitch_inforom_nvl_update_link_correctable_error_info, (nvswitch_device *device, void *pNvlGeneric, void *pData, NvU8 linkId, NvU8 nvliptInstance, NvU8 localLinkIdx, void *pErrorCounts, NvBool *bDirty), _arch) \
|
||||
_op(NvlStatus, nvswitch_inforom_nvl_get_max_correctable_error_rate, (nvswitch_device *device, NVSWITCH_GET_NVLINK_MAX_CORRECTABLE_ERROR_RATES_PARAMS *p), _arch) \
|
||||
_op(NvlStatus, nvswitch_inforom_nvl_get_errors, (nvswitch_device *device, NVSWITCH_GET_NVLINK_ERROR_COUNTS_PARAMS *p), _arch) \
|
||||
_op(NvlStatus, nvswitch_inforom_nvl_setL1Threshold, (nvswitch_device *device, void *pNvlGeneric, NvU32 word1, NvU32 word2), _arch) \
|
||||
_op(NvlStatus, nvswitch_inforom_nvl_getL1Threshold, (nvswitch_device *device, void *pNvlGeneric, NvU32 *word1, NvU32 *word2), _arch) \
|
||||
_op(NvlStatus, nvswitch_inforom_nvl_setup_nvlink_state, (nvswitch_device *device, INFOROM_NVLINK_STATE *pNvlinkState, NvU8 version), _arch) \
|
||||
_op(NvlStatus, nvswitch_inforom_ecc_get_errors, (nvswitch_device *device, NVSWITCH_GET_ECC_ERROR_COUNTS_PARAMS *p), _arch) \
|
||||
_op(void, nvswitch_load_uuid, (nvswitch_device *device), _arch) \
|
||||
_op(void, nvswitch_i2c_set_hw_speed_mode, (nvswitch_device *device, NvU32 port, NvU32 speedMode), _arch) \
|
||||
@ -153,6 +157,7 @@
|
||||
_op(NvlStatus, nvswitch_bbx_unload, (nvswitch_device *device), _arch) \
|
||||
_op(NvlStatus, nvswitch_bbx_load, (nvswitch_device *device, NvU64 time_ns, NvU8 osType, NvU32 osVersion), _arch) \
|
||||
_op(NvlStatus, nvswitch_bbx_get_sxid, (nvswitch_device *device, NVSWITCH_GET_SXIDS_PARAMS * params), _arch) \
|
||||
_op(NvlStatus, nvswitch_bbx_get_data, (nvswitch_device *device, NvU8 dataType, void * params), _arch) \
|
||||
_op(NvlStatus, nvswitch_smbpbi_alloc, (nvswitch_device *device), _arch) \
|
||||
_op(NvlStatus, nvswitch_smbpbi_post_init_hal, (nvswitch_device *device), _arch) \
|
||||
_op(void, nvswitch_smbpbi_destroy_hal, (nvswitch_device *device), _arch) \
|
||||
@ -208,6 +213,7 @@
|
||||
_op(void, nvswitch_reset_persistent_link_hw_state, (nvswitch_device *device, NvU32 linkNumber), _arch)\
|
||||
_op(void, nvswitch_store_topology_information, (nvswitch_device *device, nvlink_link *link), _arch) \
|
||||
_op(void, nvswitch_init_lpwr_regs, (nvlink_link *link), _arch) \
|
||||
_op(void, nvswitch_program_l1_scratch_reg, (nvswitch_device *device, NvU32 linkNumber), _arch) \
|
||||
_op(NvlStatus, nvswitch_set_training_mode, (nvswitch_device *device), _arch) \
|
||||
_op(NvU32, nvswitch_get_sublink_width, (nvswitch_device *device, NvU32 linkNumber), _arch) \
|
||||
_op(NvBool, nvswitch_i2c_is_device_access_allowed, (nvswitch_device *device, NvU32 port, NvU8 addr, NvBool bIsRead), _arch) \
|
||||
@ -224,7 +230,11 @@
|
||||
_op(NvlStatus, nvswitch_ctrl_set_nvlink_error_threshold, (nvswitch_device *device, NVSWITCH_SET_NVLINK_ERROR_THRESHOLD_PARAMS *pParams), _arch) \
|
||||
_op(NvlStatus, nvswitch_ctrl_get_nvlink_error_threshold, (nvswitch_device *device, NVSWITCH_GET_NVLINK_ERROR_THRESHOLD_PARAMS *pParams), _arch) \
|
||||
_op(NvlStatus, nvswitch_ctrl_therm_read_voltage, (nvswitch_device *device, NVSWITCH_CTRL_GET_VOLTAGE_PARAMS *info), _arch) \
|
||||
_op(NvlStatus, nvswitch_ctrl_get_board_part_number, (nvswitch_device *device, NVSWITCH_GET_BOARD_PART_NUMBER_VECTOR *p), _arch)
|
||||
_op(NvlStatus, nvswitch_ctrl_therm_read_power, (nvswitch_device *device, NVSWITCH_GET_POWER_PARAMS *info), _arch) \
|
||||
_op(NvlStatus, nvswitch_ctrl_get_board_part_number, (nvswitch_device *device, NVSWITCH_GET_BOARD_PART_NUMBER_VECTOR *p), _arch) \
|
||||
_op(NvBool, nvswitch_does_link_need_termination_enabled, (nvswitch_device *device, nvlink_link *link), _arch) \
|
||||
_op(NvlStatus, nvswitch_link_termination_setup, (nvswitch_device *device, nvlink_link *link), _arch) \
|
||||
_op(NvlStatus, nvswitch_check_io_sanity, (nvswitch_device *device), _arch) \
|
||||
|
||||
#define NVSWITCH_HAL_FUNCTION_LIST_LS10(_op, _arch) \
|
||||
_op(NvlStatus, nvswitch_launch_ALI, (nvswitch_device *device), _arch) \
|
||||
|
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _INFOROM_NVL_V3_NVSWITCH_H_
|
||||
#define _INFOROM_NVL_V3_NVSWITCH_H_
|
||||
|
||||
#include "inforom/inforom_nvswitch.h"
|
||||
|
||||
#define LUT_ELEMENT(block, dir, subtype, type, sev) \
|
||||
{ INFOROM_NVL_ERROR_TYPE ## type, \
|
||||
FLD_SET_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _SEVERITY, sev, 0) | \
|
||||
FLD_SET_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _DIRECTION, dir, 0), \
|
||||
block ## dir ## subtype ## type, \
|
||||
INFOROM_NVL_ERROR_BLOCK_TYPE_ ## block \
|
||||
}
|
||||
|
||||
NvlStatus inforom_nvl_v3_map_error
|
||||
(
|
||||
INFOROM_NVLINK_ERROR_TYPES error,
|
||||
NvU8 *pHeader,
|
||||
NvU16 *pMetadata,
|
||||
NvU8 *pErrorSubtype,
|
||||
INFOROM_NVL_ERROR_BLOCK_TYPE *pBlockType
|
||||
);
|
||||
|
||||
NvlStatus
|
||||
inforom_nvl_v3_encode_nvlipt_error_subtype
|
||||
(
|
||||
NvU8 localLinkIdx,
|
||||
NvU8 *pSubtype
|
||||
);
|
||||
|
||||
NvBool
|
||||
inforom_nvl_v3_should_replace_error_rate_entry
|
||||
(
|
||||
INFOROM_NVL_OBJECT_V3_CORRECTABLE_ERROR_RATE *pErrorRate,
|
||||
NvU32 flitCrcRate,
|
||||
NvU32 *pLaneCrcRates
|
||||
);
|
||||
|
||||
void
|
||||
inforom_nvl_v3_seconds_to_day_and_month
|
||||
(
|
||||
NvU32 sec,
|
||||
NvU32 *pDay,
|
||||
NvU32 *pMonth
|
||||
);
|
||||
|
||||
void
|
||||
inforom_nvl_v3_update_error_rate_entry
|
||||
(
|
||||
INFOROM_NVL_OBJECT_V3_CORRECTABLE_ERROR_RATE *pErrorRate,
|
||||
NvU32 newSec,
|
||||
NvU32 newFlitCrcRate,
|
||||
NvU32 *pNewLaneCrcRates
|
||||
);
|
||||
|
||||
NvlStatus
|
||||
inforom_nvl_v3_map_error_to_userspace_error
|
||||
(
|
||||
nvswitch_device *device,
|
||||
INFOROM_NVL_OBJECT_V3_ERROR_ENTRY *pErrorLog,
|
||||
NVSWITCH_NVLINK_ERROR_ENTRY *pNvlError
|
||||
);
|
||||
|
||||
void
|
||||
inforom_nvl_v3_update_correctable_error_rates
|
||||
(
|
||||
INFOROM_NVL_CORRECTABLE_ERROR_RATE_STATE_V3S *pState,
|
||||
NvU8 link,
|
||||
INFOROM_NVLINK_CORRECTABLE_ERROR_COUNTS *pCounts
|
||||
);
|
||||
|
||||
#endif //_INFOROM_NVL_V3_NVSWITCH_H_
|
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _INFOROM_NVL_V4_NVSWITCH_H_
|
||||
#define _INFOROM_NVL_V4_NVSWITCH_H_
|
||||
|
||||
#include "inforom/inforom_nvswitch.h"
|
||||
|
||||
void
|
||||
inforom_nvl_v4_update_correctable_error_rates
|
||||
(
|
||||
INFOROM_NVL_CORRECTABLE_ERROR_RATE_STATE_V4S *pState,
|
||||
NvU8 link,
|
||||
INFOROM_NVLINK_CORRECTABLE_ERROR_COUNTS *pCounts
|
||||
);
|
||||
|
||||
#endif //_INFOROM_NVL_V4_NVSWITCH_H_
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2020 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -46,6 +46,12 @@
|
||||
(destName)[2] = (srcName)[2]; \
|
||||
}
|
||||
|
||||
#define m_inforom_nvl_get_new_errors_per_minute(value, pSum) \
|
||||
do \
|
||||
{ \
|
||||
*pSum = (*pSum - (*pSum / 60)) + value; \
|
||||
} while (NV_FALSE) \
|
||||
|
||||
//
|
||||
// OS type defines.
|
||||
//
|
||||
@ -99,6 +105,7 @@ struct inforom
|
||||
INFOROM_IMG_OBJECT_V1_00 object;
|
||||
} IMG;
|
||||
|
||||
INFOROM_NVLINK_STATE *pNvlinkState;
|
||||
INFOROM_ECC_STATE *pEccState;
|
||||
INFOROM_OMS_STATE *pOmsState;
|
||||
|
||||
@ -149,6 +156,8 @@ NvlStatus nvswitch_inforom_nvlink_get_max_correctable_error_rate(nvswitch_device
|
||||
NVSWITCH_GET_NVLINK_MAX_CORRECTABLE_ERROR_RATES_PARAMS *params);
|
||||
NvlStatus nvswitch_inforom_nvlink_get_errors(nvswitch_device *device,
|
||||
NVSWITCH_GET_NVLINK_ERROR_COUNTS_PARAMS *params);
|
||||
NvlStatus nvswitch_inforom_nvlink_setL1Threshold(nvswitch_device *device, NvU32 word1, NvU32 word2);
|
||||
NvlStatus nvswitch_inforom_nvlink_getL1Threshold(nvswitch_device *device, NvU32 *word1, NvU32 *word2);
|
||||
|
||||
// InfoROM ECC APIs
|
||||
NvlStatus nvswitch_inforom_ecc_load(nvswitch_device *device);
|
||||
@ -175,6 +184,7 @@ NvlStatus nvswitch_inforom_bbx_add_sxid(nvswitch_device *device,
|
||||
NvU32 data1, NvU32 data2);
|
||||
NvlStatus nvswitch_inforom_bbx_get_sxid(nvswitch_device *device,
|
||||
NVSWITCH_GET_SXIDS_PARAMS *params);
|
||||
NvlStatus nvswitch_inforom_bbx_get_data(nvswitch_device *device, NvU8 dataType, void *params);
|
||||
|
||||
// InfoROM DEM APIs
|
||||
NvlStatus nvswitch_inforom_dem_load(nvswitch_device *device);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2020 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -58,6 +58,29 @@ nvswitch_inforom_nvl_get_errors_lr10
|
||||
NVSWITCH_GET_NVLINK_ERROR_COUNTS_PARAMS *params
|
||||
);
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_setL1Threshold_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
void *pNvlGeneric,
|
||||
NvU32 word1,
|
||||
NvU32 word2
|
||||
);
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_getL1Threshold_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
void *pNvlGeneric,
|
||||
NvU32 *word1,
|
||||
NvU32 *word2
|
||||
);
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_setup_nvlink_state_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
INFOROM_NVLINK_STATE *pNvlinkState,
|
||||
NvU8 version
|
||||
);
|
||||
|
||||
NvlStatus
|
||||
nvswitch_inforom_ecc_log_error_event_lr10
|
||||
(
|
||||
@ -146,4 +169,12 @@ nvswitch_bbx_get_sxid_lr10
|
||||
NVSWITCH_GET_SXIDS_PARAMS * params
|
||||
);
|
||||
|
||||
NvlStatus
|
||||
nvswitch_bbx_get_data_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU8 dataType,
|
||||
void *params
|
||||
);
|
||||
|
||||
#endif //_INFOROM_LR10_H_
|
||||
|
@ -569,8 +569,28 @@ typedef struct
|
||||
|
||||
// Ganged Link table
|
||||
NvU64 *ganged_link_table;
|
||||
|
||||
//
|
||||
// Mask of links on the LR10 device connected to a disabled
|
||||
// remote link
|
||||
//
|
||||
NvU64 disabledRemoteEndLinkMask;
|
||||
|
||||
//
|
||||
// Bool indicating if disabledRemoteEndLinkMask
|
||||
// has been cached previously
|
||||
//
|
||||
NvBool bDisabledRemoteEndLinkMaskCached;
|
||||
} lr10_device;
|
||||
|
||||
#define NVSWITCH_NUM_DEVICES_PER_DELTA_LR10 6
|
||||
|
||||
typedef struct {
|
||||
NvU32 switchPhysicalId;
|
||||
NvU64 accessLinkMask;
|
||||
NvU64 trunkLinkMask;
|
||||
} lr10_links_connected_to_disabled_remote_end;
|
||||
|
||||
#define NVSWITCH_GET_CHIP_DEVICE_LR10(_device) \
|
||||
( \
|
||||
((_device)->chip_id == NV_PSMC_BOOT_42_CHIP_ID_LR10) ? \
|
||||
@ -632,6 +652,7 @@ void nvswitch_setup_link_loopback_mode_lr10(nvswitch_device *device, NvU32
|
||||
void nvswitch_reset_persistent_link_hw_state_lr10(nvswitch_device *device, NvU32 linkNumber);
|
||||
void nvswitch_store_topology_information_lr10(nvswitch_device *device, nvlink_link *link);
|
||||
void nvswitch_init_lpwr_regs_lr10(nvlink_link *link);
|
||||
void nvswitch_program_l1_scratch_reg_lr10(nvswitch_device *device, NvU32 linkNumber);
|
||||
NvlStatus nvswitch_set_training_mode_lr10(nvswitch_device *device);
|
||||
NvBool nvswitch_i2c_is_device_access_allowed_lr10(nvswitch_device *device, NvU32 port, NvU8 addr, NvBool bIsRead);
|
||||
NvU32 nvswitch_get_sublink_width_lr10(nvswitch_device *device,NvU32 linkNumber);
|
||||
@ -660,5 +681,7 @@ NvlStatus nvswitch_launch_ALI_lr10(nvswitch_device *device);
|
||||
NvlStatus nvswitch_reset_and_train_link_lr10(nvswitch_device *device, nvlink_link *link);
|
||||
|
||||
NvlStatus nvswitch_ctrl_get_bios_info_lr10(nvswitch_device *device, NVSWITCH_GET_BIOS_INFO_PARAMS *p);
|
||||
NvBool nvswitch_does_link_need_termination_enabled_lr10(nvswitch_device *device, nvlink_link *link);
|
||||
NvlStatus nvswitch_link_termination_setup_lr10(nvswitch_device *device, nvlink_link* link);
|
||||
|
||||
#endif //_LR10_H_
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -62,4 +62,11 @@ nvswitch_ctrl_therm_read_voltage_lr10
|
||||
NVSWITCH_CTRL_GET_VOLTAGE_PARAMS *info
|
||||
);
|
||||
|
||||
NvlStatus
|
||||
nvswitch_ctrl_therm_read_power_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NVSWITCH_GET_POWER_PARAMS *info
|
||||
);
|
||||
|
||||
#endif //_THERM_LR10_H_
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -44,6 +44,43 @@ NvlStatus nvswitch_inforom_nvl_update_link_correctable_error_info_ls10
|
||||
NvBool *bDirty
|
||||
);
|
||||
|
||||
NvlStatus
|
||||
nvswitch_inforom_nvl_get_max_correctable_error_rate_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NVSWITCH_GET_NVLINK_MAX_CORRECTABLE_ERROR_RATES_PARAMS *params
|
||||
);
|
||||
|
||||
NvlStatus
|
||||
nvswitch_inforom_nvl_get_errors_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NVSWITCH_GET_NVLINK_ERROR_COUNTS_PARAMS *params
|
||||
);
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_setL1Threshold_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
void *pNvlGeneric,
|
||||
NvU32 word1,
|
||||
NvU32 word2
|
||||
);
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_getL1Threshold_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
void *pNvlGeneric,
|
||||
NvU32 *word1,
|
||||
NvU32 *word2
|
||||
);
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_setup_nvlink_state_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
INFOROM_NVLINK_STATE *pNvlinkState,
|
||||
NvU8 version
|
||||
);
|
||||
|
||||
void
|
||||
nvswitch_initialize_oms_state_ls10
|
||||
(
|
||||
@ -117,4 +154,11 @@ nvswitch_bbx_get_sxid_ls10
|
||||
NVSWITCH_GET_SXIDS_PARAMS * params
|
||||
);
|
||||
|
||||
NvlStatus
|
||||
nvswitch_bbx_get_data_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU8 dataType,
|
||||
void *params
|
||||
);
|
||||
#endif //_INFOROM_LS10_H_
|
||||
|
@ -175,6 +175,9 @@
|
||||
|
||||
#define NVSWITCH_NUM_LINKS_PER_NVLIPT_LS10 (NVSWITCH_NUM_LINKS_LS10/NUM_NVLIPT_ENGINE_LS10)
|
||||
|
||||
#define NVSWITCH_NVLIPT_GET_PUBLIC_ID_LS10(_physlinknum) \
|
||||
((_physlinknum)/NVSWITCH_LINKS_PER_NVLIPT_LS10)
|
||||
|
||||
#define NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LS10(_physlinknum) \
|
||||
((_physlinknum)%NVSWITCH_NUM_LINKS_PER_NVLIPT_LS10)
|
||||
|
||||
@ -183,6 +186,9 @@
|
||||
|
||||
#define DMA_ADDR_WIDTH_LS10 64
|
||||
|
||||
#define SOE_VBIOS_VERSION_MASK 0xFF0000
|
||||
#define SOE_VBIOS_REVLOCK_DISABLE_NPORT_FATAL_INTR 0x370000
|
||||
|
||||
//
|
||||
// Helpful IO wrappers
|
||||
//
|
||||
@ -497,10 +503,16 @@ typedef struct
|
||||
NV_NPORT_PORTSTAT_LS10(_block, _reg, _idx, ), _data); \
|
||||
}
|
||||
|
||||
#define NVSWITCH_DEFERRED_LINK_STATE_CHECK_INTERVAL_NS (10 * NVSWITCH_INTERVAL_1SEC_IN_NS)
|
||||
#define NVSWITCH_DEFERRED_FAULT_UP_CHECK_INTERVAL_NS (10 * NVSWITCH_INTERVAL_1MSEC_IN_NS)
|
||||
#define NVSWITCH_DEFERRED_LINK_STATE_CHECK_INTERVAL_NS (12 * NVSWITCH_INTERVAL_1SEC_IN_NS)
|
||||
#define NVSWITCH_DEFERRED_FAULT_UP_CHECK_INTERVAL_NS (12 * NVSWITCH_INTERVAL_1MSEC_IN_NS)
|
||||
|
||||
// Struct used for passing around error masks in error handling functions
|
||||
typedef struct
|
||||
{
|
||||
NvBool bPending;
|
||||
NvU32 regData;
|
||||
} MINION_LINK_INTR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NvU32 dl;
|
||||
@ -510,17 +522,27 @@ typedef struct
|
||||
NvU32 tlcRx1Injected;
|
||||
NvU32 liptLnk;
|
||||
NvU32 liptLnkInjected;
|
||||
MINION_LINK_INTR minionLinkIntr;
|
||||
} NVLINK_LINK_ERROR_INFO_ERR_MASKS, *PNVLINK_LINK_ERROR_INFO_ERR_MASKS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
{
|
||||
NvBool bLinkErrorsCallBackEnabled;
|
||||
NvBool bLinkStateCallBackEnabled;
|
||||
NvU64 lastRetrainTime;
|
||||
NvU64 lastLinkUpTime;
|
||||
} NVLINK_LINK_ERROR_REPORTING_STATE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
NVLINK_LINK_ERROR_INFO_ERR_MASKS fatalIntrMask;
|
||||
NVLINK_LINK_ERROR_INFO_ERR_MASKS nonFatalIntrMask;
|
||||
} NVLINK_LINK_ERROR_REPORTING_DATA;
|
||||
|
||||
NvBool bResetAndDrainRetry;
|
||||
typedef struct
|
||||
{
|
||||
NVLINK_LINK_ERROR_REPORTING_STATE state;
|
||||
NVLINK_LINK_ERROR_REPORTING_DATA data;
|
||||
} NVLINK_LINK_ERROR_REPORTING;
|
||||
|
||||
typedef struct
|
||||
@ -792,7 +814,6 @@ typedef const struct
|
||||
#define nvswitch_ctrl_get_info_ls10 nvswitch_ctrl_get_info_lr10
|
||||
|
||||
#define nvswitch_ctrl_set_switch_port_config_ls10 nvswitch_ctrl_set_switch_port_config_lr10
|
||||
#define nvswitch_ctrl_get_fom_values_ls10 nvswitch_ctrl_get_fom_values_lr10
|
||||
#define nvswitch_ctrl_get_throughput_counters_ls10 nvswitch_ctrl_get_throughput_counters_lr10
|
||||
|
||||
#define nvswitch_save_nvlink_seed_data_from_minion_to_inforom_ls10 nvswitch_save_nvlink_seed_data_from_minion_to_inforom_lr10
|
||||
@ -809,10 +830,6 @@ typedef const struct
|
||||
#define nvswitch_corelib_write_discovery_token_ls10 nvswitch_corelib_write_discovery_token_lr10
|
||||
#define nvswitch_corelib_read_discovery_token_ls10 nvswitch_corelib_read_discovery_token_lr10
|
||||
|
||||
#define nvswitch_inforom_nvl_get_minion_data_ls10 nvswitch_inforom_nvl_get_minion_data_lr10
|
||||
#define nvswitch_inforom_nvl_set_minion_data_ls10 nvswitch_inforom_nvl_set_minion_data_lr10
|
||||
#define nvswitch_inforom_nvl_get_max_correctable_error_rate_ls10 nvswitch_inforom_nvl_get_max_correctable_error_rate_lr10
|
||||
#define nvswitch_inforom_nvl_get_errors_ls10 nvswitch_inforom_nvl_get_errors_lr10
|
||||
#define nvswitch_inforom_ecc_log_error_event_ls10 nvswitch_inforom_ecc_log_error_event_lr10
|
||||
#define nvswitch_inforom_ecc_get_errors_ls10 nvswitch_inforom_ecc_get_errors_lr10
|
||||
#define nvswitch_inforom_bbx_get_sxid_ls10 nvswitch_inforom_bbx_get_sxid_lr10
|
||||
@ -827,7 +844,6 @@ typedef const struct
|
||||
#define nvswitch_setup_link_loopback_mode_ls10 nvswitch_setup_link_loopback_mode_lr10
|
||||
|
||||
#define nvswitch_link_lane_reversed_ls10 nvswitch_link_lane_reversed_lr10
|
||||
#define nvswitch_request_tl_link_state_ls10 nvswitch_request_tl_link_state_lr10
|
||||
|
||||
#define nvswitch_i2c_get_port_info_ls10 nvswitch_i2c_get_port_info_lr10
|
||||
#define nvswitch_i2c_set_hw_speed_mode_ls10 nvswitch_i2c_set_hw_speed_mode_lr10
|
||||
@ -868,7 +884,6 @@ NvlStatus nvswitch_ctrl_get_nvlink_status_ls10(nvswitch_device *device, NVSWITCH
|
||||
NvlStatus nvswitch_ctrl_get_info_lr10(nvswitch_device *device, NVSWITCH_GET_INFO *p);
|
||||
|
||||
NvlStatus nvswitch_ctrl_set_switch_port_config_lr10(nvswitch_device *device, NVSWITCH_SET_SWITCH_PORT_CONFIG *p);
|
||||
NvlStatus nvswitch_ctrl_get_fom_values_lr10(nvswitch_device *device, NVSWITCH_GET_FOM_VALUES_PARAMS *p);
|
||||
NvlStatus nvswitch_ctrl_get_throughput_counters_lr10(nvswitch_device *device, NVSWITCH_GET_THROUGHPUT_COUNTERS_PARAMS *p);
|
||||
void nvswitch_save_nvlink_seed_data_from_minion_to_inforom_lr10(nvswitch_device *device, NvU32 linkId);
|
||||
void nvswitch_store_seed_data_from_inforom_to_corelib_lr10(nvswitch_device *device);
|
||||
@ -889,10 +904,6 @@ NvlStatus nvswitch_corelib_set_tx_mode_lr10(nvlink_link *link, NvU64 mode, NvU32
|
||||
NvlStatus nvswitch_corelib_get_tl_link_mode_lr10(nvlink_link *link, NvU64 *mode);
|
||||
void nvswitch_init_buffer_ready_lr10(nvswitch_device *device, nvlink_link *link, NvBool bNportBufferReady);
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_get_minion_data_lr10(nvswitch_device *device, void *pNvlGeneric, NvU8 linkId, NvU32 *seedData);
|
||||
NvlStatus nvswitch_inforom_nvl_set_minion_data_lr10(nvswitch_device *device, void *pNvlGeneric, NvU8 linkId, NvU32 *seedData, NvU32 size, NvBool *bDirty);
|
||||
NvlStatus nvswitch_inforom_nvl_get_max_correctable_error_rate_lr10(nvswitch_device *device, NVSWITCH_GET_NVLINK_MAX_CORRECTABLE_ERROR_RATES_PARAMS *params);
|
||||
NvlStatus nvswitch_inforom_nvl_get_errors_lr10(nvswitch_device *device, NVSWITCH_GET_NVLINK_ERROR_COUNTS_PARAMS *params);
|
||||
NvlStatus nvswitch_inforom_ecc_log_error_event_lr10(nvswitch_device *device, INFOROM_ECC_OBJECT *pEccGeneric, INFOROM_NVS_ECC_ERROR_EVENT *err_event);
|
||||
NvlStatus nvswitch_inforom_ecc_get_errors_lr10(nvswitch_device *device, NVSWITCH_GET_ECC_ERROR_COUNTS_PARAMS *params);
|
||||
NvlStatus nvswitch_inforom_bbx_get_sxid_lr10(nvswitch_device *device, NVSWITCH_GET_SXIDS_PARAMS *params);
|
||||
@ -927,6 +938,7 @@ void nvswitch_corelib_clear_link_state_lr10(nvlink_link *link);
|
||||
NvlStatus nvswitch_corelib_set_dl_link_mode_ls10(nvlink_link *link, NvU64 mode, NvU32 flags);
|
||||
NvlStatus nvswitch_corelib_set_tx_mode_ls10(nvlink_link *link, NvU64 mode, NvU32 flags);
|
||||
void nvswitch_init_lpwr_regs_ls10(nvlink_link *link);
|
||||
void nvswitch_program_l1_scratch_reg_ls10(nvswitch_device *device, NvU32 linkNumber);
|
||||
|
||||
NvlStatus nvswitch_minion_service_falcon_interrupts_ls10(nvswitch_device *device, NvU32 instance);
|
||||
|
||||
@ -978,11 +990,13 @@ void nvswitch_link_disable_interrupts_ls10(nvswitch_device *device, NvU32 l
|
||||
void nvswitch_execute_unilateral_link_shutdown_ls10(nvlink_link *link);
|
||||
|
||||
void nvswitch_init_dlpl_interrupts_ls10(nvlink_link *link);
|
||||
void nvswitch_set_dlpl_interrupts_ls10(nvlink_link *link);
|
||||
NvlStatus nvswitch_reset_and_drain_links_ls10(nvswitch_device *device, NvU64 link_mask);
|
||||
|
||||
void nvswitch_service_minion_all_links_ls10(nvswitch_device *device);
|
||||
NvlStatus nvswitch_ctrl_get_board_part_number_ls10(nvswitch_device *device, NVSWITCH_GET_BOARD_PART_NUMBER_VECTOR *p);
|
||||
void nvswitch_create_deferred_link_state_check_task_ls10(nvswitch_device *device, NvU32 nvlipt_instance, NvU32 link);
|
||||
NvlStatus nvswitch_request_tl_link_state_ls10(nvlink_link *link, NvU32 tlLinkState, NvBool bSync);
|
||||
|
||||
//
|
||||
// SU generated functions
|
||||
@ -997,9 +1011,6 @@ NvlStatus nvswitch_launch_ALI_ls10(nvswitch_device *device);
|
||||
NvlStatus nvswitch_ctrl_set_mc_rid_table_ls10(nvswitch_device *device, NVSWITCH_SET_MC_RID_TABLE_PARAMS *p);
|
||||
NvlStatus nvswitch_ctrl_get_mc_rid_table_ls10(nvswitch_device *device, NVSWITCH_GET_MC_RID_TABLE_PARAMS *p);
|
||||
|
||||
void nvswitch_init_dlpl_interrupts_ls10(nvlink_link *link);
|
||||
NvlStatus nvswitch_reset_and_drain_links_ls10(nvswitch_device *device, NvU64 link_mask);
|
||||
|
||||
void nvswitch_service_minion_all_links_ls10(nvswitch_device *device);
|
||||
|
||||
NvBool nvswitch_is_inforom_supported_ls10(nvswitch_device *device);
|
||||
@ -1007,6 +1018,8 @@ void nvswitch_set_error_rate_threshold_ls10(nvlink_link *link, NvBool bIsDe
|
||||
void nvswitch_configure_error_rate_threshold_interrupt_ls10(nvlink_link *link, NvBool bEnable);
|
||||
NvlStatus nvswitch_reset_and_train_link_ls10(nvswitch_device *device, nvlink_link *link);
|
||||
NvBool nvswitch_are_link_clocks_on_ls10(nvswitch_device *device, nvlink_link *link, NvU32 clocksMask);
|
||||
NvBool nvswitch_does_link_need_termination_enabled_ls10(nvswitch_device *device, nvlink_link *link);
|
||||
NvlStatus nvswitch_link_termination_setup_ls10(nvswitch_device *device, nvlink_link* link);
|
||||
|
||||
#endif //_LS10_H_
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2021-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -24,6 +24,21 @@
|
||||
#ifndef _MINION_NVLINK_DEFINES_PUBLIC_H_
|
||||
#define _MINION_NVLINK_DEFINES_PUBLIC_H_
|
||||
|
||||
//PAD REG READ API (Bug 2643883)
|
||||
#define NV_MINION_UCODE_READUPHYPAD_ADDR 11:0
|
||||
#define NV_MINION_UCODE_READUPHYPAD_LANE 15:12
|
||||
|
||||
//FIELD FOR DEBUG_MISC_i DATA REGISTERS
|
||||
#define NV_MINION_DEBUG_MISC_0_LINK_STATE 7:0
|
||||
#define NV_MINION_DEBUG_MISC_0_ISR_ID 15:8
|
||||
#define NV_MINION_DEBUG_MISC_0_OTHER_DATA 31:16
|
||||
|
||||
// Recal values checks
|
||||
#define NV_MINION_UCODE_L1_EXIT_MARGIN 100
|
||||
#define NV_MINION_UCODE_L1_EXIT_MAX 200
|
||||
#define NV_MINION_UCODE_RECOVERY_TIME 250
|
||||
#define NV_MINION_UCODE_PEQ_TIME 96
|
||||
|
||||
// SUBCODES for DLCMD FAULT (uses DLCMDFAULR code) - dlCmdFault() - NVLINK_LINK_INT
|
||||
typedef enum _MINION_STATUS
|
||||
{
|
||||
@ -31,4 +46,9 @@ typedef enum _MINION_STATUS
|
||||
MINION_ALARM_BUSY = 80,
|
||||
} MINION_STATUS;
|
||||
|
||||
#define LINKSTATUS_RESET 0x0
|
||||
#define LINKSTATUS_UNINIT 0x1
|
||||
#define LINKSTATUS_LANESHUTDOWN 0x13
|
||||
#define LINKSTATUS_EMERGENCY_SHUTDOWN 0x29
|
||||
#define LINKSTATUS_ACTIVE_PENDING 0x25
|
||||
#endif // _MINION_NVLINK_DEFINES_PUBLIC_H_
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -45,5 +45,8 @@ NvlStatus nvswitch_soe_register_event_callbacks_ls10(nvswitch_device *device);
|
||||
NvlStatus nvswitch_soe_restore_nport_state_ls10(nvswitch_device *device, NvU32 nport);
|
||||
NvlStatus nvswitch_soe_issue_nport_reset_ls10(nvswitch_device *device, NvU32 nport);
|
||||
void nvswitch_soe_init_l2_state_ls10(nvswitch_device *device);
|
||||
NvlStatus nvswitch_soe_set_nport_interrupts_ls10(nvswitch_device *device, NvU32 nport, NvBool bEnable);
|
||||
void nvswitch_soe_disable_nport_fatal_interrupts_ls10(nvswitch_device *device, NvU32 nport,
|
||||
NvU32 nportIntrEnable, NvU8 nportIntrType);
|
||||
|
||||
#endif //_SOE_LS10_H_
|
||||
|
@ -56,4 +56,11 @@ nvswitch_ctrl_therm_read_voltage_ls10
|
||||
nvswitch_device *device,
|
||||
NVSWITCH_CTRL_GET_VOLTAGE_PARAMS *info
|
||||
);
|
||||
|
||||
NvlStatus
|
||||
nvswitch_ctrl_therm_read_power_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NVSWITCH_GET_POWER_PARAMS *info
|
||||
);
|
||||
#endif //_THERM_LS10_H_
|
||||
|
@ -164,16 +164,6 @@ typedef struct
|
||||
NvBool bBlockProtocol;
|
||||
} NVSWITCH_I2C_HW_CMD, *PNVSWITCH_I2C_HW_CMD;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
NVSWITCH_I2C_ACQUIRER_NONE = 0,
|
||||
NVSWITCH_I2C_ACQUIRER_UNKNOWN,
|
||||
NVSWITCH_I2C_ACQUIRER_IOCTL, // e.g. MODS
|
||||
NVSWITCH_I2C_ACQUIRER_EXTERNAL, // e.g. Linux Direct
|
||||
|
||||
} NVSWITCH_I2C_ACQUIRER;
|
||||
|
||||
typedef enum {
|
||||
i2cProfile_Standard,
|
||||
i2cProfile_Fast,
|
||||
|
@ -443,19 +443,19 @@ const NvU32 soe_ucode_data_lr10_dbg[] = {
|
||||
0x0032b13e, 0xb53e3505, 0x02050032, 0x0032b53e, 0x003a317e, 0xf42885fb, 0xdcdff430, 0xf9000005,
|
||||
0xfeffbf22, 0x99900149, 0x0142fe14, 0x94bd9fa0, 0xa00c2290, 0x3da37e29, 0x00a03300, 0xda040b56,
|
||||
0x00002944, 0x2db2bcb2, 0x0042d77e, 0xa433a032, 0x41fe4300, 0x10119001, 0x8e7e1ab2, 0xa0320033,
|
||||
0x3100a433, 0x2bbf1cbf, 0x24d1a4bd, 0x7e000014, 0xa000b06c, 0x00a0b31a, 0x7eb43d1a, 0xb300b104,
|
||||
0xbf1200a0, 0x7eff001a, 0x3e00b63b, 0x00003371, 0x0149feff, 0xbf149990, 0x05dcd99f, 0x99bf0000,
|
||||
0x3100a433, 0x2bbf1cbf, 0x24d1a4bd, 0x7e000014, 0xa000b06d, 0x00a0b31a, 0x7eb43d1a, 0xb300b105,
|
||||
0xbf1200a0, 0x7eff001a, 0x3e00b63f, 0x00003371, 0x0149feff, 0xbf149990, 0x05dcd99f, 0x99bf0000,
|
||||
0xf9a60a32, 0x7e070bf4, 0xfb003a31, 0x0e090c25, 0xa43da9a0, 0x30f400f8, 0x05dcdfd8, 0x62f90000,
|
||||
0x30f4ffbf, 0x0149fef4, 0xa04c9990, 0xb2a93f9f, 0x01a398a6, 0x0d019033, 0x60489d33, 0x35a33e03,
|
||||
0x04301800, 0x1b010d33, 0x03329801, 0x3d043198, 0x10dc4ba4, 0xd501004c, 0x00000644, 0x0038327e,
|
||||
0xa4b35aa0, 0x02f80c00, 0x1a3e0501, 0x49fe0037, 0x28999001, 0x00299cd4, 0xb51cb200, 0x91b50741,
|
||||
0x352bb201, 0x42b51540, 0xbd92a006, 0x10dc4ed4, 0x0020d07e, 0xad33a132, 0xbf015900, 0x33993f59,
|
||||
0x980d0090, 0x95f00149, 0x0149b508, 0x000644d9, 0x1899bf00, 0x90336999, 0x9cdf1300, 0x98000029,
|
||||
0x95f101f9, 0xf9b54000, 0x299cda01, 0x027e0000, 0x3098009c, 0x01027e02, 0x8aa3d900, 0xacb20000,
|
||||
0x95f101f9, 0xf9b54000, 0x299cda01, 0x037e0000, 0x3098009c, 0x01027e02, 0x8aa3d900, 0xacb20000,
|
||||
0xb20091b0, 0xbdb4bd0d, 0x2e70da04, 0x01b00000, 0x08013001, 0xc87e010e, 0x9cd90013, 0xdf000029,
|
||||
0x1e000000, 0xfe509035, 0x99900149, 0x0142fe34, 0x22909fa0, 0xb2010a38, 0x94ee7e2b, 0x1fa43300,
|
||||
0xc42bbf1b, 0x1bf401b9, 0x01b5f014, 0x2ba0010a, 0x0095097e, 0x061fa033, 0xb4bd09f8, 0x097e020a,
|
||||
0x9cda0095, 0x7e000029, 0xfe009ab1, 0xb4bd014a, 0x010dc4bd, 0x7e34aa90, 0x3e0075b0, 0x33003574,
|
||||
0x1e000000, 0xfe509035, 0x99900149, 0x0142fe34, 0x22909fa0, 0xb2010a38, 0x94ef7e2b, 0x1fa43300,
|
||||
0xc42bbf1b, 0x1bf401b9, 0x01b5f014, 0x2ba0010a, 0x00950a7e, 0x061fa033, 0xb4bd09f8, 0x0a7e020a,
|
||||
0x9cda0095, 0x7e000029, 0xfe009ab2, 0xb4bd014a, 0x010dc4bd, 0x7e34aa90, 0x3e0075b0, 0x33003574,
|
||||
0xd9320204, 0x00000644, 0xa0b39abf, 0xb4d97f00, 0x98000029, 0x9bbf019c, 0x9cd9f43d, 0xbd000029,
|
||||
0x159f35d4, 0x7e10dc4e, 0x320020d0, 0x356f3ea1, 0x030d3300, 0x0e7e0207, 0x39180001, 0x00903308,
|
||||
0x033e9824, 0x002a3cd9, 0x2a44df00, 0x9ea00000, 0xb5043e98, 0x3998019e, 0x98f9a005, 0xfeb5063e,
|
||||
@ -464,7 +464,7 @@ const NvU32 soe_ucode_data_lr10_dbg[] = {
|
||||
0xff90014f, 0x3df92048, 0x02f93594, 0x09033318, 0xb2b4bd04, 0x03f335fa, 0x7e01f935, 0x3e000f71,
|
||||
0xfe00371a, 0x41fe0140, 0x44009001, 0xfe401190, 0x0ab20142, 0xb23c2290, 0x3d2cb21b, 0x75b07ed4,
|
||||
0x02399800, 0x010a0fbf, 0x1bf4f9a6, 0x0524de3c, 0xe93f0000, 0x0e009033, 0x1e0a943d, 0x063ee920,
|
||||
0xffd90036, 0xff200000, 0x94b394f9, 0x0ab2121c, 0x2cb21bb2, 0x0098b87e, 0x0036063e, 0x1bb20ab2,
|
||||
0xffd90036, 0xff200000, 0x94b394f9, 0x0ab2121c, 0x2cb21bb2, 0x0098b97e, 0x0036063e, 0x1bb20ab2,
|
||||
0x3e7e2cb2, 0x4bfe008d, 0x44bb9001, 0xa9c4bebf, 0xffffdf1f, 0x94b6e0ff, 0x04effd18, 0xa0e59eff,
|
||||
0x0000d9be, 0xe9ff4000, 0x6b0bf494, 0x681fa433, 0x900149fe, 0x9dbf4099, 0xbf049992, 0x1ee4339c,
|
||||
0x0003df42, 0xff89ff00, 0xefff3fff, 0x94d9fff4, 0xff0294b6, 0xc0b3e5f9, 0xe9c50b00, 0x36703e03,
|
||||
@ -646,7 +646,7 @@ const NvU32 soe_ucode_data_lr10_dbg[] = {
|
||||
0x01b024a1, 0x08113001, 0x300c1130, 0x050d1c01, 0xda00c04e, 0x000005d0, 0x005d0a7e, 0x001404da,
|
||||
0x0c040b00, 0x59377e08, 0x00ad3300, 0x4d4c00f6, 0x00c3f171, 0x00d8db00, 0xa1300000, 0x00a13028,
|
||||
0x3010a130, 0xa13014a1, 0x20a13018, 0xb024a130, 0x11300101, 0x0c113008, 0x0d1c0130, 0x00804e09,
|
||||
0x0005d4da, 0x5d0a7e00, 0x1428da00, 0x040b0000, 0x377e080c, 0xad330059, 0x4c00a900, 0xc3f1b7c7,
|
||||
0x0005d4da, 0x5d0a7e00, 0x1428da00, 0x040b0000, 0x377e080c, 0xad330059, 0x4c00a900, 0xc3f1b7cb,
|
||||
0xb4db0000, 0x30000000, 0xa13028a1, 0x10a13000, 0x3014a130, 0xa13018a1, 0x24a13020, 0x300c1130,
|
||||
0x01b01c01, 0x08113001, 0xc04e0a0d, 0x05d8da00, 0x0a7e0000, 0x1cda005d, 0x0b000014, 0x7e080c04,
|
||||
0x33005937, 0x7e5c00a4, 0x7e005c97, 0x7e004db4, 0x7e005931, 0x7e000a74, 0x7e003cf7, 0x7e005249,
|
||||
@ -662,7 +662,7 @@ const NvU32 soe_ucode_data_lr10_dbg[] = {
|
||||
0x3d071bf4, 0xc700f8a4, 0x96b024f9, 0x0b9cf002, 0x00f89a32, 0x0089050f, 0x9ff60180, 0xb8060f00,
|
||||
0x00010099, 0xf8009ff6, 0x02008900, 0x0099cf01, 0x1000008f, 0xf4049ffd, 0x34da181b, 0x7e008204,
|
||||
0xf0001a27, 0x1bf401a4, 0x0a02f809, 0x3d00f824, 0xd900f8a4, 0x00001430, 0x34da99bf, 0x98000014,
|
||||
0x95f90e99, 0x1e0a00f8, 0x00b99e7e, 0x0600a033, 0x00f802f8, 0x0100008f, 0xf6590049, 0x00f8009f,
|
||||
0x95f90e99, 0x1e0a00f8, 0x00b9a27e, 0x0600a033, 0x00f802f8, 0x0100008f, 0xf6590049, 0x00f8009f,
|
||||
0x00900089, 0xf00099ce, 0x0bf40194, 0xf1008e20, 0x00e9ce00, 0x9ffdef0f, 0x00e9f704, 0x5200eeb8,
|
||||
0x00e9ce02, 0xf7049ffd, 0x00f800e9, 0x7e0a004a, 0xe7001a27, 0xb30114aa, 0x4f1e06a4, 0xf9cf4f00,
|
||||
0xe899c700, 0x110f94b3, 0xf000f9cf, 0x9cf0ff94, 0xf89a320b, 0xf8a43d00, 0x8902f900, 0xce009000,
|
||||
@ -751,7 +751,7 @@ const NvU32 soe_ucode_data_lr10_dbg[] = {
|
||||
0x00f0b305, 0x0a09584a, 0x90014afe, 0xafb508aa, 0x010f9801, 0xb60093f0, 0xa9b50294, 0x02afb503,
|
||||
0xb2100918, 0x18a9351b, 0xb5020f98, 0x099804af, 0x05a9b503, 0xa0a000bf, 0x005b0b7e, 0xf001a6b0,
|
||||
0x9a120b9c, 0x59ab3e01, 0xfb020a00, 0xe27e1c15, 0x943d0059, 0xf001a6b0, 0xa6f00bac, 0xa29a3c01,
|
||||
0x4c8900f8, 0x9ebf0005, 0xb5019f98, 0x9ea0019f, 0x005a267e, 0x0801a4b3, 0x00f8a43d, 0xff0a09f8,
|
||||
0x4c8900f8, 0x9ebf0005, 0xb5019f98, 0x9ea0019f, 0x005a267e, 0x0801a4b3, 0x00f8a43d, 0xff0a02f8,
|
||||
0x12f900f8, 0x000f8c89, 0xf20a99bf, 0x380090b3, 0x000fa881, 0xf10a10bf, 0x2c0004b3, 0x000a747e,
|
||||
0x19a00109, 0x000f9889, 0x948990a0, 0xff0f0010, 0x90899fa0, 0x90a0000f, 0x000f9489, 0x587e9fa0,
|
||||
0x10a00037, 0x12f911fb, 0x000f8c89, 0xb4bd04bd, 0xb44c90a0, 0x0fac8a00, 0x0b947e00, 0x0cb4bd00,
|
||||
@ -1157,371 +1157,371 @@ const NvU32 soe_ucode_data_lr10_dbg[] = {
|
||||
0x0a3299bf, 0x0bf4f9a6, 0x3a317e07, 0x2875fb00, 0x00299cd9, 0x15991800, 0xbeb2adb2, 0x0a009033,
|
||||
0x008b707e, 0x44d900f8, 0xbf000006, 0xb2cab29b, 0xb0bdbcec, 0x000b7e7e, 0x00f81f0a, 0xdff430f4,
|
||||
0x000005dc, 0xffbf32f9, 0x900149fe, 0xa2b21899, 0xa9bf9fa0, 0xb39899c7, 0x00aa1d99, 0x00299cd9,
|
||||
0x02999800, 0xb34299c7, 0x009a0099, 0x0a0140fe, 0x14009001, 0xee7e0bb2, 0xa4330094, 0x4bfe551f,
|
||||
0x90020a01, 0xee7e10bb, 0xa4330094, 0x09bf451f, 0x04bd0103, 0xbc1493ff, 0x94f09530, 0x121bf401,
|
||||
0x0f0204b3, 0x009a447e, 0x0700a033, 0x900415f0, 0x04b30100, 0x49fee509, 0x14999001, 0x19a699bf,
|
||||
0x0a150bf4, 0x7e1bb201, 0x33009509, 0xf80a1fa0, 0x8d233e09, 0xfe2ebf00, 0x99900149, 0xdf99bf10,
|
||||
0x02999800, 0xb34299c7, 0x009a0099, 0x0a0140fe, 0x14009001, 0xef7e0bb2, 0xa4330094, 0x4bfe551f,
|
||||
0x90020a01, 0xef7e10bb, 0xa4330094, 0x09bf451f, 0x04bd0103, 0xbc1493ff, 0x94f09530, 0x121bf401,
|
||||
0x0f0204b3, 0x009a457e, 0x0700a033, 0x900415f0, 0x04b30100, 0x49fee509, 0x14999001, 0x19a699bf,
|
||||
0x0a150bf4, 0x7e1bb201, 0x3300950a, 0xf80a1fa0, 0x8d233e09, 0xfe2ebf00, 0x99900149, 0xdf99bf10,
|
||||
0xbfffffff, 0xeffd1f0a, 0x0099b904, 0xf09419ff, 0x96f00b9c, 0x1e94b601, 0xa0059efd, 0x8d233e29,
|
||||
0xfe1f0a00, 0x99900149, 0xd99fbf18, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x30f40c35,
|
||||
0x05dcdfe4, 0x52f90000, 0x49feffbf, 0x30999001, 0x9fa0a3b2, 0xc5b2afbf, 0xfdc7b4b2, 0x00ddb31d,
|
||||
0xfa95075c, 0x10f99508, 0xa132f032, 0xf9339232, 0x3000d515, 0x0cf415f6, 0x05f93346, 0xf63005fb,
|
||||
0x1c0cf405, 0x8701f933, 0x301f0a00, 0x08f501f6, 0xf6300739, 0x240cf503, 0x8e283e07, 0x10f93300,
|
||||
0xf630041a, 0x0e0cf410, 0xf50df630, 0x3e070e08, 0x33009155, 0x070611fd, 0x00915f3e, 0x421df933,
|
||||
0x1df63006, 0x33250cf4, 0x03fa18f9, 0xf418f630, 0xfd330c0c, 0x3e06e717, 0x33009408, 0x01001af9,
|
||||
0xd91cfd33, 0x94c53e06, 0x21f93300, 0xf6300262, 0x0c0cf421, 0xc51efd33, 0x8ecd3e06, 0x24f93300,
|
||||
0xfd330639, 0x3e06b725, 0xdf009499, 0x0000299c, 0x2614f918, 0x0d18f4a9, 0xbcffa9c4, 0x6e3e98f9,
|
||||
0xbda00093, 0x0094303e, 0x1d33080a, 0x7e069d00, 0x330063f7, 0x490a0300, 0xa9fdff00, 0x3e4aa004,
|
||||
0x0a009430, 0x04163003, 0x067f0cf5, 0x00299cd9, 0x0e99bf00, 0xbc080a01, 0x99c7f4e1, 0x049ffd98,
|
||||
0x06670bf5, 0x0e021033, 0x10041033, 0x843eea32, 0xeab2008e, 0x008e7a3e, 0x4bfea4bd, 0x2cbb9001,
|
||||
0x0063b47e, 0x008a847e, 0x3f1fad33, 0x0149fe06, 0xbf2c9990, 0x1fe9959e, 0x0a0190b3, 0xa73ed4bd,
|
||||
0x00dd008e, 0xc4ff0000, 0x943380e9, 0xf4bd0a00, 0x008ebe3e, 0xe6b0010f, 0x051ff400, 0xe995ff0f,
|
||||
0x95d9ff08, 0xa090f9bc, 0x94c73e49, 0xb29b3200, 0x7e5db24c, 0x3e0077ca, 0x330094c7, 0x305507a0,
|
||||
0x0cf407a6, 0x299cd912, 0xa6300000, 0x2b0df402, 0x008f243e, 0xf40ca630, 0x9cd9120c, 0x30000029,
|
||||
0x18f409a6, 0x8f473e57, 0x0da03300, 0x33030a61, 0x05b80e1d, 0x008f7a3e, 0xdf019998, 0x04000000,
|
||||
0x008f603e, 0xdf019998, 0x08000000, 0x008f603e, 0x00299cd9, 0x02999800, 0x0200008f, 0xf5049ffd,
|
||||
0x3e00c61b, 0x98009045, 0x008f0299, 0x9ffd0400, 0xc41bf504, 0x90453e00, 0x02999800, 0x0100008f,
|
||||
0xf4049ffd, 0x453e2f1b, 0x9cd90090, 0x8f000029, 0x98400000, 0x873e0299, 0x9cd9008f, 0x98000029,
|
||||
0x00df0299, 0xfd008000, 0x1bf5049f, 0x453e00a9, 0x10330090, 0x16307307, 0x1a0cf407, 0x4b021033,
|
||||
0xf4021630, 0x1033540c, 0x1d332700, 0x3e048601, 0x30008fd7, 0x0cf40c16, 0x0916300d, 0x3e6518f4,
|
||||
0x30009015, 0x0df40e16, 0x94303e6d, 0x7e4ab200, 0x3e00789f, 0x320094c7, 0xb22b321a, 0x7e5db24c,
|
||||
0x3e007cca, 0x320094c7, 0xb22b321a, 0x7e5db24c, 0x3e007c3b, 0x320094c7, 0xb22b321a, 0x7e467e4c,
|
||||
0x94c73e00, 0xb22b3200, 0x0a5db24c, 0x7ba27e07, 0x94c73e00, 0x32080a00, 0xb24cb22b, 0x7b037e5d,
|
||||
0x321a3200, 0xb23cb22b, 0x7e5eb24d, 0x3e007ed3, 0x320094c7, 0xb22b321a, 0xb24db23c, 0x78a77e5e,
|
||||
0x94c73e00, 0x3e080a00, 0x0a0094c7, 0x009d3304, 0x9cd9047a, 0x98000029, 0x080a0299, 0x400094f1,
|
||||
0x04670bf5, 0xfe0149fe, 0x99900142, 0x1822902c, 0x2da09da0, 0xa0049992, 0x0499929d, 0x99929da0,
|
||||
0x929da004, 0x9da00499, 0x85011933, 0x01163000, 0x0a0e08f4, 0x021d3303, 0x213e0432, 0x41fe0091,
|
||||
0x0140fe01, 0x902c1190, 0x1ab22800, 0x607e0bb2, 0x19bf0075, 0x43fe00bf, 0x0142fe01, 0x900794f0,
|
||||
0x22902433, 0xfe3ab220, 0x2bb20141, 0xf01c1190, 0x1cb20704, 0xfd0404b6, 0x5c7e0509, 0x29bf006a,
|
||||
0x1ebf3fbf, 0xb60141fe, 0xf4f00894, 0xff94f1ff, 0x10f4b6ff, 0x9018e4b6, 0x09fd1811, 0xfd1ab205,
|
||||
0x0efd050f, 0x6a497e05, 0x91473e00, 0x7e2ab200, 0xb2006a39, 0x7e20bf2a, 0xbf006a29, 0x914d3e29,
|
||||
0x0141fe00, 0xb2181190, 0x6a167e1a, 0xbf1ab200, 0x6a037e10, 0xb219bf00, 0xff04f11a, 0x1094b6ff,
|
||||
0x7e0590ff, 0xbf0069f0, 0xff94f119, 0xa040a0ff, 0x94303e59, 0x7efab200, 0x3e0095f3, 0x330094c7,
|
||||
0x330d00a0, 0x035c01ad, 0x0091ad3e, 0x9033b0bf, 0x94330c01, 0x9d3e2f02, 0x41fe0091, 0x90010a01,
|
||||
0x1bb21811, 0x0094ee7e, 0x3f1fad33, 0x091fbf03, 0x9509fffe, 0xa0049fff, 0x91a13e10, 0xff04f100,
|
||||
0xb22a3201, 0x95097e0b, 0x94c73e00, 0x7e9a3200, 0x3e0094ee, 0xb20094c7, 0x95227efa, 0x94c73e00,
|
||||
0x299cd300, 0x39bf0000, 0x000000df, 0xfd080a20, 0x0bf5049f, 0x030a02f5, 0xef001d33, 0x0140fe02,
|
||||
0x90014cfe, 0xcc902800, 0xfe0bb22c, 0x22900142, 0x7e2ab224, 0x7f007347, 0x03967009, 0x940b9cf0,
|
||||
0x0e7e0791, 0x30180001, 0x01087e58, 0x00003300, 0x3e1fb20a, 0x7f00924c, 0x00a4732a, 0x3e19b20a,
|
||||
0xc500924a, 0xa0734019, 0xa0731403, 0xa4731804, 0x9fe51c02, 0x4c3e0100, 0x9fe50092, 0x4c3e0200,
|
||||
0x9fe50092, 0x4c3e0300, 0x9fb20092, 0x900149fe, 0x997f2c99, 0x88049973, 0x04967000, 0x731a0cf4,
|
||||
0x70480190, 0x08f40196, 0x02907336, 0x039d734c, 0xce3e00e3, 0x99730092, 0x70009b07, 0x0cf40796,
|
||||
0x05907310, 0x069d7369, 0x033e00cb, 0x99730093, 0x73009c08, 0x00bd099d, 0x0093383e, 0xfe07ff89,
|
||||
0x3e04f9fd, 0x49009350, 0xf9ffc7ff, 0x0095f194, 0x92bf3e20, 0xc7ff4900, 0xf194f9ff, 0x8f180095,
|
||||
0xfdfe3fff, 0x9fe5049f, 0x503e4000, 0xff490093, 0x94f9ffc7, 0x100095f1, 0x0092bf3e, 0xffc7ff49,
|
||||
0x95f194f9, 0xf43e0800, 0xff490092, 0x94f9ffc7, 0x100095f1, 0xfe3fff8f, 0xe5049ffd, 0x3e80009f,
|
||||
0x49009350, 0xf9ffc7ff, 0x0095f194, 0x931b3e08, 0xc7ff4900, 0xf194f9ff, 0x8f100095, 0xfdfe3fff,
|
||||
0x9fe5049f, 0x503ec000, 0xff490093, 0x94f9ffc7, 0x080095f1, 0x0093423e, 0xffc7ff49, 0x95f194f9,
|
||||
0xff8f1000, 0x9ffdfe3f, 0x00008f04, 0xf59fff01, 0x00299cd9, 0x50991800, 0x0f009033, 0x02000089,
|
||||
0x3e95f9ff, 0x8900936e, 0xfffdffff, 0x49a094f9, 0x0094303e, 0xf514a630, 0xc401480c, 0xd0d9ffaf,
|
||||
0xbc000004, 0x9cd9e89f, 0x0a000029, 0x3befc708, 0xc7989fbc, 0x9fbb96ef, 0x0194f005, 0x012b0bf5,
|
||||
0xe7ff29c4, 0x54010def, 0x040a029b, 0x18f5bf66, 0xf3f00119, 0xffb9e400, 0xc2f9bcff, 0xf404c6b0,
|
||||
0x040c090d, 0x0093ca3e, 0xbae44da0, 0xe9c4ffff, 0x42ebe703, 0x00943301, 0xb0babc12, 0x0029bcd9,
|
||||
0x3e4ab200, 0xd90093f3, 0x00000644, 0xbabc99bf, 0xbc4ab2b0, 0x7e7eb09b, 0x303e000b, 0x9b320094,
|
||||
0x009aca7e, 0x0094c73e, 0x0f00a033, 0x1d33080a, 0x3e00b101, 0xfe0094c7, 0x00900140, 0x7e0ab224,
|
||||
0x3f0072fb, 0x00a54f09, 0x06009433, 0x4fa05a0f, 0xc73e1f0a, 0x9cd90094, 0x18000029, 0x99331599,
|
||||
0x33008700, 0x303802a0, 0x0cf402a6, 0x00a0330f, 0x01a43318, 0x946f3e6e, 0x03a03300, 0x04a4332c,
|
||||
0x948f3e62, 0x7e3ab200, 0x3e009d81, 0xb20094c7, 0x7ecbb2ba, 0x3e009ffb, 0x320094c7, 0x9d0a7e2a,
|
||||
0x94c73e00, 0x7e2a3200, 0x3e00a211, 0x320094c7, 0xa1a57e2a, 0x94c73e00, 0x299cd900, 0x99180000,
|
||||
0x00903315, 0x6cfbc724, 0x4db22c32, 0xa4f05eb2, 0x9eab7e0f, 0x94c73e00, 0x3e020a00, 0x0a0094c7,
|
||||
0x94c73e03, 0xfe090a00, 0x99900149, 0xd99fbf30, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31,
|
||||
0xa4f01c55, 0x02a4b6ff, 0x1f0acaa0, 0xaf3200f8, 0xf630040a, 0x120cf402, 0xd9fff4f0, 0x00002a5c,
|
||||
0x0af89fbc, 0xf8bfa01f, 0x0aaf3200, 0x02f63004, 0xf0100cf4, 0x5cd9fff4, 0x0a00002a, 0xf99bbc1f,
|
||||
0x12f900f8, 0xb210af95, 0x08ae95b1, 0x00299cd0, 0x26ff0900, 0x3d1bf4e9, 0x26490918, 0xb21bf5f9,
|
||||
0x4a091800, 0x99331c0a, 0x3000ab01, 0x08f50196, 0x060a00a1, 0x9d029d33, 0x13099800, 0x1f0af43d,
|
||||
0x0918b9a0, 0x4a0f3549, 0x35019910, 0xf13e4909, 0x09180095, 0x330a0a4a, 0xd97a0094, 0x00002a5c,
|
||||
0xf4f099bf, 0xe899c7ff, 0xbc0694b6, 0xf6b0f0f9, 0x5e0cf43f, 0xe433030a, 0xf9905b0c, 0x4096b104,
|
||||
0x4e0cf400, 0xdf02f994, 0x00002a68, 0x7f909fbc, 0x019a589f, 0xf473080d, 0x09981b02, 0xf0290d04,
|
||||
0x90338094, 0x4b7e0f00, 0x01090075, 0x0935d43d, 0x299cdf50, 0xfe180000, 0xffd9c449, 0x0913f9b5,
|
||||
0x4af93502, 0x0affe4f0, 0x3e1ea01c, 0x0a0095f1, 0xf911fb04, 0xb2adb222, 0xe8a0c7b2, 0x06b0bbbf,
|
||||
0xcc0cf53f, 0xffbcc400, 0xb3ffaec4, 0x0a0d0fe4, 0x3fc6b005, 0x00bb0cf5, 0x002a5cd9, 0xc499bf00,
|
||||
0x99c7ff9f, 0x06f194e8, 0xb30694b6, 0xb32c0ee0, 0x0a440fe0, 0x0dedb31f, 0x097c009a, 0xff967190,
|
||||
0x8c0cf500, 0xff9fe400, 0x2a68d9ff, 0x9fbc0000, 0x3e2fa0f8, 0x7c00966d, 0x96719001, 0x0cf400ff,
|
||||
0xff9fe46f, 0x2a68d9ff, 0x9bbc0000, 0x3e1f0af9, 0xbc0096cf, 0x050af0c9, 0x94f0d9c7, 0x999002fb,
|
||||
0x029c9401, 0xb1e0cbbc, 0xf41000e6, 0x01bc440c, 0xb6030a90, 0xc9bc0294, 0x00f6b1f0, 0x320cf410,
|
||||
0x08f49ba6, 0xf49ea608, 0xb9a62008, 0xa6080df4, 0x1608f4bf, 0x002a68df, 0xa09fbc00, 0x7eb0bfbc,
|
||||
0x3e000b7e, 0x0a00966d, 0x96cf3e04, 0xfb030a00, 0xb1c9b221, 0xf40fffa6, 0x9abc2b0c, 0x0096b190,
|
||||
0x210cf410, 0x002a68de, 0x90aebc00, 0x0a00d033, 0xfa3e9ab2, 0xbab20096, 0x7e7e9bb2, 0x1f0a000b,
|
||||
0x040a00f8, 0x30f400f8, 0x05dcdfe4, 0x12f90000, 0x49feffbf, 0x20999001, 0x9fa0a0b2, 0xb4f0d1b2,
|
||||
0xb4edb2ff, 0xe0b40aa0, 0x0709c40b, 0x1bf49ba6, 0x2f0fc775, 0x900149fe, 0x9da00899, 0xb5029eb5,
|
||||
0x9fbc019a, 0xfe94bdb8, 0xff90014f, 0xb5f9a014, 0xf1b501fc, 0x2309c702, 0xf9bcbabf, 0x850fc7c8,
|
||||
0x3c8a09c7, 0xf4f0e09f, 0x910dc71f, 0x3c05cfbb, 0xeeb990d9, 0x1fd4f000, 0xb91fe4f0, 0xefbc0099,
|
||||
0x1f94f0e0, 0x9dbcff0f, 0x95f9bc90, 0xbb05febb, 0xfcfd049d, 0x0099b904, 0xfd04fdbb, 0x9ffd049a,
|
||||
0xfeb9a005, 0x99900149, 0xd99fbf20, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x30f41c15,
|
||||
0x05dcd9f4, 0x82f90000, 0xd1b299bf, 0x90014ffe, 0xf9a02cff, 0xff92dd3f, 0x091f0003, 0x01f03517,
|
||||
0x2002f035, 0xb2b6b2f9, 0x33a5b2e3, 0xdb1900d4, 0x00000528, 0x7e7e240c, 0x0909000b, 0x19200a32,
|
||||
0x0098813e, 0xd630030a, 0x780cf409, 0xc40147fe, 0xf8b2ffc4, 0x7790043d, 0x98783e24, 0xff09c400,
|
||||
0x92947bb2, 0xbc040c02, 0xd43da026, 0x0096d17e, 0x6b1fa433, 0xf9c47fbf, 0xf494a607, 0xf9c75e18,
|
||||
0x01991223, 0xf4019630, 0xfec7520c, 0xffe9c42f, 0xc7c8893c, 0xf9c78afd, 0x90d93c85, 0x0cf49c26,
|
||||
0x03e0333b, 0x91f9c738, 0x26909d3c, 0x2c0cf49c, 0x109052bc, 0x9fa00100, 0x0926193f, 0x0aa108f4,
|
||||
0x0149fe1f, 0xbf2c9990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x98b13e23, 0xbf0d0a00, 0xff0fc439,
|
||||
0x000000de, 0x049efdff, 0xa005f9fd, 0x98813e3f, 0x3a317e00, 0x0c85fb00, 0xd9a830f4, 0x000005dc,
|
||||
0x99bf82f9, 0xb2f830f4, 0x014ffea7, 0xa080ff90, 0xb0aabff9, 0xc1b00eb1, 0x68a6c70d, 0x30016912,
|
||||
0x0cf50396, 0xa9c7013b, 0x0a96306c, 0x01310cf5, 0xfe0141fe, 0x11900140, 0x50009057, 0x2010a5b6,
|
||||
0xb2b4bd19, 0x94e27e0c, 0x1fad3300, 0x09bf011d, 0xc40142fe, 0x2290ff6b, 0x04b4b658, 0xb9bc2ab2,
|
||||
0xb26c32b0, 0x7e7eb21d, 0x300097be, 0xad333fa1, 0xfe00f51f, 0x01080141, 0x3d401190, 0x08199024,
|
||||
0x3d0c1e90, 0xb054bd34, 0xe1b00c91, 0x9a0d3e0b, 0x1490b400, 0x100c1bb2, 0x59bcd43d, 0x7e4ab240,
|
||||
0x330096d1, 0x00c31fad, 0x1f9819bf, 0xffffde01, 0x9efde0ff, 0x021fb504, 0x203319a0, 0x043d0a00,
|
||||
0x0099a73e, 0xb40cb0b4, 0x1ab20bc0, 0x008d3e7e, 0xa0321fbf, 0xffffffde, 0x1f09c4e0, 0xb604fefd,
|
||||
0x9ffd1894, 0xb219a005, 0x0c1bb24a, 0x7e010d10, 0x330096d1, 0x33731fa4, 0x020a0020, 0x9a073e01,
|
||||
0x1f043300, 0x3e043d3f, 0xc40099f4, 0x1c98ff09, 0x031d9802, 0xfe0de0b4, 0xff90014f, 0xa8f9bc58,
|
||||
0xb00e90b4, 0x001001e1, 0xb03b3201, 0x7eb20091, 0x0097067e, 0x26579034, 0xd208f409, 0x009a073e,
|
||||
0x843d19bf, 0x101f9295, 0x55900133, 0xf5362610, 0x0aff4208, 0x0080331b, 0x9a233e11, 0x3e030a00,
|
||||
0x34009a26, 0x49fe3fa0, 0x80999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x30f4003a,
|
||||
0x5885fb08, 0xdff430f4, 0x000005dc, 0xffbf12f9, 0x900149fe, 0x41fe1099, 0x909fa001, 0xb84a0c11,
|
||||
0xb2040b00, 0x8c307e1c, 0x1fa43300, 0x0140fe2b, 0x9000b44a, 0x040b0800, 0x307e0cb2, 0xa433008c,
|
||||
0x19bf161f, 0x9fa60fbf, 0xf00b9cf0, 0x9a320196, 0x009a963e, 0x49fea43d, 0x10999001, 0xdcd99fbf,
|
||||
0xbf000005, 0xf4f9a699, 0x317e070b, 0x15fb003a, 0x04a9980c, 0xac90afb2, 0xf0010b59, 0x904a2095,
|
||||
0x04f9b500, 0x008c307e, 0x30f400f8, 0x05dcd990, 0x52f90000, 0x4ffe99bf, 0x84ff9001, 0xf9a0030e,
|
||||
0x0500ad33, 0x299cd901, 0x99180000, 0x00993359, 0xba3200f6, 0xbd014cfe, 0x20cc90b4, 0x0094e27e,
|
||||
0xad33ae32, 0xfe00e31f, 0xb84a0144, 0x1c449000, 0x4cb2040b, 0x008c307e, 0xad33ae32, 0xfe00cb1f,
|
||||
0xb44a0140, 0x18009000, 0x0cb2040b, 0x008c307e, 0xad33ae32, 0xbf00b31f, 0xa64abf09, 0xa60bf5a9,
|
||||
0xbcaa9000, 0x0b0140fe, 0x27009001, 0x307e0cb2, 0xae32008c, 0x911fad33, 0xfe093f00, 0x43b20142,
|
||||
0xf0282290, 0x0045ff94, 0x02915410, 0x009ba93e, 0x1be43abf, 0x5abcffff, 0xf4b9a692, 0x9bb2050d,
|
||||
0xaa90b072, 0x00b3f0bc, 0x307e2cb2, 0x0fe4008c, 0xae32ffff, 0x511fa433, 0x107b39bf, 0x202fbc02,
|
||||
0xf190f9bc, 0xa00fff94, 0x00147339, 0x0149fec7, 0xbf209990, 0x0799909a, 0x4bfe9c3f, 0x90010d01,
|
||||
0xc4f028bb, 0x02c4b6ff, 0x0096d17e, 0xa433ae32, 0x4cb2171f, 0x0b00b84a, 0x8af07e04, 0x3eae3200,
|
||||
0x0e009be5, 0x0149fe09, 0xbf849990, 0x05dcd99f, 0x99bf0000, 0xf9a6ea32, 0x7e070bf4, 0xfb003a31,
|
||||
0xa9987055, 0xf0008f04, 0x059ffd3f, 0xf804a9b5, 0x12aeb200, 0x040a10bf, 0xf926ee09, 0x332e0df4,
|
||||
0x7f0a00c4, 0x9c2c3eea, 0x01ea5800, 0x1800a073, 0xb926ff09, 0xe4140bf4, 0xbbffffa9, 0x94f0059b,
|
||||
0x071bf401, 0x00f8090a, 0x00f81f0a, 0xdff830f4, 0x000005dc, 0xffbf32f9, 0xfe0149fe, 0x99900140,
|
||||
0x0143fe14, 0xa2b29fa0, 0x0090b1b2, 0x12339013, 0x0b10ec4a, 0x7e0cb201, 0x33008b70, 0x3f741fa4,
|
||||
0x01a6300a, 0xb3690cf4, 0xf0210020, 0xa994ffa4, 0xb6240b05, 0x2cb202a4, 0xb8a0a9bc, 0x0010eeaa,
|
||||
0x008b707e, 0x4b1fa433, 0x230010b3, 0x040b0a3f, 0xa4f01cb2, 0x05a994ff, 0xbc02a4b6, 0xaab8a0a9,
|
||||
0x7e0010ee, 0x33008b70, 0x4a281fa4, 0x010b10ec, 0x707e3cb2, 0xa433008b, 0x3f3f191f, 0xf401f630,
|
||||
0x093f0e0c, 0x1bf49f26, 0x9cef3e8a, 0xfe050a00, 0x99900149, 0xd99fbf14, 0x000005dc, 0xf9a699bf,
|
||||
0x7e070bf4, 0xfb003a31, 0x30f40835, 0x05dcdfd8, 0x22f90000, 0x49feffbf, 0x30999001, 0x9fa0a132,
|
||||
0x00299cd9, 0x04999800, 0x080ab2b2, 0x400094f1, 0xfe360bf4, 0xb4bd0140, 0xb20c0090, 0x9c4c7e0a,
|
||||
0x1fa43300, 0x320ab225, 0x7e010c1b, 0x33009c11, 0xc4171fa4, 0x9990ff19, 0x9099bc02, 0x7f9009bc,
|
||||
0x0f92f099, 0x49fe29a0, 0x30999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x25fb003a,
|
||||
0xd830f428, 0x0005dcdf, 0xbf62f900, 0x0149feff, 0xb2409990, 0xd99fa0b2, 0x0000299c, 0xb2049998,
|
||||
0x0bc3b2a6, 0x0094f108, 0xe50bf510, 0xfeb4bd00, 0x11900141, 0x7e1ab21c, 0x32009c4c, 0x1fad33ab,
|
||||
0xff0b00d1, 0x010c1ab2, 0x009c117e, 0xad33ab32, 0x0b00c01f, 0x3d1ab2ff, 0x9c117ec4, 0x33ab3200,
|
||||
0x00af1fad, 0xbd011458, 0xa029a094, 0x04109039, 0x4c72157f, 0x004da47d, 0x01e4bd80, 0x9e313e01,
|
||||
0x01c9c400, 0x7f200bf4, 0xf4fd660f, 0x1ebc0a1d, 0x9e263ea4, 0xf4fd6600, 0x1ebc0d1b, 0x05a9fd94,
|
||||
0x009e263e, 0xee90df72, 0x01c57601, 0x72020090, 0x00c473fd, 0xf06ebfd0, 0xa9c400d3, 0xffffdfff,
|
||||
0x94b6ff00, 0x04effd10, 0xff00008c, 0xfd059efd, 0x9dfd049c, 0xbf69a005, 0xff4ee429, 0xe8afc7ff,
|
||||
0xf110ed94, 0xfdff0094, 0xf9fd059d, 0xe42fa005, 0xb9ffff59, 0xe9ff00ee, 0x150bf4a4, 0x9cfd39bf,
|
||||
0x059afd04, 0x29bf39a0, 0x010095f1, 0x49fe29a0, 0x40999001, 0xdcd99fbf, 0xbf000005, 0xa6ba3299,
|
||||
0x070bf4f9, 0x003a317e, 0xf42865fb, 0xdcdff030, 0xf9000005, 0xfeffbf62, 0x99900149, 0xa0a13228,
|
||||
0x32b0329f, 0xb2d5b2c4, 0x04b630e6, 0x01120cf5, 0x00299cd9, 0x049e9800, 0x90ffb9c4, 0x9fc41199,
|
||||
0xbb080a1f, 0x99b905ef, 0x1f94f000, 0x0f909fbc, 0x05f9bbff, 0xb334feff, 0x00e9013d, 0x4ffe94bd,
|
||||
0x20ff9001, 0xb50142fe, 0x229001f9, 0xbdf9a01c, 0x7e2bb2a4, 0x33009c4c, 0x00c91fad, 0x3c322ab2,
|
||||
0x117e1b32, 0xad33009c, 0x3300ba1f, 0x30460200, 0x0cf40206, 0x00003310, 0x010d331a, 0x5f3e00a5,
|
||||
0x0033009f, 0x0d334103, 0x3e009804, 0xc4009f95, 0x90f1ff19, 0x9eb80126, 0x3e001136, 0xc4009f6b,
|
||||
0x90f1ff19, 0x9eb80126, 0x0f001146, 0x9fa43e10, 0xff19c400, 0x012690f1, 0x9eb8040f, 0x3e001156,
|
||||
0xc4009fa4, 0x90f1ff19, 0x020f0126, 0x115a9eb8, 0x9fa43e00, 0xff19c400, 0x012690f1, 0xb801004f,
|
||||
0x00115c9e, 0x0a034994, 0xf89cc404, 0x18f4cfa6, 0x08c99032, 0x9fa6080b, 0xbc060df4, 0xecbcb2fc,
|
||||
0x0140fea0, 0xb2200090, 0x8b707e0c, 0x1fa43300, 0xa009bf13, 0x01009859, 0xe03e60a0, 0x030a009f,
|
||||
0x900149fe, 0x9fbf2899, 0x0005dcd9, 0xa699bf00, 0x070bf4f9, 0x003a317e, 0xf41065fb, 0xdcdfe830,
|
||||
0xf9000005, 0xfeffbf52, 0x99900149, 0xa0a3b22c, 0x299cd99f, 0x99980000, 0x0ab2b204, 0x0094f108,
|
||||
0xca0bf520, 0x0140fe00, 0x0090a4bd, 0x7e0bb218, 0x33009c4c, 0x00b81fad, 0xff0b0ab2, 0x117ec43d,
|
||||
0xad33009c, 0xfe00a91f, 0x007f0141, 0x4a1c1190, 0x100b10dc, 0x707e1cb2, 0xad33008b, 0x7200911f,
|
||||
0xbd15b20b, 0x0104bdc4, 0x3eff04e0, 0xc400a0e7, 0x0bf401b9, 0x07c6b069, 0xbf350cf4, 0xf85c3c3d,
|
||||
0x901f0ec4, 0x99b90309, 0xfff4f000, 0xbc1f94f0, 0x49bc909e, 0xf49fff95, 0xbb049ebb, 0x99b904fe,
|
||||
0x049dfd00, 0xa0059ffd, 0xa0db3e39, 0x3c2dbf00, 0x1ec4f85c, 0x1d09921f, 0xf00099b9, 0x94f0fff4,
|
||||
0x909ebc1f, 0xff9549bc, 0x9ebbf49f, 0x04febb04, 0xfd0099b9, 0x9ffd049d, 0x9029a005, 0xb57601cc,
|
||||
0x04009001, 0x73041190, 0xfe8800b4, 0x99900149, 0xd99fbf2c, 0x000005dc, 0xf9a699bf, 0x7e070bf4,
|
||||
0xfb003a31, 0x30f41855, 0x05dcdfd4, 0x22f90000, 0x49feffbf, 0x34999001, 0x41fea232, 0x909fa001,
|
||||
0x984a0c11, 0xb2280b23, 0x8b707e1c, 0x1fa43300, 0x0110985d, 0x90bc19bf, 0xf490a6f2, 0xf6b01008,
|
||||
0x0b9cf001, 0x3e0196f0, 0x0900a155, 0xf0f9a6e1, 0x96f00b9c, 0x330b0a01, 0xd9330090, 0x000029b4,
|
||||
0xbf019c98, 0x014ffe9b, 0xbc0cff90, 0x9c4d90f0, 0x08923523, 0x0990240e, 0x1f94f001, 0xb504fa90,
|
||||
0x367e01f9, 0x847e0021, 0x49fe008a, 0x34999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b,
|
||||
0x25fb003a, 0xf830f42c, 0x0005dcdf, 0xbf12f900, 0x0149feff, 0x320c9990, 0xd99fa0a1, 0x0000299c,
|
||||
0x0a049f98, 0x00008908, 0x04f9fd01, 0xfe2a0bf4, 0xa4bd0140, 0xb2080090, 0x9c4c7e0b, 0x1fa43300,
|
||||
0x320ab219, 0x7ec43d1b, 0x33009c11, 0xc40b1fa4, 0x067e1f1a, 0x49fe00a1, 0x0c999001, 0xdcd99fbf,
|
||||
0xbf000005, 0xf4f9a699, 0x317e070b, 0x15fb003a, 0xf830f408, 0x0005dcdf, 0xbf12f900, 0x0149feff,
|
||||
0x320c9990, 0xd99fa0a1, 0x0000299c, 0x0a049998, 0x0094f108, 0x00907380, 0x0140fe2e, 0x0090a4bd,
|
||||
0x7e0bb208, 0x33009c4c, 0xb21c1fa4, 0x3d1b320a, 0x9c117ec4, 0x1fa43300, 0x1f1ac40e, 0x7e20a5f0,
|
||||
0xfe00a106, 0x99900149, 0xd99fbf0c, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x52f90815,
|
||||
0xb206b995, 0x0394b6c4, 0xa9bcd5b2, 0x3fb0c430, 0x00a2df3e, 0x329831bf, 0x0054b301, 0xbd010a18,
|
||||
0x7e0cb2b4, 0xfd0039cd, 0x1afd052b, 0xa2c73e05, 0x0a0cb200, 0x7eb4bd01, 0xb90039cd, 0xaab900b9,
|
||||
0x0429fd00, 0x92041afd, 0x40b30144, 0x00900b00, 0x4004b301, 0xb531a0c8, 0x04bd0132, 0xb3083390,
|
||||
0xfbb50044, 0x7ed4bd51, 0xf800a27e, 0x7e010d00, 0xf800a27e, 0x3fbcc400, 0xb606b5b6, 0xabbc03b4,
|
||||
0x01ab98a0, 0x797eaabf, 0xa4f00039, 0xb200f801, 0x3df4bdae, 0x08f0b3a4, 0x98ef3c0a, 0x90a0a93c,
|
||||
0xfeb301ff, 0xf0f30080, 0xaa3907a2, 0x3f00f801, 0x01e9c4ae, 0xbd1b0bf4, 0x3cff0ef4, 0xff9098af,
|
||||
0xf59e2601, 0xb300c51b, 0x3ef410f4, 0xbd00a40c, 0x90afbcf4, 0x90099918, 0x9d3301ff, 0xb300ae00,
|
||||
0x18f207f4, 0x800c06ad, 0x0cf5dc26, 0xe433009e, 0xa9183800, 0x009d3301, 0xa9180093, 0x009d3302,
|
||||
0xa918008b, 0x009d3303, 0xaf180083, 0x05a91804, 0x76fff4f0, 0x9ffd0894, 0x00947305, 0xf4dc266f,
|
||||
0x013e691b, 0xaf1800a4, 0x05a91804, 0xf0fff4f0, 0x94b6ff94, 0x059ffd08, 0x737099cd, 0x184d0094,
|
||||
0x991201a9, 0x19963041, 0x18400cf4, 0x963102a9, 0x1df40040, 0x5a963136, 0x2f1cf400, 0x3103a918,
|
||||
0xf4004096, 0x9631251d, 0x1cf4005a, 0x00d0331e, 0xffefc41b, 0xf404f9c4, 0xf9c4151b, 0x0294b30a,
|
||||
0x07a9180b, 0x08009033, 0x00f8060a, 0x00f8a4bd, 0x020f12f9, 0xa0b2b1b2, 0x2200a0b3, 0x94f0a93f,
|
||||
0x171bf408, 0x00a30f7e, 0x060010b3, 0x09181a20, 0x26060f08, 0x051bf4a9, 0xfab2f4bd, 0xa9b211fb,
|
||||
0xc0b3020a, 0x9abf1200, 0xb4b6cdb2, 0x00804c07, 0x00b75e7e, 0x30f400f8, 0x05dcdff8, 0x22f90000,
|
||||
0x49feffbf, 0x10999001, 0x9fa0a0b2, 0x00b3020a, 0x0abf3400, 0xb294943d, 0x0141fe07, 0x11902bb2,
|
||||
0x20010c0f, 0x7e1db219, 0xb300b775, 0x3f1700a4, 0xb20abf19, 0xf01db22b, 0x010cfd94, 0x5e7e1920,
|
||||
0x49fe00b7, 0x10999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x25fb003a, 0xf830f408,
|
||||
0x0005dcdf, 0xbf42f900, 0x0149feff, 0xb2189990, 0xb29fa0a1, 0xb2c0b2b4, 0x00a0b3d3, 0x00c0b356,
|
||||
0x07cf1852, 0x42fe94bd, 0x14229001, 0xa001ff10, 0x07cf3529, 0x0f7ecab2, 0x2bb200a3, 0xb2080a35,
|
||||
0xa7b17e1a, 0x00a4b300, 0xb22bbf2c, 0x7e1ab20c, 0xb300a43e, 0xb21e00a4, 0x7e4bb21a, 0xb300a456,
|
||||
0xb31200a4, 0xbf0e0030, 0x3e32a022, 0x0a00a531, 0x0149fe02, 0xbf189990, 0x05dcd99f, 0x99bf0000,
|
||||
0x0bf4f9a6, 0x3a317e07, 0x0845fb00, 0xc0b202f9, 0x2400a0b3, 0x2000c0b3, 0xb4b6aabf, 0x00804c07,
|
||||
0x757e0db2, 0xa4b300b7, 0x0ab21000, 0x00a32f7e, 0x00a5763e, 0x01fb020a, 0x1700a0b3, 0x1300c0b3,
|
||||
0xcdb2aabf, 0x0c07b4b6, 0xb7757e10, 0x0a00f800, 0xf900f802, 0xb2b3b242, 0x00a2b2c4, 0x00a0b302,
|
||||
0xa5e97e42, 0xb2030000, 0x00a0b3a1, 0xb23bb236, 0x7e1cb22a, 0xb200a54c, 0x00a4b3a0, 0xbd1ab21e,
|
||||
0xa4107eb4, 0xb3a0b200, 0xb31000a4, 0x180c0040, 0x94f00619, 0xb249a0ff, 0x7e1bb22a, 0xb200a60b,
|
||||
0xf841fb0a, 0xf800f800, 0x98aeb200, 0xa0b30eaa, 0xf4bd0a00, 0x00a6013e, 0xb30fea98, 0x0f0e00a0,
|
||||
0x0eff9001, 0xe9bc94bd, 0xb300f8f9, 0x981a00b0, 0x90b30ea9, 0xa9980d00, 0x0094b30f, 0x9001090c,
|
||||
0xabbc0e99, 0x9800f899, 0xa9a002b9, 0xa9b5ff09, 0x02b99801, 0xb504abb5, 0xa9b503ac, 0xf900f802,
|
||||
0x32a0b222, 0x0ad2b2c1, 0x00b0b302, 0x400cb85e, 0xd4bd0001, 0xb304c998, 0x33440090, 0xb3080014,
|
||||
0x3f3c0390, 0x26b93fcf, 0x321bf4f9, 0x1801cf18, 0xf92601b9, 0x18271bf4, 0xbf1802ce, 0x90ddbc02,
|
||||
0xb6909dbc, 0x99b80394, 0xbc000140, 0xef269009, 0xa00b1bf4, 0x3ea4bd29, 0x9000a6a7, 0xcc9001dd,
|
||||
0x14d4b318, 0xfb040ab3, 0xb2abbf21, 0xa6f009ac, 0x0d0bf4b9, 0xb503aa98, 0x5b7e01cb, 0x00f800b6,
|
||||
0xa1b232f9, 0x04bdb2b2, 0xef3ef003, 0x19bf00a6, 0xb2010090, 0xf493a61a, 0x030a090d, 0x00a6f63e,
|
||||
0x1bf493a6, 0x3e020a09, 0x7e00a6f6, 0xa600a6a9, 0xdd08f402, 0x31fba4bd, 0xdff830f4, 0x000005dc,
|
||||
0xffbf82f9, 0x900149fe, 0xa3b22899, 0xb8b29fa0, 0x8400a9b3, 0x00b0b300, 0x0147fe7f, 0xbd05a498,
|
||||
0xbd54bd24, 0x24779014, 0x00a7603e, 0xbd0c3a98, 0xb002bc94, 0x7cb279a0, 0x00b65b7e, 0xff0f79bf,
|
||||
0x0bf49fa6, 0x3e643d09, 0x9000a74e, 0x00900155, 0xf404a601, 0x6033d908, 0x11900700, 0x2024bc01,
|
||||
0xa6033998, 0x0b18f429, 0x04bd0106, 0x00a7513e, 0x1ab24bb2, 0x0016fc7e, 0x0df45aa6, 0x01119006,
|
||||
0x3d063998, 0xf419a6f4, 0x010f050c, 0xa4bd8f20, 0x00a7963e, 0x49fe020a, 0x28999001, 0xdcd99fbf,
|
||||
0xbf000005, 0xf4f9a699, 0x317e070b, 0x85fb003a, 0xf030f408, 0x0005dcdf, 0xbf82f900, 0x0149feff,
|
||||
0xfe309990, 0x9fa00147, 0xb208a998, 0x09b1b0a6, 0x91b0f105, 0xb2843d0a, 0x2c779090, 0xbd036998,
|
||||
0xa67fa0f4, 0x0708f409, 0x010804bd, 0xa60a90b4, 0x351bf409, 0x32008033, 0x00a8593e, 0xbc0c6a98,
|
||||
0x7cb24010, 0x5b7e4bb2, 0x79bf00b6, 0x9fa6ff0f, 0x900f1bf4, 0xf1090122, 0x1bf439a6, 0x9043b205,
|
||||
0x2c3e0111, 0x24bd00a8, 0xf10314bd, 0xa6056998, 0xcb08f419, 0x1e0020b3, 0x18f429a6, 0x0860b50f,
|
||||
0xa009f0b4, 0xa86a3ef3, 0xa6f10f00, 0x051bf45f, 0x09bc05b2, 0xa7dc3e00, 0x091a0a00, 0xf459a6f1,
|
||||
0x65b50d0b, 0x0990b408, 0xa4bd95a0, 0x900149fe, 0x9fbf3099, 0x0005dcd9, 0xa699bf00, 0x070bf4f9,
|
||||
0x003a317e, 0xf41085fb, 0xdcd9f830, 0xf9000005, 0xfe99bf82, 0xff90014f, 0xa0a3b228, 0xb2b4b2f9,
|
||||
0x00c033d0, 0x3ddab20e, 0x7e140cb4, 0xfe00b78c, 0x14bd0142, 0x08242290, 0x06ff07fe, 0x3efb05fc,
|
||||
0x9800a939, 0x94bd0c3a, 0xa0b014bc, 0x7e2cb229, 0xbf00b65b, 0xa6f00f29, 0x560df49f, 0x9fa6fd0f,
|
||||
0xa6110cf4, 0x3018f496, 0x1bf495a6, 0xa9083e45, 0xf498a600, 0x97a62f0b, 0x98371bf4, 0x99900109,
|
||||
0x0109b501, 0x00a9363e, 0x90040998, 0x09b50199, 0xa9363e04, 0x02099800, 0xb5019990, 0x363e0209,
|
||||
0x099800a9, 0x01999003, 0x3e0309b5, 0xbf00a936, 0x01999009, 0x119009a0, 0x05399801, 0x08f419a6,
|
||||
0x0149fe85, 0xbf289990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x3a317e07, 0x0885fb00, 0xdff830f4,
|
||||
0x000005dc, 0xa1b222f9, 0xb2b2ffbf, 0xbf03aa98, 0x0149fe1b, 0xfe109990, 0x9fa00140, 0xb20c0090,
|
||||
0xb65b7e0c, 0x980cbf00, 0x2bb2031a, 0x00b6727e, 0x09011b98, 0xf4b9a6ff, 0x1998101b, 0x0212b504,
|
||||
0x3e0292b5, 0x9800a9b0, 0x2cb2031a, 0x00b6727e, 0xbf031a98, 0x7efd0c1b, 0xfe00b672, 0x99900149,
|
||||
0xbf12a010, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x3a317e07, 0x0825fb00, 0xdfc830f4, 0x000005dc,
|
||||
0xffbf82f9, 0xfef830f4, 0x99900149, 0x929fa060, 0xae180499, 0xa0f4bd1c, 0x05a9989f, 0x050aa2b2,
|
||||
0x330b91b0, 0x021a00e9, 0x980c2b98, 0x4afe092c, 0x90f10001, 0x44fe44aa, 0x01a6b201, 0xb6877e20,
|
||||
0xb205b200, 0x304490a3, 0x00aa713e, 0xa6082998, 0x310bf439, 0x3bb22ab2, 0x4db2010c, 0x00a8877e,
|
||||
0xb3044998, 0x981f0094, 0x94b30349, 0x49981800, 0x0094b302, 0xa649bf3b, 0x0918f491, 0x643e30b2,
|
||||
0x19b200aa, 0xb20bb0b4, 0x7e6ab291, 0xb200b6a0, 0xf435a6a3, 0x030ab91b, 0x0bf503a6, 0x14b301a3,
|
||||
0x03b20c00, 0x8e3e743d, 0x03b200aa, 0x38940107, 0xb254bd07, 0xab9a3e86, 0x0c2a9800, 0x53bce4bd,
|
||||
0x014cfe10, 0x9016e1b0, 0x1bb258cc, 0x00b65b7e, 0xf300adb3, 0x1690b400, 0x9fa6f00f, 0x00d80cf5,
|
||||
0x2ab294bd, 0x7e1591b0, 0xb200a5e9, 0x00a9b3a4, 0x2abf00d6, 0x804c6bb2, 0x7e4db200, 0xb200b775,
|
||||
0x00adb3a0, 0x2ab200a7, 0x4cb21bb2, 0x90014dfe, 0xbd7e50dd, 0xa0b200a4, 0x9000adb3, 0x902ab200,
|
||||
0x010c014b, 0x90014dfe, 0x3f7e54dd, 0xa0b200a6, 0x7800a4b3, 0x9815b0b4, 0x4afe0c2c, 0x30aa9001,
|
||||
0x00a6277e, 0xa60c90b4, 0x1e1bf491, 0xfe14b0b4, 0xaa90014a, 0xa95c7e30, 0x1590b400, 0xb3059f98,
|
||||
0x3e2300f4, 0x0e00ab88, 0xf49ea6ef, 0x0300090d, 0x00ab883e, 0x90014afe, 0xa97e30aa, 0x243e00a6,
|
||||
0xf99800ab, 0x14e0b402, 0x1bf491a6, 0x02feb506, 0x91a6f9bf, 0xa0091bf4, 0xab883efe, 0x01f99800,
|
||||
0x1bf491a6, 0x01feb506, 0x2ab24bb2, 0x00a60b7e, 0x130004b3, 0x90015590, 0x29988066, 0xf559a605,
|
||||
0x33fefa08, 0x98460070, 0x8db2042f, 0x2ab2e4bd, 0x0b00f1b0, 0x0070dc02, 0x41fe0000, 0x5c119001,
|
||||
0x7e0111b0, 0x9800a5e3, 0x2abf042c, 0xfb048bb2, 0x00b7477e, 0x2c981ebf, 0xbda0b204, 0xb22ab2b4,
|
||||
0xa5e57e0d, 0x0004b300, 0xbdff0406, 0xac003e04, 0x0c2a9800, 0xb2b003bc, 0x0100904c, 0x00b6727e,
|
||||
0xa60b90b4, 0xec08f409, 0xbc032f98, 0x29b59039, 0xf49fa609, 0x94bd0808, 0xbd0929b5, 0x0149fea4,
|
||||
0xbf609990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x3a317e07, 0x0830f400, 0xf43885fb, 0xdcd9cc30,
|
||||
0xf9000005, 0xf499bf82, 0x4ffef830, 0x5cff9001, 0xe1b0f9a0, 0xb2c8b20b, 0xb3a3b2d6, 0x028400b9,
|
||||
0x7f00e9b3, 0x2caf1802, 0xbd0141fe, 0x54119094, 0x030019a0, 0x6d00f933, 0xb2c43d02, 0xa63f7e1d,
|
||||
0xb3a0b200, 0x025e00ad, 0x68bc17bf, 0x017998f0, 0x08f59fa6, 0x7998024d, 0x0194b304, 0x3e05000a,
|
||||
0xb300aee1, 0x023e0069, 0x09027f98, 0xf5f9a6f0, 0xb2022a0b, 0xa5e97e3a, 0xb3a2b200, 0x021e00a9,
|
||||
0xb20c3c98, 0x0140fe7b, 0xb2340090, 0xa6277e0a, 0xb50ab200, 0x8bcc0570, 0xa6c07e70, 0xb3a0b200,
|
||||
0x01e900ad, 0x010d00b4, 0xf501a6f0, 0xf501ce0b, 0x3d01d00c, 0x00804cb4, 0x8c7e2ab2, 0x3abf00b7,
|
||||
0x4c070b94, 0x2db20080, 0x00b7757e, 0xb30ca1b0, 0x01b600ad, 0x18052918, 0x9476042f, 0xfff4f008,
|
||||
0x09e59fff, 0xf5e966ff, 0xe401980b, 0xa6ffffe9, 0x8e08f589, 0xbcf4bd01, 0x9918902f, 0x009d3309,
|
||||
0xff900182, 0x07f4b301, 0xaefb3ef2, 0xf28e3c00, 0x08f59f26, 0xfdc4016d, 0xff94f0ff, 0xa6529dbc,
|
||||
0x050df456, 0xd99065b2, 0xbca43d10, 0xc43db029, 0xa63ee4bd, 0xd6b100ad, 0x0cf5006f, 0x10b40145,
|
||||
0x98be3c0b, 0x26f81e3c, 0x170bf4f9, 0x39ff94f0, 0x9ffd0099, 0x00903304, 0x3c010a06, 0x010ce9bf,
|
||||
0x9001ee90, 0xe5a601dd, 0x33ce08f4, 0x00ed00c9, 0x94f0293f, 0x080bf408, 0xd000a933, 0xb294bd00,
|
||||
0x1491b03a, 0xb01391b0, 0x91301291, 0x014bfe5b, 0x7e5bbb90, 0xb200a6f8, 0x00adb3a0, 0x903400ef,
|
||||
0x0090335b, 0x7e3ab211, 0xb200a9d8, 0x00adb3a0, 0x00b400db, 0x1140b40d, 0x90014ffe, 0x2eb250ff,
|
||||
0xb0070d94, 0x804101f1, 0x0b3ab200, 0xb04cb201, 0xe37e0011, 0x0bb200a5, 0x3ab22cb2, 0x90014dfe,
|
||||
0xbd7e4cdd, 0xe0b400a4, 0xb2a0b214, 0xbd3ab21c, 0x7e0db2b4, 0xb300a5e5, 0x0091000d, 0xfe13b0b4,
|
||||
0xaa90014a, 0xa95c7e34, 0x0c3a9800, 0xfe0db0b4, 0xcc90014c, 0xb65b7e48, 0xb3a0b200, 0xb46d00a4,
|
||||
0xf0011290, 0x1bf491a6, 0x014e9832, 0xb370efcd, 0x0f0600f4, 0x06291870, 0xbcff94f0, 0x9fbb909e,
|
||||
0x0149b502, 0x00ae983e, 0x3ab20bb2, 0x3e7e2cb2, 0xa0b200a4, 0x3400a4b3, 0xfe0265bb, 0xaa90014a,
|
||||
0xa6a97e34, 0x0060b300, 0x0b90b420, 0xbc8085bc, 0x91b09095, 0xace43e0b, 0x3e020000, 0x0000aec8,
|
||||
0xaec83e03, 0x0c00b400, 0x2bb23ab2, 0x00a60b7e, 0x79b594bd, 0xaee13e05, 0x3e030000, 0x0000aee1,
|
||||
0x0149fe02, 0xbf5c9990, 0x05dcd99f, 0x99bf0000, 0xf9a60ab2, 0x3e170bf4, 0x1800af07, 0x9d330629,
|
||||
0x3efe4f00, 0x7e00aebf, 0xf4003a31, 0x85fb0830, 0xdc30f434, 0x0005dcdf, 0xbf82f900, 0xf830f4ff,
|
||||
0x900149fe, 0x9fa04c99, 0xb20bb1b0, 0xb2d4b2c2, 0xb3a5b2e6, 0x011700b9, 0x1200e9b3, 0xfe94bd01,
|
||||
0xc43d0141, 0xa0481190, 0x7e1db219, 0xb200a63f, 0x00adb3a0, 0x19bf00fb, 0x98f042bc, 0x9fa60199,
|
||||
0x00ea08f5, 0x03005ab2, 0x00a5e97e, 0xa9b3a3b2, 0xbf00de00, 0x0c5c981b, 0x900140fe, 0x0ab23000,
|
||||
0x00a6277e, 0x2bcc0ab2, 0xa6c07e70, 0xb3a8b200, 0x00ad00ad, 0xfe7021cd, 0x80420147, 0x44779000,
|
||||
0x00b0373e, 0xbd0c00b4, 0x0979a094, 0xf409a6f0, 0x0200091b, 0x00b03e3e, 0x09a6f009, 0x00090df4,
|
||||
0xb03e3e03, 0x0bc0b400, 0xbd0704b6, 0xb20db2e4, 0xb0b4bd5a, 0x71b00021, 0xa5e37e01, 0xb25abf00,
|
||||
0xb22cb20b, 0xb7757e3d, 0xb27ebf00, 0xb23bb2a0, 0xb22cb25a, 0xa5e57e0d, 0x0004b300, 0xbd3ab245,
|
||||
0xa4107eb4, 0xb3a0b200, 0x003700a4, 0x0201bb70, 0x0df404a6, 0x9040b205, 0x6ab2101b, 0xb2b03bbc,
|
||||
0xb7957e0c, 0x014afe00, 0x900240bb, 0x60bc30aa, 0xa6a97e60, 0xb314bd00, 0xff6d004d, 0x5ab280b2,
|
||||
0x0b7e3bb2, 0x4c3e00a6, 0x020000b0, 0x900149fe, 0x9fbf4c99, 0x0005dcd9, 0xb299bf00, 0xf4f9a60a,
|
||||
0x317e070b, 0x30f4003a, 0x2485fb08, 0xd9f830f4, 0x000005dc, 0x99bf32f9, 0x90014ffe, 0xa1b214ff,
|
||||
0x94bdf9a0, 0xc3b2b2b2, 0x4b0140fe, 0x00900320, 0xb209a010, 0xb79b7e0a, 0xb309bf00, 0xb34c0090,
|
||||
0xa04800a4, 0xb509bf91, 0x0fbf0192, 0xb5100049, 0x0fbf04f9, 0xf9b52009, 0xb509bf05, 0x0fbf0693,
|
||||
0xf9350109, 0x3509bf1c, 0x0fbf2c9a, 0xf9b5f009, 0x900fbf0a, 0xf9b540f9, 0x900fbf0e, 0xf9b5c0f9,
|
||||
0x3e0abf0f, 0xbd00b0e9, 0x0149fea4, 0xbf149990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x3a317e07,
|
||||
0x0835fb00, 0xdfd030f4, 0x000005dc, 0xffbf82f9, 0x900149fe, 0xa3b25099, 0x02059fa0, 0xf800a9b3,
|
||||
0x00b63004, 0x350b9cf0, 0x94bd2ca9, 0x7e0ca9b5, 0xb200a5e9, 0xbd3abfa0, 0x00804cb4, 0x757e0db2,
|
||||
0xa5b200b7, 0xae00adb3, 0x33093f04, 0x049f4a9d, 0x33010918, 0x0497469d, 0x33020918, 0x048f469d,
|
||||
0x33030918, 0x0487539d, 0x18040e18, 0x0f180509, 0x070d1806, 0xf0ffe4f0, 0xf4f0ff94, 0x0894b6ff,
|
||||
0xfd10f4b6, 0xd4b6059e, 0x05f9fd18, 0xf505dffd, 0x05045b0b, 0x03d6b005, 0x045a0cf5, 0xb3013db5,
|
||||
0x490e01d4, 0x39b55000, 0xb1d73e02, 0x080d1800, 0x18090918, 0x0e180a0f, 0xffd4f00b, 0xf0ff94f0,
|
||||
0x94b6fff4, 0x10f4b608, 0xb6059dfd, 0xf9fd18e4, 0x05effd05, 0xb2023eb5, 0x7e0bb23a, 0x9800a60b,
|
||||
0xff09023a, 0xa9a60305, 0x04080bf5, 0x9007a5b6, 0x3ab5303b, 0xb6ce7e03, 0xb3a5b200, 0x03f500ad,
|
||||
0x09033b98, 0x343a90c0, 0xfd3fbb90, 0xb5b604b9, 0xb79b7e03, 0xb3a5b200, 0x03d900ad, 0xfe0147fe,
|
||||
0x77900148, 0x9044bd40, 0x88900179, 0x0991b03c, 0x00b3443e, 0x8ea0e4bd, 0x0f0044b3, 0xbd0c3a98,
|
||||
0x3efe0cb4, 0xb200b267, 0xb24bb23a, 0xa5787e7c, 0xb3a5b200, 0x039d00ad, 0x94f0793f, 0x120bf401,
|
||||
0xb20c3a98, 0x7eff0c4b, 0x3e00b672, 0xb200b341, 0xa32f7e7a, 0x00a0b300, 0x0c3a980f, 0xfd0c4bb2,
|
||||
0x00b2673e, 0x94f0793f, 0x0e1bf402, 0xb20c3a98, 0x3efd0c4b, 0xb400b336, 0x3ab209b0, 0x8db2010c,
|
||||
0x00a63f7e, 0x5d00a0b3, 0x3fb2793f, 0x99c724bd, 0x01999002, 0x980a91b0, 0x54b354f5, 0xb0b43900,
|
||||
0x0022bc09, 0x02bc030c, 0x0304b600, 0x014001b8, 0x1031bc00, 0x957e1ab2, 0x30bc00b7, 0x4309b800,
|
||||
0x95200001, 0xb45302b5, 0x0fb50af0, 0x3e81a054, 0x9000b301, 0xff900122, 0x1424b318, 0xb62e3ebe,
|
||||
0x3f8ebf00, 0x027f5879, 0x98077d18, 0x3a9803ee, 0x0299c70d, 0xcc00f3f0, 0x96cb70ff, 0xcb4bb21f,
|
||||
0x010cd8e6, 0xebf0d6cb, 0x7e01e0f6, 0x9800a2e5, 0x4bb20c3a, 0x727e6cb2, 0xa5b200b6, 0xb400adb3,
|
||||
0x01449002, 0xa6033b98, 0xeb08f54b, 0xbc94bdfe, 0x89a0b0bb, 0xb17e8ab2, 0xa5b200b7, 0x9400adb3,
|
||||
0xbd37b202, 0x547f9884, 0xbc9088bc, 0x94b69098, 0x4099b803, 0x39bc0001, 0x0b91b090, 0x5300f9b3,
|
||||
0x033c9802, 0x3d0fa0b4, 0xbc24bdb4, 0x44bdc0cc, 0x00b78c7e, 0x3e0f60b4, 0x9800b45f, 0x2bb20d3a,
|
||||
0x7e0c41b0, 0x3300a2f5, 0x00b500a9, 0xfe0c3a98, 0x2bb2014c, 0x7e38cc90, 0xb300b65b, 0x020c00ad,
|
||||
0xb40be0b4, 0xef980e90, 0xd899c703, 0x1bf59fa6, 0x3a98008e, 0x0c2bb20d, 0xa2ed7e01, 0x014cfe00,
|
||||
0x2bb23ab2, 0x7e30cc90, 0xb300a593, 0x981306a4, 0x2bb20c3a, 0x727efd0c, 0x5c3e00b6, 0xadb300b4,
|
||||
0x7401cb00, 0x93f01c90, 0x9099bc00, 0x7f0069bc, 0xff19e401, 0x091bf4ff, 0x5c3e0260, 0x3a9800b4,
|
||||
0x014cfe0c, 0xffff1be4, 0x7e34cc90, 0xb300b65b, 0x019800ad, 0x343af034, 0xf9263690, 0x60100df4,
|
||||
0xff1be402, 0x0c3a98ff, 0x00b4513e, 0xb20c3a98, 0x7efd0c2b, 0xb300b672, 0x017000ad, 0x98012290,
|
||||
0x2aa6033a, 0xff3708f5, 0x6eb264b2, 0xd43db43d, 0xc4bdf4bd, 0x00b4933e, 0x9473e97f, 0x010d0a00,
|
||||
0x00b48d3e, 0x0600d033, 0xcc90010b, 0x01ff9001, 0xa602ee90, 0xe308f4fa, 0x0b00c4b3, 0x3e547cb5,
|
||||
0x3300b5cf, 0x00a600b9, 0xb0013998, 0x0cf40296, 0xb2030930, 0x5479b56d, 0xf4bde4bd, 0x00b4d23e,
|
||||
0x9073d97f, 0x697c0a00, 0x01ee90e9, 0x9001ff90, 0x399802dd, 0xf4f9a603, 0x493ee908, 0x94bd00b5,
|
||||
0x79b5f101, 0xb224bd54, 0xb5233e1b, 0xe4407f00, 0xf4ffff09, 0xf10f260b, 0x1bf4bfa6, 0xff0be40b,
|
||||
0xb51b3eff, 0x0c3a9800, 0xffff0ce4, 0x00b6727e, 0xb900adb3, 0xff0be400, 0x9019b2ff, 0x44900122,
|
||||
0x9891b202, 0x29a60339, 0x09c508f4, 0xf5b9a6f1, 0x9800a00b, 0x3c980c3a, 0xb6727e0a, 0x00adb300,
|
||||
0x31b5008c, 0xb5cf3e0a, 0xbd6f7f00, 0x01c19294, 0xf05179b5, 0x04bd00f3, 0x3e527fb5, 0x7f00b587,
|
||||
0x014c584b, 0x900c3a98, 0xb3f00100, 0x00c3f000, 0x7e024490, 0xb300b672, 0xb45200a4, 0xe9980be0,
|
||||
0x70999001, 0xa601e9b5, 0xd608f401, 0x9808607c, 0xf00c0c3a, 0xffff0be4, 0x00b6727e, 0x2d00a4b3,
|
||||
0xe4014cfe, 0xb2ffff0b, 0x40cc903a, 0x00a5787e, 0x1900a4b3, 0x98469034, 0x94f0517f, 0xf0f9bcff,
|
||||
0x3e517fb5, 0x0a00b5cf, 0x3ea5b203, 0x9000b5da, 0x77900188, 0x148db318, 0x49fefd90, 0x3c999001,
|
||||
0x457e9abf, 0xf03e00b7, 0x030500b5, 0x00b5f23e, 0x0bb204bd, 0x0b7e3ab2, 0x50b300a6, 0x3a981a00,
|
||||
0x7e04bd0c, 0x9800b6c4, 0x30b50d3a, 0xb7457e0c, 0x0d30b500, 0x900149fe, 0x9fbf5099, 0x0005dcd9,
|
||||
0xb299bf00, 0xf4f9a65a, 0x343e110b, 0x010500b6, 0x00b5f03e, 0x003a317e, 0xf93085fb, 0x7ea0b202,
|
||||
0x9800a5e7, 0xc47e0c0a, 0x0a9800b6, 0xb7457e0d, 0x7e0ab200, 0xbd00b745, 0xbf01fba4, 0x0aafb2a9,
|
||||
0xf4b9a602, 0xb9900d18, 0x98f9bc01, 0xc9a0a4bd, 0xa9bf00f8, 0x020aafb2, 0x18f4b9a6, 0x01b9900b,
|
||||
0xfcbca4bd, 0xbf00f899, 0xb2afb2b9, 0xf4c9a6ca, 0xf10a0708, 0xfbb500f8, 0xb5fca002, 0x00f801fc,
|
||||
0xaf98a9bf, 0x90b9bc02, 0xfbbfa9a0, 0x08f49ba6, 0x029bbb08, 0xa998a9a0, 0xa6aabf01, 0x051bf4a9,
|
||||
0x00f8f10a, 0x0800a0b3, 0x00b7457e, 0x30f400f8, 0x05dcdff8, 0x32f90000, 0x49feffbf, 0x14999001,
|
||||
0x9fa0a0b2, 0xa0b3b3b2, 0xfd024200, 0x0cf4a2a6, 0x01ab903a, 0xb60141fe, 0x119002b4, 0x7e1ab210,
|
||||
0xb300b7b1, 0xbf2700a4, 0xb21db219, 0xa0e4bd2c, 0x90dfbf90, 0x9eb201e9, 0xa699fcbc, 0xf408f490,
|
||||
0x3da0ddbf, 0x00b72a3e, 0x49fe020a, 0x14999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b,
|
||||
0x35fb003a, 0xda00f808, 0x00002944, 0x0041c77e, 0xf000a630, 0xa6f00bac, 0x01aab901, 0x44da00f8,
|
||||
0x7e000029, 0x30004142, 0xacf000a6, 0x01a6f00b, 0xf801aab9, 0x2944da00, 0xd77e0000, 0xa6300042,
|
||||
0x0bacf000, 0xb901a6f0, 0x00f801aa, 0x7effb4f0, 0xf8000b94, 0x0b7e7e00, 0xf900f800, 0x3da0b202,
|
||||
0x384c7ea4, 0x00a6b000, 0xa00b9cf0, 0xfb9ab20a, 0xb202f901, 0x7ea43da0, 0xb000382a, 0x9cf000a6,
|
||||
0xb20aa00b, 0xf401fb9a, 0xdcdfe430, 0xf9000005, 0xfeffbf82, 0x45fe0149, 0x3c999001, 0xa00147fe,
|
||||
0x2455909f, 0xd9347790, 0x0000141c, 0x4bfe9abf, 0x90080c01, 0xff0d2cbb, 0x0000c17e, 0xeb00a433,
|
||||
0x3f0c30b4, 0x0c943339, 0x043118e2, 0x0f001033, 0xb0011933, 0x3e043d00, 0x9800b96d, 0x2cd9023f,
|
||||
0x98000014, 0x34580431, 0x3f5fa00a, 0x0339989f, 0xb5183690, 0xff090159, 0xf43379a0, 0xf77e1800,
|
||||
0xa0320032, 0x2900ad33, 0xdf010901, 0x0000142c, 0x1272f920, 0xbd0043f0, 0xb8ad3e14, 0x0241bc00,
|
||||
0x010006b1, 0x40060df4, 0x947e0100, 0x24d9000b, 0xbf000014, 0xff2ce49a, 0xb26bb2ff, 0x1300de0d,
|
||||
0x117e0000, 0x7aa000af, 0xd400adb3, 0x985bbf00, 0x1d90015c, 0x7c0eb204, 0x10bc2020, 0x1300da10,
|
||||
0x367e0000, 0xa0320021, 0xc500ad33, 0x4cb4bd00, 0x00da0100, 0xa6000013, 0xa408f414, 0x00b95c3e,
|
||||
0xd9023f98, 0x0000142c, 0x58043498, 0x5fa00a32, 0x39989f3f, 0x18389003, 0x090159b5, 0x3379a0ff,
|
||||
0x7e1600f4, 0x320032f7, 0x00ad33a0, 0x2cdf0084, 0x20000014, 0xff26e4f1, 0x3e24bdff, 0xbc00b94d,
|
||||
0x16b11262, 0x0df40100, 0x01004106, 0x000b947e, 0x5c985bbf, 0x042d9001, 0x00da1eb2, 0x7e000013,
|
||||
0xe40020d0, 0xbcffff4c, 0xa0322021, 0x1db28bb2, 0x001300de, 0x40417c00, 0x3500a433, 0x001424d9,
|
||||
0x7e9abf00, 0xa000ac3b, 0x00a4b37a, 0x4cb4bd13, 0x00da0100, 0xa6000013, 0xa608f426, 0x5c985bbf,
|
||||
0xbd7ab201, 0x7e040ed4, 0x32002136, 0x2db034a0, 0x817e3ab2, 0x0d33000f, 0x30fe7100, 0x020f3a01,
|
||||
0x1838f130, 0x04090333, 0x30014afe, 0x31303991, 0x90b4bd3b, 0x717e38aa, 0xe73e000f, 0x02f900b7,
|
||||
0x002930d9, 0xbfa0b200, 0x7e640b9a, 0x090000de, 0x00a43310, 0xa6008961, 0x009fcf02, 0x1000f5f1,
|
||||
0x8a009ff6, 0x4b02a600, 0xc4bd1000, 0xbd27104d, 0x198b7ee4, 0x00a43300, 0x2930d915, 0x9abf0000,
|
||||
0x00009b7e, 0x123e0409, 0x0ab200ba, 0x7e03e84b, 0x890016fc, 0xb802a400, 0x000200aa, 0x920aa5b6,
|
||||
0x9af601aa, 0x01114f00, 0x020099b8, 0x009ff600, 0x9a32943d, 0x000001fb, 0x00000000, 0x00000000,
|
||||
0xfa95075d, 0x10f99508, 0xa132f032, 0xf9339232, 0x3000d515, 0x0cf415f6, 0x05f93346, 0xf63005fc,
|
||||
0x1c0cf405, 0x8701f933, 0x301f0a00, 0x08f501f6, 0xf630073a, 0x250cf503, 0x8e283e07, 0x10f93300,
|
||||
0xf630041b, 0x0e0cf410, 0xf50df630, 0x3e070f08, 0x33009156, 0x070711fd, 0x0091603e, 0x431df933,
|
||||
0x1df63006, 0x33250cf4, 0x03fb18f9, 0xf418f630, 0xfd330c0c, 0x3e06e817, 0x33009409, 0x01011af9,
|
||||
0xda1cfd33, 0x94c63e06, 0x21f93300, 0xf6300263, 0x0c0cf421, 0xc61efd33, 0x8ece3e06, 0x24f93300,
|
||||
0xfd33063a, 0x3e06b825, 0xdf00949a, 0x0000299c, 0x2614f918, 0x0d18f4a9, 0xbcffa9c4, 0x6f3e98f9,
|
||||
0xbda00093, 0x0094313e, 0x1d33080a, 0x7e069e00, 0x330063f7, 0x490a0300, 0xa9fdff00, 0x3e4aa004,
|
||||
0x0a009431, 0x09163003, 0x06800cf5, 0x00299cd9, 0x0e99bf00, 0xbc080a01, 0x99e7f4e1, 0x9ffd0133,
|
||||
0x670bf504, 0x02103306, 0x0410330e, 0x3eea3210, 0xb2008e85, 0x8e7b3eea, 0xfea4bd00, 0xbb90014b,
|
||||
0x63b47e2c, 0x8a847e00, 0x1fad3300, 0x49fe063f, 0x2c999001, 0xe9959ebf, 0x0190b31f, 0x3ed4bd0a,
|
||||
0xdd008ea8, 0xff000000, 0x3380e9c4, 0xbd0a0094, 0x8ebf3ef4, 0xb0010f00, 0x1ff400e6, 0x95ff0f05,
|
||||
0xd9ff08e9, 0x90f9bc95, 0xc83e49a0, 0x9b320094, 0x5db24cb2, 0x0077ca7e, 0x0094c83e, 0x5507a033,
|
||||
0xf407a630, 0x9cd9120c, 0x30000029, 0x0df402a6, 0x8f253e2b, 0x0ca63000, 0xd9120cf4, 0x0000299c,
|
||||
0xf409a630, 0x483e5718, 0xa033008f, 0x030a610d, 0xb80e1d33, 0x8f7b3e05, 0x01999800, 0x000000df,
|
||||
0x8f613e04, 0x01999800, 0x000000df, 0x8f613e08, 0x299cd900, 0x99980000, 0x00008f02, 0x049ffd02,
|
||||
0x00c61bf5, 0x0090463e, 0x8f029998, 0xfd040000, 0x1bf5049f, 0x463e00c4, 0x99980090, 0x00008f02,
|
||||
0x049ffd01, 0x3e2f1bf4, 0xd9009046, 0x0000299c, 0x4000008f, 0x3e029998, 0xd9008f88, 0x0000299c,
|
||||
0xdf029998, 0x00800000, 0xf5049ffd, 0x3e00a91b, 0x33009046, 0x30730710, 0x0cf40716, 0x0210331a,
|
||||
0x0216304b, 0x33540cf4, 0x33270010, 0x0486011d, 0x008fd83e, 0xf40c1630, 0x16300d0c, 0x6518f409,
|
||||
0x0090163e, 0xf40e1630, 0x313e6d0d, 0x4ab20094, 0x00789f7e, 0x0094c83e, 0x2b321a32, 0x5db24cb2,
|
||||
0x007cca7e, 0x0094c83e, 0x2b321a32, 0x5db24cb2, 0x007c3b7e, 0x0094c83e, 0x2b321a32, 0x467e4cb2,
|
||||
0xc83e007e, 0x2b320094, 0x5db24cb2, 0xa27e070a, 0xc83e007b, 0x080a0094, 0x4cb22b32, 0x037e5db2,
|
||||
0x1a32007b, 0x3cb22b32, 0x5eb24db2, 0x007ed37e, 0x0094c83e, 0x2b321a32, 0x4db23cb2, 0xa77e5eb2,
|
||||
0xc83e0078, 0x080a0094, 0x0094c83e, 0x9d33040a, 0xd9047a00, 0x0000299c, 0x0a029998, 0x0094f108,
|
||||
0x670bf540, 0x0149fe04, 0x900142fe, 0x22902c99, 0xa09da018, 0x0499922d, 0x99929da0, 0x929da004,
|
||||
0x9da00499, 0xa0049992, 0x0119339d, 0x16300085, 0x0e08f401, 0x1d33030a, 0x3e043202, 0xfe009122,
|
||||
0x40fe0141, 0x2c119001, 0xb2280090, 0x7e0bb21a, 0xbf007560, 0xfe00bf19, 0x42fe0143, 0x0794f001,
|
||||
0x90243390, 0x3ab22022, 0xb20141fe, 0x1c11902b, 0xb20704f0, 0x0404b61c, 0x7e0509fd, 0xbf006a5c,
|
||||
0xbf3fbf29, 0x0141fe1e, 0xf00894b6, 0x94f1fff4, 0xf4b6ffff, 0x18e4b610, 0xfd181190, 0x1ab20509,
|
||||
0xfd050ffd, 0x497e050e, 0x483e006a, 0x2ab20091, 0x006a397e, 0x20bf2ab2, 0x006a297e, 0x4e3e29bf,
|
||||
0x41fe0091, 0x18119001, 0x167e1ab2, 0x1ab2006a, 0x037e10bf, 0x19bf006a, 0x04f11ab2, 0x94b6ffff,
|
||||
0x0590ff10, 0x0069f07e, 0x94f119bf, 0x40a0ffff, 0x313e59a0, 0xfab20094, 0x0095f47e, 0x0094c83e,
|
||||
0x0d00a033, 0x5c01ad33, 0x91ae3e03, 0x33b0bf00, 0x330c0190, 0x3e2f0294, 0xfe00919e, 0x010a0141,
|
||||
0xb2181190, 0x94ef7e1b, 0x1fad3300, 0x1fbf033f, 0x09fffe09, 0x049fff95, 0xa23e10a0, 0x04f10091,
|
||||
0x2a3201ff, 0x0a7e0bb2, 0xc83e0095, 0x9a320094, 0x0094ef7e, 0x0094c83e, 0x237efab2, 0xc83e0095,
|
||||
0x9cd30094, 0xbf000029, 0x0000df39, 0x080a2000, 0xf5049ffd, 0x0a02f50b, 0x001d3303, 0x40fe02ef,
|
||||
0x014cfe01, 0x90280090, 0x0bb22ccc, 0x900142fe, 0x2ab22422, 0x0073477e, 0x9670097f, 0x0b9cf003,
|
||||
0x7e079194, 0x1800010e, 0x087e5830, 0x00330001, 0x1fb20a00, 0x00924d3e, 0xa4732a7f, 0x19b20a00,
|
||||
0x00924b3e, 0x734019c5, 0x731403a0, 0x731804a0, 0xe51c02a4, 0x3e01009f, 0xe500924d, 0x3e02009f,
|
||||
0xe500924d, 0x3e03009f, 0xb200924d, 0x0149fe9f, 0x7f2c9990, 0x04997399, 0x96700088, 0x1a0cf404,
|
||||
0x48019073, 0xf4019670, 0x90733608, 0x9d734c02, 0x3e00e303, 0x730092cf, 0x009b0799, 0xf4079670,
|
||||
0x9073100c, 0x9d736905, 0x3e00cb06, 0x73009304, 0x009c0899, 0xbd099d73, 0x93393e00, 0x07ff8900,
|
||||
0x04f9fdfe, 0x0093513e, 0xffc7ff49, 0x95f194f9, 0xc03e2000, 0xff490092, 0x94f9ffc7, 0x180095f1,
|
||||
0xfe3fff8f, 0xe5049ffd, 0x3e40009f, 0x49009351, 0xf9ffc7ff, 0x0095f194, 0x92c03e10, 0xc7ff4900,
|
||||
0xf194f9ff, 0x3e080095, 0x490092f5, 0xf9ffc7ff, 0x0095f194, 0x3fff8f10, 0x049ffdfe, 0x80009fe5,
|
||||
0x0093513e, 0xffc7ff49, 0x95f194f9, 0x1c3e0800, 0xff490093, 0x94f9ffc7, 0x100095f1, 0xfe3fff8f,
|
||||
0xe5049ffd, 0x3ec0009f, 0x49009351, 0xf9ffc7ff, 0x0095f194, 0x93433e08, 0xc7ff4900, 0xf194f9ff,
|
||||
0x8f100095, 0xfdfe3fff, 0x008f049f, 0x9fff0100, 0x299cd9f5, 0x99180000, 0x00903350, 0x0000890f,
|
||||
0x95f9ff02, 0x00936f3e, 0xfdffff89, 0xa094f9ff, 0x94313e49, 0x14a63000, 0x01480cf5, 0xd9ffafc4,
|
||||
0x000004d0, 0xd9e89fbc, 0x0000299c, 0xefc7080a, 0x989fbc3b, 0xbb96efc7, 0x94f0059f, 0x2b0bf501,
|
||||
0xff29c401, 0x010defe7, 0x0a029b54, 0xf5bf6604, 0xf0011918, 0xb9e400f3, 0xf9bcffff, 0x04c6b0c2,
|
||||
0x0c090df4, 0x93cb3e04, 0xe44da000, 0xc4ffffba, 0xebe703e9, 0x94330142, 0xbabc1200, 0x29bcd9b0,
|
||||
0x4ab20000, 0x0093f43e, 0x000644d9, 0xbc99bf00, 0x4ab2b0ba, 0x7eb09bbc, 0x3e000b7e, 0x32009431,
|
||||
0x9acb7e9b, 0x94c83e00, 0x00a03300, 0x33080a0f, 0x00b1011d, 0x0094c83e, 0x900140fe, 0x0ab22400,
|
||||
0x0072fb7e, 0xa54f093f, 0x00943300, 0xa05a0f06, 0x3e1f0a4f, 0xd90094c8, 0x0000299c, 0x33159918,
|
||||
0x00870099, 0x3802a033, 0xf402a630, 0xa0330f0c, 0xa4331800, 0x703e6e01, 0xa0330094, 0xa4332c03,
|
||||
0x903e6204, 0x3ab20094, 0x009d827e, 0x0094c83e, 0xcbb2bab2, 0x009ffc7e, 0x0094c83e, 0x0b7e2a32,
|
||||
0xc83e009d, 0x2a320094, 0x00a2127e, 0x0094c83e, 0xa67e2a32, 0xc83e00a1, 0x9cd90094, 0x18000029,
|
||||
0x90331599, 0xfbc72400, 0xb22c326c, 0xf05eb24d, 0xac7e0fa4, 0xc83e009e, 0x020a0094, 0x0094c83e,
|
||||
0xc83e030a, 0x090a0094, 0x900149fe, 0x9fbf3099, 0x0005dcd9, 0xa699bf00, 0x070bf4f9, 0x003a317e,
|
||||
0xf01c55fb, 0xa4b6ffa4, 0x0acaa002, 0x3200f81f, 0x30040aaf, 0x0cf402f6, 0xfff4f012, 0x002a5cd9,
|
||||
0xf89fbc00, 0xbfa01f0a, 0xaf3200f8, 0xf630040a, 0x100cf402, 0xd9fff4f0, 0x00002a5c, 0x9bbc1f0a,
|
||||
0xf900f8f9, 0x10af9512, 0xae95b1b2, 0x299cd008, 0xff090000, 0x1bf4e926, 0x4909183d, 0x1bf5f926,
|
||||
0x091800b2, 0x331c0a4a, 0x00ab0199, 0xf5019630, 0x0a00a108, 0x029d3306, 0x0998009d, 0x0af43d13,
|
||||
0x18b9a01f, 0x0f354909, 0x0199104a, 0x3e490935, 0x180095f2, 0x0a0a4a09, 0x7a009433, 0x002a5cd9,
|
||||
0xf099bf00, 0x99c7fff4, 0x0694b6e8, 0xb0f0f9bc, 0x0cf43ff6, 0x33030a5e, 0x905b0ce4, 0x96b104f9,
|
||||
0x0cf40040, 0x02f9944e, 0x002a68df, 0x909fbc00, 0x9a589f7f, 0x73080d01, 0x981b02f4, 0x290d0409,
|
||||
0x338094f0, 0x7e0f0090, 0x0900754b, 0x35d43d01, 0x9cdf5009, 0x18000029, 0xd9c449fe, 0x13f9b5ff,
|
||||
0xf9350209, 0xffe4f04a, 0x1ea01c0a, 0x0095f23e, 0x11fb040a, 0xadb222f9, 0xa0c7b2b2, 0xb0bbbfe8,
|
||||
0x0cf53f06, 0xbcc400cc, 0xffaec4ff, 0x0d0fe4b3, 0xc6b0050a, 0xbb0cf53f, 0x2a5cd900, 0x99bf0000,
|
||||
0xc7ff9fc4, 0xf194e899, 0x0694b606, 0x2c0ee0b3, 0x440fe0b3, 0xedb31f0a, 0x7c009a0d, 0x96719009,
|
||||
0x0cf500ff, 0x9fe4008c, 0x68d9ffff, 0xbc00002a, 0x2fa0f89f, 0x00966e3e, 0x7190017c, 0xf400ff96,
|
||||
0x9fe46f0c, 0x68d9ffff, 0xbc00002a, 0x1f0af99b, 0x0096d03e, 0x0af0c9bc, 0xf0d9c705, 0x9002fb94,
|
||||
0x9c940199, 0xe0cbbc02, 0x1000e6b1, 0xbc440cf4, 0x030a9001, 0xbc0294b6, 0xf6b1f0c9, 0x0cf41000,
|
||||
0xf49ba632, 0x9ea60808, 0xa62008f4, 0x080df4b9, 0x08f4bfa6, 0x2a68df16, 0x9fbc0000, 0xb0bfbca0,
|
||||
0x000b7e7e, 0x00966e3e, 0xd03e040a, 0x030a0096, 0xc9b221fb, 0x0fffa6b1, 0xbc2b0cf4, 0x96b1909a,
|
||||
0x0cf41000, 0x2a68de21, 0xaebc0000, 0x00d03390, 0x3e9ab20a, 0xb20096fb, 0x7e9bb2ba, 0x0a000b7e,
|
||||
0x0a00f81f, 0xf400f804, 0xdcdfe430, 0xf9000005, 0xfeffbf12, 0x99900149, 0xa0a0b220, 0xf0d1b29f,
|
||||
0xedb2ffb4, 0xb40aa0b4, 0x09c40be0, 0xf49ba607, 0x0fc7751b, 0x0149fe2f, 0xa0089990, 0x029eb59d,
|
||||
0xbc019ab5, 0x94bdb89f, 0x90014ffe, 0xf9a014ff, 0xb501fcb5, 0x09c702f1, 0xbcbabf23, 0x0fc7c8f9,
|
||||
0x8a09c785, 0xf0e09f3c, 0x0dc71ff4, 0x05cfbb91, 0xb990d93c, 0xd4f000ee, 0x1fe4f01f, 0xbc0099b9,
|
||||
0x94f0e0ef, 0xbcff0f1f, 0xf9bc909d, 0x05febb95, 0xfd049dbb, 0x99b904fc, 0x04fdbb00, 0xfd049afd,
|
||||
0xb9a0059f, 0x900149fe, 0x9fbf2099, 0x0005dcd9, 0xa699bf00, 0x070bf4f9, 0x003a317e, 0xf41c15fb,
|
||||
0xdcd9f430, 0xf9000005, 0xb299bf82, 0x014ffed1, 0xa02cff90, 0x92dd3ff9, 0x1f0003ff, 0xf0351709,
|
||||
0x02f03501, 0xb6b2f920, 0xa5b2e3b2, 0x1900d433, 0x000528db, 0x7e240c00, 0x09000b7e, 0x200a3209,
|
||||
0x98823e19, 0x30030a00, 0x0cf409d6, 0x0147fe78, 0xb2ffc4c4, 0x90043df8, 0x793e2477, 0x09c40098,
|
||||
0x947bb2ff, 0x040c0292, 0x3da026bc, 0x96d27ed4, 0x1fa43300, 0xc47fbf6b, 0x94a607f9, 0xc75e18f4,
|
||||
0x991223f9, 0x01963001, 0xc7520cf4, 0xe9c42ffe, 0xc8893cff, 0xc78afdc7, 0xd93c85f9, 0xf49c2690,
|
||||
0xe0333b0c, 0xf9c73803, 0x909d3c91, 0x0cf49c26, 0x9052bc2c, 0xa0010010, 0x26193f9f, 0xa108f409,
|
||||
0x49fe1f0a, 0x2c999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0xb23e230b, 0x0d0a0098, 0x0fc439bf,
|
||||
0x0000deff, 0x9efdff00, 0x05f9fd04, 0x823e3fa0, 0x317e0098, 0x85fb003a, 0xa830f40c, 0x0005dcd9,
|
||||
0xbf82f900, 0xf830f499, 0x4ffea7b2, 0x80ff9001, 0xaabff9a0, 0xb00eb1b0, 0xa6c70dc1, 0x01691268,
|
||||
0xf5039630, 0xc7013b0c, 0x96306ca9, 0x310cf50a, 0x0141fe01, 0x900140fe, 0x00905711, 0x10a5b650,
|
||||
0xb4bd1920, 0xe37e0cb2, 0xad330094, 0xbf011d1f, 0x0142fe09, 0x90ff6bc4, 0xb4b65822, 0xbc2ab204,
|
||||
0x6c32b0b9, 0x7eb21db2, 0x0097bf7e, 0x333fa130, 0x00f51fad, 0x080141fe, 0x40119001, 0x1990243d,
|
||||
0x0c1e9008, 0x54bd343d, 0xb00c91b0, 0x0e3e0be1, 0x90b4009a, 0x0c1bb214, 0xbcd43d10, 0x4ab24059,
|
||||
0x0096d27e, 0xc31fad33, 0x9819bf00, 0xffde011f, 0xfde0ffff, 0x1fb5049e, 0x3319a002, 0x3d0a0020,
|
||||
0x99a83e04, 0x0cb0b400, 0xb20bc0b4, 0x8d3e7e1a, 0x321fbf00, 0xffffdea0, 0x09c4e0ff, 0x04fefd1f,
|
||||
0xfd1894b6, 0x19a0059f, 0x1bb24ab2, 0x010d100c, 0x0096d27e, 0x731fa433, 0x0a002033, 0x083e0102,
|
||||
0x0433009a, 0x043d3f1f, 0x0099f53e, 0x98ff09c4, 0x1d98021c, 0x0de0b403, 0x90014ffe, 0xf9bc58ff,
|
||||
0x0e90b4a8, 0x1001e1b0, 0x3b320100, 0xb20091b0, 0x97077e7e, 0x57903400, 0x08f40926, 0x9a083ed2,
|
||||
0x3d19bf00, 0x1f929584, 0x90013310, 0x36261055, 0xff4208f5, 0x80331b0a, 0x243e1100, 0x030a009a,
|
||||
0x009a273e, 0xfe3fa034, 0x99900149, 0xd99fbf80, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xf4003a31,
|
||||
0x85fb0830, 0xf430f458, 0x0005dcdf, 0xbf12f900, 0x0149feff, 0xfe109990, 0x9fa00141, 0x4a0c1190,
|
||||
0x040b00b8, 0x307e1cb2, 0xa433008c, 0x40fe2b1f, 0x00b44a01, 0x0b080090, 0x7e0cb204, 0x33008c30,
|
||||
0xbf161fa4, 0xa60fbf19, 0x0b9cf09f, 0x320196f0, 0x9a973e9a, 0xfea43d00, 0x99900149, 0xd99fbf10,
|
||||
0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0xa9980c15, 0x90afb204, 0x010b59ac, 0x4a2095f0,
|
||||
0xf9b50090, 0x8c307e04, 0xf400f800, 0xdcd99030, 0xf9000005, 0xfe99bf52, 0xff90014f, 0xa0030e84,
|
||||
0x00ad33f9, 0x9cd90105, 0x18000029, 0x99335999, 0x3200f600, 0x014cfeba, 0xcc90b4bd, 0x94e37e20,
|
||||
0x33ae3200, 0x00e31fad, 0x4a0144fe, 0x449000b8, 0xb2040b1c, 0x8c307e4c, 0x33ae3200, 0x00cb1fad,
|
||||
0x4a0140fe, 0x009000b4, 0xb2040b18, 0x8c307e0c, 0x33ae3200, 0x00b31fad, 0x4abf09bf, 0x0bf5a9a6,
|
||||
0xaa9000a6, 0x0140febc, 0x0090010b, 0x7e0cb227, 0x32008c30, 0x1fad33ae, 0x093f0091, 0xb20142fe,
|
||||
0x28229043, 0x45ff94f0, 0x91541000, 0x9baa3e02, 0xe43abf00, 0xbcffff1b, 0xb9a6925a, 0xb2050df4,
|
||||
0x90b0729b, 0xb3f0bcaa, 0x7e2cb200, 0xe4008c30, 0x32ffff0f, 0x1fa433ae, 0x7b39bf51, 0x2fbc0210,
|
||||
0x90f9bc20, 0x0fff94f1, 0x147339a0, 0x49fec700, 0x20999001, 0x99909abf, 0xfe9c3f07, 0x010d014b,
|
||||
0xf028bb90, 0xc4b6ffc4, 0x96d27e02, 0x33ae3200, 0xb2171fa4, 0x00b84a4c, 0xf07e040b, 0xae32008a,
|
||||
0x009be63e, 0x49fe090e, 0x84999001, 0xdcd99fbf, 0xbf000005, 0xa6ea3299, 0x070bf4f9, 0x003a317e,
|
||||
0x987055fb, 0x008f04a9, 0x9ffd3ff0, 0x04a9b505, 0xaeb200f8, 0x0a10bf12, 0x26ee0904, 0x2e0df4f9,
|
||||
0x0a00c433, 0x2d3eea7f, 0xea58009c, 0x00a07301, 0x26ff0918, 0x140bf4b9, 0xffffa9e4, 0xf0059bbb,
|
||||
0x1bf40194, 0xf8090a07, 0xf81f0a00, 0xf830f400, 0x0005dcdf, 0xbf32f900, 0x0149feff, 0x900140fe,
|
||||
0x43fe1499, 0xb29fa001, 0x90b1b2a2, 0x33901300, 0x10ec4a12, 0x0cb2010b, 0x008b707e, 0x741fa433,
|
||||
0xa6300a3f, 0x690cf401, 0x210020b3, 0x94ffa4f0, 0x240b05a9, 0xb202a4b6, 0xa0a9bc2c, 0x10eeaab8,
|
||||
0x8b707e00, 0x1fa43300, 0x0010b34b, 0x0b0a3f23, 0xf01cb204, 0xa994ffa4, 0x02a4b605, 0xb8a0a9bc,
|
||||
0x0010eeaa, 0x008b707e, 0x281fa433, 0x0b10ec4a, 0x7e3cb201, 0x33008b70, 0x3f191fa4, 0x01f6303f,
|
||||
0x3f0e0cf4, 0xf49f2609, 0xf03e8a1b, 0x050a009c, 0x900149fe, 0x9fbf1499, 0x0005dcd9, 0xa699bf00,
|
||||
0x070bf4f9, 0x003a317e, 0xf40835fb, 0xdcdfd830, 0xf9000005, 0xfeffbf22, 0x99900149, 0xa0a13230,
|
||||
0x299cd99f, 0x99980000, 0x0ab2b204, 0x0094f108, 0x360bf440, 0xbd0140fe, 0x0c0090b4, 0x4d7e0ab2,
|
||||
0xa433009c, 0x0ab2251f, 0x010c1b32, 0x009c127e, 0x171fa433, 0x90ff19c4, 0x99bc0299, 0x9009bc90,
|
||||
0x92f0997f, 0xfe29a00f, 0x99900149, 0xd99fbf30, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31,
|
||||
0x30f42825, 0x05dcdfd8, 0x62f90000, 0x49feffbf, 0x40999001, 0x9fa0b2b2, 0x00299cd9, 0x04999800,
|
||||
0xc3b2a6b2, 0x94f1080b, 0x0bf51000, 0xb4bd00e5, 0x900141fe, 0x1ab21c11, 0x009c4d7e, 0xad33ab32,
|
||||
0x0b00d11f, 0x0c1ab2ff, 0x9c127e01, 0x33ab3200, 0x00c01fad, 0x1ab2ff0b, 0x127ec43d, 0xab32009c,
|
||||
0xaf1fad33, 0x01145800, 0x29a094bd, 0x109039a0, 0x72157f04, 0x4da47d4c, 0xe4bd8000, 0x323e0101,
|
||||
0xc9c4009e, 0x200bf401, 0xfd660f7f, 0xbc0a1df4, 0x273ea41e, 0xfd66009e, 0xbc0d1bf4, 0xa9fd941e,
|
||||
0x9e273e05, 0x90df7200, 0xc57601ee, 0x02009001, 0xc473fd72, 0x6ebfd000, 0xc400d3f0, 0xffdfffa9,
|
||||
0xb6ff00ff, 0xeffd1094, 0x00008c04, 0x059efdff, 0xfd049cfd, 0x69a0059d, 0x4ee429bf, 0xafc7ffff,
|
||||
0x10ed94e8, 0xff0094f1, 0xfd059dfd, 0x2fa005f9, 0xffff59e4, 0xff00eeb9, 0x0bf4a4e9, 0xfd39bf15,
|
||||
0x9afd049c, 0xbf39a005, 0x0095f129, 0xfe29a001, 0x99900149, 0xd99fbf40, 0x000005dc, 0xba3299bf,
|
||||
0x0bf4f9a6, 0x3a317e07, 0x2865fb00, 0xdff030f4, 0x000005dc, 0xffbf62f9, 0x900149fe, 0xa1322899,
|
||||
0xb0329fa0, 0xd5b2c432, 0xb630e6b2, 0x120cf504, 0x299cd901, 0x9e980000, 0xffb9c404, 0xc4119990,
|
||||
0x080a1f9f, 0xb905efbb, 0x94f00099, 0x909fbc1f, 0xf9bbff0f, 0x34feff05, 0xe9013db3, 0xfe94bd00,
|
||||
0xff90014f, 0x0142fe20, 0x9001f9b5, 0xf9a01c22, 0x2bb2a4bd, 0x009c4d7e, 0xc91fad33, 0x322ab200,
|
||||
0x7e1b323c, 0x33009c12, 0x00ba1fad, 0x46020033, 0xf4020630, 0x0033100c, 0x0d331a00, 0x3e00a501,
|
||||
0x33009f60, 0x33410300, 0x0098040d, 0x009f963e, 0xf1ff19c4, 0xb8012690, 0x0011369e, 0x009f6c3e,
|
||||
0xf1ff19c4, 0xb8012690, 0x0011469e, 0xa53e100f, 0x19c4009f, 0x2690f1ff, 0xb8040f01, 0x0011569e,
|
||||
0x009fa53e, 0xf1ff19c4, 0x0f012690, 0x5a9eb802, 0xa53e0011, 0x19c4009f, 0x2690f1ff, 0x01004f01,
|
||||
0x115c9eb8, 0x03499400, 0x9cc4040a, 0xf4cfa6f8, 0xc9903218, 0xa6080b08, 0x060df49f, 0xbcb2fcbc,
|
||||
0x40fea0ec, 0x20009001, 0x707e0cb2, 0xa433008b, 0x09bf131f, 0x009859a0, 0x3e60a001, 0x0a009fe1,
|
||||
0x0149fe03, 0xbf289990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x3a317e07, 0x1065fb00, 0xdfe830f4,
|
||||
0x000005dc, 0xffbf52f9, 0x900149fe, 0xa3b22c99, 0x9cd99fa0, 0x98000029, 0xb2b20499, 0x94f1080a,
|
||||
0x0bf52000, 0x40fe00ca, 0x90a4bd01, 0x0bb21800, 0x009c4d7e, 0xb81fad33, 0x0b0ab200, 0x7ec43dff,
|
||||
0x33009c12, 0x00a91fad, 0x7f0141fe, 0x1c119000, 0x0b10dc4a, 0x7e1cb210, 0x33008b70, 0x00911fad,
|
||||
0x15b20b72, 0x04bdc4bd, 0xff04e001, 0x00a0e83e, 0xf401b9c4, 0xc6b0690b, 0x350cf407, 0x5c3c3dbf,
|
||||
0x1f0ec4f8, 0xb9030990, 0xf4f00099, 0x1f94f0ff, 0xbc909ebc, 0x9fff9549, 0x049ebbf4, 0xb904febb,
|
||||
0x9dfd0099, 0x059ffd04, 0xdc3e39a0, 0x2dbf00a0, 0xc4f85c3c, 0x09921f1e, 0x0099b91d, 0xf0fff4f0,
|
||||
0x9ebc1f94, 0x9549bc90, 0xbbf49fff, 0xfebb049e, 0x0099b904, 0xfd049dfd, 0x29a0059f, 0x7601cc90,
|
||||
0x009001b5, 0x04119004, 0x8800b473, 0x900149fe, 0x9fbf2c99, 0x0005dcd9, 0xa699bf00, 0x070bf4f9,
|
||||
0x003a317e, 0xf41855fb, 0xdcdfd430, 0xf9000005, 0xfeffbf22, 0x99900149, 0xfea23234, 0x9fa00141,
|
||||
0x4a0c1190, 0x280b2398, 0x707e1cb2, 0xa433008b, 0x10985d1f, 0xbc19bf01, 0x90a6f290, 0xb01008f4,
|
||||
0x9cf001f6, 0x0196f00b, 0x00a1563e, 0xf9a6e109, 0xf00b9cf0, 0x0b0a0196, 0x33009033, 0x0029b4d9,
|
||||
0x019c9800, 0x4ffe9bbf, 0x0cff9001, 0x4d90f0bc, 0x9235239c, 0x90240e08, 0x94f00109, 0x04fa901f,
|
||||
0x7e01f9b5, 0x7e002136, 0xfe008a84, 0x99900149, 0xd99fbf34, 0x000005dc, 0xf9a699bf, 0x7e070bf4,
|
||||
0xfb003a31, 0x30f42c25, 0x05dcdff8, 0x12f90000, 0x49feffbf, 0x0c999001, 0x9fa0a132, 0x00299cd9,
|
||||
0x049f9800, 0x0089080a, 0xf9fd0100, 0x2a0bf404, 0xbd0140fe, 0x080090a4, 0x4d7e0bb2, 0xa433009c,
|
||||
0x0ab2191f, 0xc43d1b32, 0x009c127e, 0x0b1fa433, 0x7e1f1ac4, 0xfe00a107, 0x99900149, 0xd99fbf0c,
|
||||
0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x30f40815, 0x05dcdff8, 0x12f90000, 0x49feffbf,
|
||||
0x0c999001, 0x9fa0a132, 0x00299cd9, 0x04999800, 0x94f1080a, 0x90738000, 0x40fe2e00, 0x90a4bd01,
|
||||
0x0bb20800, 0x009c4d7e, 0x1c1fa433, 0x1b320ab2, 0x127ec43d, 0xa433009c, 0x1ac40e1f, 0x20a5f01f,
|
||||
0x00a1077e, 0x900149fe, 0x9fbf0c99, 0x0005dcd9, 0xa699bf00, 0x070bf4f9, 0x003a317e, 0xf90815fb,
|
||||
0x06b99552, 0x94b6c4b2, 0xbcd5b203, 0xb0c430a9, 0xa2e03e3f, 0x9831bf00, 0x54b30132, 0x010a1800,
|
||||
0x0cb2b4bd, 0x0039cd7e, 0xfd052bfd, 0xc83e051a, 0x0cb200a2, 0xb4bd010a, 0x0039cd7e, 0xb900b9b9,
|
||||
0x29fd00aa, 0x041afd04, 0xb3014492, 0x900b0040, 0x04b30100, 0x31a0c840, 0xbd0132b5, 0x08339004,
|
||||
0xb50044b3, 0xd4bd51fb, 0x00a27f7e, 0x010d00f8, 0x00a27f7e, 0xbcc400f8, 0x06b5b63f, 0xbc03b4b6,
|
||||
0xab98a0ab, 0x7eaabf01, 0xf0003979, 0x00f801a4, 0xf4bdaeb2, 0xf0b3a43d, 0xef3c0a08, 0xa0a93c98,
|
||||
0xb301ff90, 0xf30080fe, 0x3907a2f0, 0x00f801aa, 0xe9c4ae3f, 0x1b0bf401, 0xff0ef4bd, 0x9098af3c,
|
||||
0x9e2601ff, 0x00c51bf5, 0xf410f4b3, 0x00a40d3e, 0xafbcf4bd, 0x09991890, 0x3301ff90, 0x00ae009d,
|
||||
0xf207f4b3, 0x0c06ad18, 0xf5dc2680, 0x33009e0c, 0x183800e4, 0x9d3301a9, 0x18009300, 0x9d3302a9,
|
||||
0x18008b00, 0x9d3303a9, 0x18008300, 0xa91804af, 0xfff4f005, 0xfd089476, 0x9473059f, 0xdc266f00,
|
||||
0x3e691bf4, 0x1800a402, 0xa91804af, 0xfff4f005, 0xb6ff94f0, 0x9ffd0894, 0x7099cd05, 0x4d009473,
|
||||
0x1201a918, 0x96304199, 0x400cf419, 0x3102a918, 0xf4004096, 0x9631361d, 0x1cf4005a, 0x03a9182f,
|
||||
0x00409631, 0x31251df4, 0xf4005a96, 0xd0331e1c, 0xefc41b00, 0x04f9c4ff, 0xc4151bf4, 0x94b30af9,
|
||||
0xa9180b02, 0x00903307, 0xf8060a08, 0xf8a4bd00, 0x0f12f900, 0xb2b1b202, 0x00a0b3a0, 0xf0a93f22,
|
||||
0x1bf40894, 0xa3107e17, 0x0010b300, 0x181a2006, 0x060f0809, 0x1bf4a926, 0xb2f4bd05, 0xb211fbfa,
|
||||
0xb3020aa9, 0xbf1200c0, 0xb6cdb29a, 0x804c07b4, 0xb7627e00, 0xf400f800, 0xdcdff830, 0xf9000005,
|
||||
0xfeffbf22, 0x99900149, 0xa0a0b210, 0xb3020a9f, 0xbf340000, 0x94943d0a, 0x41fe07b2, 0x902bb201,
|
||||
0x010c0f11, 0x1db21920, 0x00b7797e, 0x1700a4b3, 0x0abf193f, 0x1db22bb2, 0x0cfd94f0, 0x7e192001,
|
||||
0xfe00b762, 0x99900149, 0xd99fbf10, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x30f40825,
|
||||
0x05dcdff8, 0x42f90000, 0x49feffbf, 0x18999001, 0x9fa0a1b2, 0xc0b2b4b2, 0xa0b3d3b2, 0xc0b35600,
|
||||
0xcf185200, 0xfe94bd07, 0x22900142, 0x01ff1014, 0xcf3529a0, 0x7ecab207, 0xb200a310, 0x080a352b,
|
||||
0xb27e1ab2, 0xa4b300a7, 0x2bbf2c00, 0x1ab20cb2, 0x00a43f7e, 0x1e00a4b3, 0x4bb21ab2, 0x00a4577e,
|
||||
0x1200a4b3, 0x0e0030b3, 0x32a022bf, 0x00a5323e, 0x49fe020a, 0x18999001, 0xdcd99fbf, 0xbf000005,
|
||||
0xf4f9a699, 0x317e070b, 0x45fb003a, 0xb202f908, 0x00a0b3c0, 0x00c0b324, 0xb6aabf20, 0x804c07b4,
|
||||
0x7e0db200, 0xb300b779, 0xb21000a4, 0xa3307e0a, 0xa5773e00, 0xfb020a00, 0x00a0b301, 0x00c0b317,
|
||||
0xb2aabf13, 0x07b4b6cd, 0x797e100c, 0x00f800b7, 0x00f8020a, 0xb3b242f9, 0xa2b2c4b2, 0xa0b30200,
|
||||
0xea7e4200, 0x030000a5, 0xa0b3a1b2, 0x3bb23600, 0x1cb22ab2, 0x00a54d7e, 0xa4b3a0b2, 0x1ab21e00,
|
||||
0x117eb4bd, 0xa0b200a4, 0x1000a4b3, 0x0c0040b3, 0xf0061918, 0x49a0ff94, 0x1bb22ab2, 0x00a60c7e,
|
||||
0x41fb0ab2, 0x00f800f8, 0xaeb200f8, 0xb30eaa98, 0xbd0a00a0, 0xa6023ef4, 0x0fea9800, 0x0e00a0b3,
|
||||
0xff90010f, 0xbc94bd0e, 0x00f8f9e9, 0x1a00b0b3, 0xb30ea998, 0x980d0090, 0x94b30fa9, 0x01090c00,
|
||||
0xbc0e9990, 0x00f899ab, 0xa002b998, 0xb5ff09a9, 0xb99801a9, 0x04abb502, 0xb503acb5, 0x00f802a9,
|
||||
0xa0b222f9, 0xd2b2c132, 0xb0b3020a, 0x0cb85e00, 0xbd000140, 0x04c998d4, 0x440090b3, 0x08001433,
|
||||
0x3c0390b3, 0xb93fcf3f, 0x1bf4f926, 0x01cf1832, 0x2601b918, 0x271bf4f9, 0x1802ce18, 0xddbc02bf,
|
||||
0x909dbc90, 0xb80394b6, 0x00014099, 0x269009bc, 0x0b1bf4ef, 0xa4bd29a0, 0x00a6a83e, 0x9001dd90,
|
||||
0xd4b318cc, 0x040ab314, 0xabbf21fb, 0xf009acb2, 0x0bf4b9a6, 0x03aa980d, 0x7e01cbb5, 0xf800b65f,
|
||||
0xb232f900, 0xbdb2b2a1, 0x3ef00304, 0xbf00a6f0, 0x01009019, 0x93a61ab2, 0x0a090df4, 0xa6f73e03,
|
||||
0xf493a600, 0x020a091b, 0x00a6f73e, 0x00a6aa7e, 0x08f402a6, 0xfba4bddd, 0xf830f431, 0x0005dcdf,
|
||||
0xbf82f900, 0x0149feff, 0xb2289990, 0xb29fa0a3, 0x00a9b3b8, 0xb0b30084, 0x47fe7f00, 0x05a49801,
|
||||
0x14bd54bd, 0x779024bd, 0xa7613e24, 0x0c3a9800, 0x02bc94bd, 0xb279a0b0, 0xb65f7e7c, 0x0f79bf00,
|
||||
0xf49fa6ff, 0x643d090b, 0x00a74f3e, 0x90015590, 0x04a60100, 0x33d908f4, 0x90070060, 0x24bc0111,
|
||||
0x03399820, 0x18f429a6, 0xbd01060b, 0xa7523e04, 0xb24bb200, 0x16fc7e1a, 0xf45aa600, 0x1190060d,
|
||||
0x06399801, 0x19a6f43d, 0x0f050cf4, 0xbd8f2001, 0xa7973ea4, 0xfe020a00, 0x99900149, 0xd99fbf28,
|
||||
0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x30f40885, 0x05dcdff0, 0x82f90000, 0x49feffbf,
|
||||
0x30999001, 0xa00147fe, 0x08a9989f, 0xb1b0a6b2, 0xb0f10509, 0x843d0a91, 0x779090b2, 0x0369982c,
|
||||
0x7fa0f4bd, 0x08f409a6, 0x0804bd07, 0x0a90b401, 0x1bf409a6, 0x00803335, 0xa85a3e32, 0x0c6a9800,
|
||||
0xb24010bc, 0x7e4bb27c, 0xbf00b65f, 0xa6ff0f79, 0x0f1bf49f, 0x09012290, 0xf439a6f1, 0x43b2051b,
|
||||
0x3e011190, 0xbd00a82d, 0xbdf10314, 0x05699824, 0x08f419a6, 0x0020b3cb, 0xf429a61e, 0x60b50f18,
|
||||
0x09f0b408, 0x6b3ef3a0, 0xf10f00a8, 0x1bf45fa6, 0xbc05b205, 0xdd3e0009, 0x1a0a00a7, 0x59a6f109,
|
||||
0xb50d0bf4, 0x90b40865, 0xbd95a009, 0x0149fea4, 0xbf309990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6,
|
||||
0x3a317e07, 0x1085fb00, 0xd9f830f4, 0x000005dc, 0x99bf82f9, 0x90014ffe, 0xa3b228ff, 0xb4b2f9a0,
|
||||
0xc033d0b2, 0xdab20e00, 0x140cb43d, 0x00b7907e, 0xbd0142fe, 0x24229014, 0xff07fe08, 0xfb05fc06,
|
||||
0x00a93a3e, 0xbd0c3a98, 0xb014bc94, 0x2cb229a0, 0x00b65f7e, 0xf00f29bf, 0x0df49fa6, 0xa6fd0f56,
|
||||
0x110cf49f, 0x18f496a6, 0xf495a630, 0x093e451b, 0x98a600a9, 0xa62f0bf4, 0x371bf497, 0x90010998,
|
||||
0x09b50199, 0xa9373e01, 0x04099800, 0xb5019990, 0x373e0409, 0x099800a9, 0x01999002, 0x3e0209b5,
|
||||
0x9800a937, 0x99900309, 0x0309b501, 0x00a9373e, 0x999009bf, 0x9009a001, 0x39980111, 0xf419a605,
|
||||
0x49fe8508, 0x28999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x85fb003a, 0xf830f408,
|
||||
0x0005dcdf, 0xb222f900, 0xb2ffbfa1, 0x03aa98b2, 0x49fe1bbf, 0x10999001, 0xa00140fe, 0x0c00909f,
|
||||
0x5f7e0cb2, 0x0cbf00b6, 0xb2031a98, 0xb6767e2b, 0x011b9800, 0xb9a6ff09, 0x98101bf4, 0x12b50419,
|
||||
0x0292b502, 0x00a9b13e, 0xb2031a98, 0xb6767e2c, 0x031a9800, 0xfd0c1bbf, 0x00b6767e, 0x900149fe,
|
||||
0x12a01099, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x25fb003a, 0xc830f408, 0x0005dcdf,
|
||||
0xbf82f900, 0xf830f4ff, 0x900149fe, 0x9fa06099, 0x18049992, 0xf4bd1cae, 0xa9989fa0, 0x0aa2b205,
|
||||
0x0b91b005, 0x1a00e933, 0x0c2b9802, 0xfe092c98, 0xf100014a, 0xfe44aa90, 0xa6b20144, 0x8b7e2001,
|
||||
0x05b200b6, 0x4490a3b2, 0xaa723e30, 0x08299800, 0x0bf439a6, 0xb22ab231, 0xb2010c3b, 0xa8887e4d,
|
||||
0x04499800, 0x1f0094b3, 0xb3034998, 0x98180094, 0x94b30249, 0x49bf3b00, 0x18f491a6, 0x3e30b209,
|
||||
0xb200aa65, 0x0bb0b419, 0x6ab291b2, 0x00b6a47e, 0x35a6a3b2, 0x0ab91bf4, 0xf503a603, 0xb301a30b,
|
||||
0xb20c0014, 0x3e743d03, 0xb200aa8f, 0x94010703, 0x54bd0738, 0x9b3e86b2, 0x2a9800ab, 0xbce4bd0c,
|
||||
0x4cfe1053, 0x16e1b001, 0xb258cc90, 0xb65f7e1b, 0x00adb300, 0x90b400f3, 0xa6f00f16, 0xd80cf59f,
|
||||
0xb294bd00, 0x1591b02a, 0x00a5ea7e, 0xa9b3a4b2, 0xbf00d600, 0x4c6bb22a, 0x4db20080, 0x00b7797e,
|
||||
0xadb3a0b2, 0xb200a700, 0xb21bb22a, 0x014dfe4c, 0x7e50dd90, 0xb200a4be, 0x00adb3a0, 0x2ab20090,
|
||||
0x0c014b90, 0x014dfe01, 0x7e54dd90, 0xb200a640, 0x00a4b3a0, 0x15b0b478, 0xfe0c2c98, 0xaa90014a,
|
||||
0xa6287e30, 0x0c90b400, 0x1bf491a6, 0x14b0b41e, 0x90014afe, 0x5d7e30aa, 0x90b400a9, 0x059f9815,
|
||||
0x2300f4b3, 0x00ab893e, 0x9ea6ef0e, 0x00090df4, 0xab893e03, 0x014afe00, 0x7e30aa90, 0x3e00a6aa,
|
||||
0x9800ab25, 0xe0b402f9, 0xf491a614, 0xfeb5061b, 0xa6f9bf02, 0x091bf491, 0x893efea0, 0xf99800ab,
|
||||
0xf491a601, 0xfeb5061b, 0xb24bb201, 0xa60c7e2a, 0x0004b300, 0x01559013, 0x98806690, 0x59a60529,
|
||||
0xfefa08f5, 0x46007033, 0xb2042f98, 0xb2e4bd8d, 0x00f1b02a, 0x70dc020b, 0xfe000000, 0x11900141,
|
||||
0x0111b05c, 0x00a5e47e, 0xbf042c98, 0x048bb22a, 0xb74b7efb, 0x981ebf00, 0xa0b2042c, 0x2ab2b4bd,
|
||||
0xe67e0db2, 0x04b300a5, 0xff040600, 0x013e04bd, 0x2a9800ac, 0xb003bc0c, 0x00904cb2, 0xb6767e01,
|
||||
0x0b90b400, 0x08f409a6, 0x032f98ec, 0xb59039bc, 0x9fa60929, 0xbd0808f4, 0x0929b594, 0x49fea4bd,
|
||||
0x60999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x30f4003a, 0x3885fb08, 0xd9cc30f4,
|
||||
0x000005dc, 0x99bf82f9, 0xfef830f4, 0xff90014f, 0xb0f9a05c, 0xc8b20be1, 0xa3b2d6b2, 0x8400b9b3,
|
||||
0x00e9b302, 0xaf18027f, 0x0141fe2c, 0x119094bd, 0x0019a054, 0x00f93303, 0xc43d026d, 0x407e1db2,
|
||||
0xa0b200a6, 0x5e00adb3, 0xbc17bf02, 0x7998f068, 0xf59fa601, 0x98024d08, 0x94b30479, 0x05000a01,
|
||||
0x00aee23e, 0x3e0069b3, 0x027f9802, 0xf9a6f009, 0x022a0bf5, 0xea7e3ab2, 0xa2b200a5, 0x1e00a9b3,
|
||||
0x0c3c9802, 0x40fe7bb2, 0x34009001, 0x287e0ab2, 0x0ab200a6, 0xcc0570b5, 0xc17e708b, 0xa0b200a6,
|
||||
0xe900adb3, 0x0d00b401, 0x01a6f001, 0x01ce0bf5, 0x01d00cf5, 0x804cb43d, 0x7e2ab200, 0xbf00b790,
|
||||
0x070b943a, 0xb200804c, 0xb7797e2d, 0x0ca1b000, 0xb600adb3, 0x05291801, 0x76042f18, 0xf4f00894,
|
||||
0xe59fffff, 0xe966ff09, 0x01980bf5, 0xffffe9e4, 0x08f589a6, 0xf4bd018e, 0x18902fbc, 0x9d330999,
|
||||
0x90018200, 0xf4b301ff, 0xfc3ef207, 0x8e3c00ae, 0xf59f26f2, 0xc4016d08, 0x94f0fffd, 0x529dbcff,
|
||||
0x0df456a6, 0x9065b205, 0xa43d10d9, 0x3db029bc, 0x3ee4bdc4, 0xb100ada7, 0xf5006fd6, 0xb401450c,
|
||||
0xbe3c0b10, 0xf81e3c98, 0x0bf4f926, 0xff94f017, 0xfd009939, 0x9033049f, 0x010a0600, 0x0ce9bf3c,
|
||||
0x01ee9001, 0xa601dd90, 0xce08f4e5, 0xed00c933, 0xf0293f00, 0x0bf40894, 0x00a93308, 0x94bd00d0,
|
||||
0x91b03ab2, 0x1391b014, 0x301291b0, 0x4bfe5b91, 0x5bbb9001, 0x00a6f97e, 0xadb3a0b2, 0x3400ef00,
|
||||
0x90335b90, 0x3ab21100, 0x00a9d97e, 0xadb3a0b2, 0xb400db00, 0x40b40d00, 0x014ffe11, 0xb250ff90,
|
||||
0x070d942e, 0x4101f1b0, 0x3ab20080, 0x4cb2010b, 0x7e0011b0, 0xb200a5e4, 0xb22cb20b, 0x014dfe3a,
|
||||
0x7e4cdd90, 0xb400a4be, 0xa0b214e0, 0x3ab21cb2, 0x0db2b4bd, 0x00a5e67e, 0x91000db3, 0x13b0b400,
|
||||
0x90014afe, 0x5d7e34aa, 0x3a9800a9, 0x0db0b40c, 0x90014cfe, 0x5f7e48cc, 0xa0b200b6, 0x6d00a4b3,
|
||||
0x011290b4, 0xf491a6f0, 0x4e98321b, 0x70efcd01, 0x0600f4b3, 0x2918700f, 0xff94f006, 0xbb909ebc,
|
||||
0x49b5029f, 0xae993e01, 0xb20bb200, 0x7e2cb23a, 0xb200a43f, 0x00a4b3a0, 0x0265bb34, 0x90014afe,
|
||||
0xaa7e34aa, 0x60b300a6, 0x90b42000, 0x8085bc0b, 0xb09095bc, 0xe53e0b91, 0x020000ac, 0x00aec93e,
|
||||
0xc93e0300, 0x00b400ae, 0xb23ab20c, 0xa60c7e2b, 0xb594bd00, 0xe23e0579, 0x030000ae, 0x00aee23e,
|
||||
0x49fe0200, 0x5c999001, 0xdcd99fbf, 0xbf000005, 0xa60ab299, 0x170bf4f9, 0x00af083e, 0x33062918,
|
||||
0xfe4f009d, 0x00aec03e, 0x003a317e, 0xfb0830f4, 0x30f43485, 0x05dcdfdc, 0x82f90000, 0x30f4ffbf,
|
||||
0x0149fef8, 0xa04c9990, 0x0bb1b09f, 0xd4b2c2b2, 0xa5b2e6b2, 0x1700b9b3, 0x00e9b301, 0x94bd0112,
|
||||
0x3d0141fe, 0x481190c4, 0x1db219a0, 0x00a6407e, 0xadb3a0b2, 0xbf00fb00, 0xf042bc19, 0xa6019998,
|
||||
0xea08f59f, 0x005ab200, 0xa5ea7e03, 0xb3a3b200, 0x00de00a9, 0x5c981bbf, 0x0140fe0c, 0xb2300090,
|
||||
0xa6287e0a, 0xcc0ab200, 0xc17e702b, 0xa8b200a6, 0xad00adb3, 0x7021cd00, 0x420147fe, 0x77900080,
|
||||
0xb0383e44, 0x0c00b400, 0x79a094bd, 0x09a6f009, 0x00091bf4, 0xb03f3e02, 0xa6f00900, 0x090df409,
|
||||
0x3f3e0300, 0xc0b400b0, 0x0704b60b, 0x0db2e4bd, 0xb4bd5ab2, 0xb00021b0, 0xe47e0171, 0x5abf00a5,
|
||||
0x2cb20bb2, 0x797e3db2, 0x7ebf00b7, 0x3bb2a0b2, 0x2cb25ab2, 0xe67e0db2, 0x04b300a5, 0x3ab24500,
|
||||
0x117eb4bd, 0xa0b200a4, 0x3700a4b3, 0x01bb7000, 0xf404a602, 0x40b2050d, 0xb2101b90, 0xb03bbc6a,
|
||||
0x997e0cb2, 0x4afe00b7, 0x0240bb01, 0xbc30aa90, 0xaa7e6060, 0x14bd00a6, 0x6d004db3, 0xb280b2ff,
|
||||
0x7e3bb25a, 0x3e00a60c, 0x0000b04d, 0x0149fe02, 0xbf4c9990, 0x05dcd99f, 0x99bf0000, 0xf9a60ab2,
|
||||
0x7e070bf4, 0xf4003a31, 0x85fb0830, 0xf830f424, 0x0005dcd9, 0xbf32f900, 0x014ffe99, 0xb214ff90,
|
||||
0xbdf9a0a1, 0xb2b2b294, 0x0140fec3, 0x9003204b, 0x09a01000, 0x9f7e0ab2, 0x09bf00b7, 0x4c0090b3,
|
||||
0x4800a4b3, 0x09bf91a0, 0xbf0192b5, 0x1000490f, 0xbf04f9b5, 0xb520090f, 0x09bf05f9, 0xbf0693b5,
|
||||
0x3501090f, 0x09bf1cf9, 0xbf2c9a35, 0xb5f0090f, 0x0fbf0af9, 0xb540f990, 0x0fbf0ef9, 0xb5c0f990,
|
||||
0x0abf0ff9, 0x00b0ea3e, 0x49fea4bd, 0x14999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b,
|
||||
0x35fb003a, 0xd030f408, 0x0005dcdf, 0xbf82f900, 0x0149feff, 0xb2509990, 0x059fa0a3, 0x00a9b302,
|
||||
0xb63004fb, 0x0b9cf000, 0xbd2ca935, 0x0ca9b594, 0x00a5ea7e, 0x3abfa0b2, 0x804cb4bd, 0x7e0db200,
|
||||
0xb200b779, 0x00adb3a5, 0x093f04b1, 0xa24a9d33, 0x01091804, 0x9a469d33, 0x02091804, 0x92469d33,
|
||||
0x03091804, 0x8a539d33, 0x040e1804, 0x18050918, 0x0d18060f, 0xffe4f007, 0xf0ff94f0, 0x94b6fff4,
|
||||
0x10f4b608, 0xb6059efd, 0xf9fd18d4, 0x05dffd05, 0x045e0bf5, 0xd6b00505, 0x5d0cf503, 0x013db504,
|
||||
0x0e01d4b3, 0xb5500049, 0xd83e0239, 0x0d1800b1, 0x09091808, 0x180a0f18, 0xd4f00b0e, 0xff94f0ff,
|
||||
0xb6fff4f0, 0xf4b60894, 0x059dfd10, 0xfd18e4b6, 0xeffd05f9, 0x023eb505, 0x0bb23ab2, 0x00a60c7e,
|
||||
0x09023a98, 0xf4a9a6ff, 0x04bd091b, 0x00b5ee3e, 0x9007a5b6, 0x3ab5303b, 0xb6d27e03, 0xb3a5b200,
|
||||
0x03f500ad, 0x09033b98, 0x343a90c0, 0xfd3fbb90, 0xb5b604b9, 0xb79f7e03, 0xb3a5b200, 0x03d900ad,
|
||||
0xfe0147fe, 0x77900148, 0x9044bd40, 0x88900179, 0x0991b03c, 0x00b3483e, 0x8ea0e4bd, 0x0f0044b3,
|
||||
0xbd0c3a98, 0x3efe0cb4, 0xb200b26b, 0xb24bb23a, 0xa5797e7c, 0xb3a5b200, 0x039d00ad, 0x94f0793f,
|
||||
0x120bf401, 0xb20c3a98, 0x7eff0c4b, 0x3e00b676, 0xb200b345, 0xa3307e7a, 0x00a0b300, 0x0c3a980f,
|
||||
0xfd0c4bb2, 0x00b26b3e, 0x94f0793f, 0x0e1bf402, 0xb20c3a98, 0x3efd0c4b, 0xb400b33a, 0x3ab209b0,
|
||||
0x8db2010c, 0x00a6407e, 0x5d00a0b3, 0x3fb2793f, 0x99c724bd, 0x01999002, 0x980a91b0, 0x54b354f5,
|
||||
0xb0b43900, 0x0022bc09, 0x02bc030c, 0x0304b600, 0x014001b8, 0x1031bc00, 0x997e1ab2, 0x30bc00b7,
|
||||
0x4309b800, 0x95200001, 0xb45302b5, 0x0fb50af0, 0x3e81a054, 0x9000b305, 0xff900122, 0x1424b318,
|
||||
0xb6323ebe, 0x3f8ebf00, 0x027f5879, 0x98077d18, 0x3a9803ee, 0x0299c70d, 0xcc00f3f0, 0x96cb70ff,
|
||||
0xcb4bb21f, 0x010cd8e6, 0xebf0d6cb, 0x7e01e0f6, 0x9800a2e6, 0x4bb20c3a, 0x767e6cb2, 0xa5b200b6,
|
||||
0xb400adb3, 0x01449002, 0xa6033b98, 0xeb08f54b, 0xbc94bdfe, 0x89a0b0bb, 0xb57e8ab2, 0xa5b200b7,
|
||||
0x9400adb3, 0xbd37b202, 0x547f9884, 0xbc9088bc, 0x94b69098, 0x4099b803, 0x39bc0001, 0x0b91b090,
|
||||
0x5300f9b3, 0x033c9802, 0x3d0fa0b4, 0xbc24bdb4, 0x44bdc0cc, 0x00b7907e, 0x3e0f60b4, 0x9800b463,
|
||||
0x2bb20d3a, 0x7e0c41b0, 0x3300a2f6, 0x00b500a9, 0xfe0c3a98, 0x2bb2014c, 0x7e38cc90, 0xb300b65f,
|
||||
0x020c00ad, 0xb40be0b4, 0xef980e90, 0xd899c703, 0x1bf59fa6, 0x3a98008e, 0x0c2bb20d, 0xa2ee7e01,
|
||||
0x014cfe00, 0x2bb23ab2, 0x7e30cc90, 0xb300a594, 0x981306a4, 0x2bb20c3a, 0x767efd0c, 0x603e00b6,
|
||||
0xadb300b4, 0x7401cb00, 0x93f01c90, 0x9099bc00, 0x7f0069bc, 0xff19e401, 0x091bf4ff, 0x603e0260,
|
||||
0x3a9800b4, 0x014cfe0c, 0xffff1be4, 0x7e34cc90, 0xb300b65f, 0x019800ad, 0x343af034, 0xf9263690,
|
||||
0x60100df4, 0xff1be402, 0x0c3a98ff, 0x00b4553e, 0xb20c3a98, 0x7efd0c2b, 0xb300b676, 0x017000ad,
|
||||
0x98012290, 0x2aa6033a, 0xff3708f5, 0x6eb264b2, 0xd43db43d, 0xc4bdf4bd, 0x00b4973e, 0x9473e97f,
|
||||
0x010d0a00, 0x00b4913e, 0x0600d033, 0xcc90010b, 0x01ff9001, 0xa602ee90, 0xe308f4fa, 0x0b00c4b3,
|
||||
0x3e547cb5, 0x3300b5d3, 0x00a600b9, 0xb0013998, 0x0cf40296, 0xb2030930, 0x5479b56d, 0xf4bde4bd,
|
||||
0x00b4d63e, 0x9073d97f, 0x697c0a00, 0x01ee90e9, 0x9001ff90, 0x399802dd, 0xf4f9a603, 0x4d3ee908,
|
||||
0x94bd00b5, 0x79b5f101, 0xb224bd54, 0xb5273e1b, 0xe4407f00, 0xf4ffff09, 0xf10f260b, 0x1bf4bfa6,
|
||||
0xff0be40b, 0xb51f3eff, 0x0c3a9800, 0xffff0ce4, 0x00b6767e, 0xb900adb3, 0xff0be400, 0x9019b2ff,
|
||||
0x44900122, 0x9891b202, 0x29a60339, 0x09c508f4, 0xf5b9a6f1, 0x9800a00b, 0x3c980c3a, 0xb6767e0a,
|
||||
0x00adb300, 0x31b5008c, 0xb5d33e0a, 0xbd6f7f00, 0x01c19294, 0xf05179b5, 0x04bd00f3, 0x3e527fb5,
|
||||
0x7f00b58b, 0x014c584b, 0x900c3a98, 0xb3f00100, 0x00c3f000, 0x7e024490, 0xb300b676, 0xb45200a4,
|
||||
0xe9980be0, 0x70999001, 0xa601e9b5, 0xd608f401, 0x9808607c, 0xf00c0c3a, 0xffff0be4, 0x00b6767e,
|
||||
0x2d00a4b3, 0xe4014cfe, 0xb2ffff0b, 0x40cc903a, 0x00a5797e, 0x1900a4b3, 0x98469034, 0x94f0517f,
|
||||
0xf0f9bcff, 0x3e517fb5, 0x0a00b5d3, 0x3ea5b203, 0x9000b5de, 0x77900188, 0x148db318, 0x49fefd90,
|
||||
0x3c999001, 0x497e9abf, 0xf43e00b7, 0x030500b5, 0x00b5f63e, 0x0bb204bd, 0x0c7e3ab2, 0x50b300a6,
|
||||
0x3a981a00, 0x7e04bd0c, 0x9800b6c8, 0x30b50d3a, 0xb7497e0c, 0x0d30b500, 0x900149fe, 0x9fbf5099,
|
||||
0x0005dcd9, 0xb299bf00, 0xf4f9a65a, 0x383e110b, 0x010500b6, 0x00b5f43e, 0x003a317e, 0xf93085fb,
|
||||
0x7ea0b202, 0x9800a5e8, 0xc87e0c0a, 0x0a9800b6, 0xb7497e0d, 0x7e0ab200, 0xbd00b749, 0xbf01fba4,
|
||||
0x0aafb2a9, 0xf4b9a602, 0xb9900d18, 0x98f9bc01, 0xc9a0a4bd, 0xa9bf00f8, 0x020aafb2, 0x18f4b9a6,
|
||||
0x01b9900b, 0xfcbca4bd, 0xbf00f899, 0xb2afb2b9, 0xf4c9a6ca, 0xf10a0708, 0xfbb500f8, 0xb5fca002,
|
||||
0x00f801fc, 0xaf98a9bf, 0x90b9bc02, 0xfbbfa9a0, 0x08f49ba6, 0x029bbb08, 0xa998a9a0, 0xa6aabf01,
|
||||
0x051bf4a9, 0x00f8f10a, 0x0800a0b3, 0x00b7497e, 0x30f400f8, 0x05dcdff8, 0x32f90000, 0x49feffbf,
|
||||
0x14999001, 0x9fa0a0b2, 0xa0b3b3b2, 0xfd024200, 0x0cf4a2a6, 0x01ab903a, 0xb60141fe, 0x119002b4,
|
||||
0x7e1ab210, 0xb300b7b5, 0xbf2700a4, 0xb21db219, 0xa0e4bd2c, 0x90dfbf90, 0x9eb201e9, 0xa699fcbc,
|
||||
0xf408f490, 0x3da0ddbf, 0x00b72e3e, 0x49fe020a, 0x14999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699,
|
||||
0x317e070b, 0x35fb003a, 0xda00f808, 0x00002944, 0x0041c77e, 0xf000a630, 0xa6f00bac, 0x01aab901,
|
||||
0x44da00f8, 0x7e000029, 0x30004142, 0xacf000a6, 0x01a6f00b, 0xf801aab9, 0x2944da00, 0xd77e0000,
|
||||
0xa6300042, 0x0bacf000, 0xb901a6f0, 0x00f801aa, 0x7effb4f0, 0xf8000b94, 0x0b7e7e00, 0xf900f800,
|
||||
0x3da0b202, 0x384c7ea4, 0x00a6b000, 0xa00b9cf0, 0xfb9ab20a, 0xb202f901, 0x7ea43da0, 0xb000382a,
|
||||
0x9cf000a6, 0xb20aa00b, 0xf401fb9a, 0xdcdfe430, 0xf9000005, 0xfeffbf82, 0x45fe0149, 0x3c999001,
|
||||
0xa00147fe, 0x2455909f, 0xd9347790, 0x0000141c, 0x4bfe9abf, 0x90080c01, 0xff0d2cbb, 0x0000c17e,
|
||||
0xeb00a433, 0x3f0c30b4, 0x0c943339, 0x043118e2, 0x0f001033, 0xb0011933, 0x3e043d00, 0x9800b971,
|
||||
0x2cd9023f, 0x98000014, 0x34580431, 0x3f5fa00a, 0x0339989f, 0xb5183690, 0xff090159, 0xf43379a0,
|
||||
0xf77e1800, 0xa0320032, 0x2900ad33, 0xdf010901, 0x0000142c, 0x1272f920, 0xbd0043f0, 0xb8b13e14,
|
||||
0x0241bc00, 0x010006b1, 0x40060df4, 0x947e0100, 0x24d9000b, 0xbf000014, 0xff2ce49a, 0xb26bb2ff,
|
||||
0x1300de0d, 0x127e0000, 0x7aa000af, 0xd400adb3, 0x985bbf00, 0x1d90015c, 0x7c0eb204, 0x10bc2020,
|
||||
0x1300da10, 0x367e0000, 0xa0320021, 0xc500ad33, 0x4cb4bd00, 0x00da0100, 0xa6000013, 0xa408f414,
|
||||
0x00b9603e, 0xd9023f98, 0x0000142c, 0x58043498, 0x5fa00a32, 0x39989f3f, 0x18389003, 0x090159b5,
|
||||
0x3379a0ff, 0x7e1600f4, 0x320032f7, 0x00ad33a0, 0x2cdf0084, 0x20000014, 0xff26e4f1, 0x3e24bdff,
|
||||
0xbc00b951, 0x16b11262, 0x0df40100, 0x01004106, 0x000b947e, 0x5c985bbf, 0x042d9001, 0x00da1eb2,
|
||||
0x7e000013, 0xe40020d0, 0xbcffff4c, 0xa0322021, 0x1db28bb2, 0x001300de, 0x40417c00, 0x3500a433,
|
||||
0x001424d9, 0x7e9abf00, 0xa000ac3c, 0x00a4b37a, 0x4cb4bd13, 0x00da0100, 0xa6000013, 0xa608f426,
|
||||
0x5c985bbf, 0xbd7ab201, 0x7e040ed4, 0x32002136, 0x2db034a0, 0x817e3ab2, 0x0d33000f, 0x30fe7100,
|
||||
0x020f3a01, 0x1838f130, 0x04090333, 0x30014afe, 0x31303991, 0x90b4bd3b, 0x717e38aa, 0xeb3e000f,
|
||||
0x02f900b7, 0x002930d9, 0xbfa0b200, 0x7e640b9a, 0x090000de, 0x00a43310, 0xa6008961, 0x009fcf02,
|
||||
0x1000f5f1, 0x8a009ff6, 0x4b02a600, 0xc4bd1000, 0xbd27104d, 0x198b7ee4, 0x00a43300, 0x2930d915,
|
||||
0x9abf0000, 0x00009b7e, 0x163e0409, 0x0ab200ba, 0x7e03e84b, 0x890016fc, 0xb802a400, 0x000200aa,
|
||||
0x920aa5b6, 0x9af601aa, 0x01114f00, 0x020099b8, 0x009ff600, 0x9a32943d, 0x000001fb, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
@ -2269,8 +2269,8 @@ const NvU32 soe_ucode_data_lr10_dbg[] = {
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0xb32dc4cc, 0x58018cca, 0x7c52cad0, 0x4a5277fe, 0xb22438cf, 0xcfd90bc8, 0xf23ebc55, 0x2e5c0e40,
|
||||
0x705ea2e7, 0x0577e70f, 0xcf75f41f, 0xfe6e071a, 0x0d4a5d7d, 0x9c31ffb3, 0x95bc604f, 0x40cc834d,
|
||||
0xb32dc4cc, 0x58018cca, 0x7c52cad0, 0x4a5277fe, 0x59305452, 0xfe64d88a, 0xe474c23b, 0xfee62bd9,
|
||||
0x705ea2e7, 0x0577e70f, 0xcf75f41f, 0xfe6e071a, 0xd0954f7e, 0x7caea789, 0x40b32eb9, 0x80368ac3,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
|
@ -443,19 +443,19 @@ const NvU32 soe_ucode_data_lr10_prd[] = {
|
||||
0x0032b13e, 0xb53e3505, 0x02050032, 0x0032b53e, 0x003a317e, 0xf42885fb, 0xdcdff430, 0xf9000005,
|
||||
0xfeffbf22, 0x99900149, 0x0142fe14, 0x94bd9fa0, 0xa00c2290, 0x3da37e29, 0x00a03300, 0xda040b56,
|
||||
0x00002944, 0x2db2bcb2, 0x0042d77e, 0xa433a032, 0x41fe4300, 0x10119001, 0x8e7e1ab2, 0xa0320033,
|
||||
0x3100a433, 0x2bbf1cbf, 0x24d1a4bd, 0x7e000014, 0xa000b06c, 0x00a0b31a, 0x7eb43d1a, 0xb300b104,
|
||||
0xbf1200a0, 0x7eff001a, 0x3e00b63b, 0x00003371, 0x0149feff, 0xbf149990, 0x05dcd99f, 0x99bf0000,
|
||||
0x3100a433, 0x2bbf1cbf, 0x24d1a4bd, 0x7e000014, 0xa000b06d, 0x00a0b31a, 0x7eb43d1a, 0xb300b105,
|
||||
0xbf1200a0, 0x7eff001a, 0x3e00b63f, 0x00003371, 0x0149feff, 0xbf149990, 0x05dcd99f, 0x99bf0000,
|
||||
0xf9a60a32, 0x7e070bf4, 0xfb003a31, 0x0e090c25, 0xa43da9a0, 0x30f400f8, 0x05dcdfd8, 0x62f90000,
|
||||
0x30f4ffbf, 0x0149fef4, 0xa04c9990, 0xb2a93f9f, 0x01a398a6, 0x0d019033, 0x60489d33, 0x35a33e03,
|
||||
0x04301800, 0x1b010d33, 0x03329801, 0x3d043198, 0x10dc4ba4, 0xd501004c, 0x00000644, 0x0038327e,
|
||||
0xa4b35aa0, 0x02f80c00, 0x1a3e0501, 0x49fe0037, 0x28999001, 0x00299cd4, 0xb51cb200, 0x91b50741,
|
||||
0x352bb201, 0x42b51540, 0xbd92a006, 0x10dc4ed4, 0x0020d07e, 0xad33a132, 0xbf015900, 0x33993f59,
|
||||
0x980d0090, 0x95f00149, 0x0149b508, 0x000644d9, 0x1899bf00, 0x90336999, 0x9cdf1300, 0x98000029,
|
||||
0x95f101f9, 0xf9b54000, 0x299cda01, 0x027e0000, 0x3098009c, 0x01027e02, 0x8aa3d900, 0xacb20000,
|
||||
0x95f101f9, 0xf9b54000, 0x299cda01, 0x037e0000, 0x3098009c, 0x01027e02, 0x8aa3d900, 0xacb20000,
|
||||
0xb20091b0, 0xbdb4bd0d, 0x2e70da04, 0x01b00000, 0x08013001, 0xc87e010e, 0x9cd90013, 0xdf000029,
|
||||
0x1e000000, 0xfe509035, 0x99900149, 0x0142fe34, 0x22909fa0, 0xb2010a38, 0x94ee7e2b, 0x1fa43300,
|
||||
0xc42bbf1b, 0x1bf401b9, 0x01b5f014, 0x2ba0010a, 0x0095097e, 0x061fa033, 0xb4bd09f8, 0x097e020a,
|
||||
0x9cda0095, 0x7e000029, 0xfe009ab1, 0xb4bd014a, 0x010dc4bd, 0x7e34aa90, 0x3e0075b0, 0x33003574,
|
||||
0x1e000000, 0xfe509035, 0x99900149, 0x0142fe34, 0x22909fa0, 0xb2010a38, 0x94ef7e2b, 0x1fa43300,
|
||||
0xc42bbf1b, 0x1bf401b9, 0x01b5f014, 0x2ba0010a, 0x00950a7e, 0x061fa033, 0xb4bd09f8, 0x0a7e020a,
|
||||
0x9cda0095, 0x7e000029, 0xfe009ab2, 0xb4bd014a, 0x010dc4bd, 0x7e34aa90, 0x3e0075b0, 0x33003574,
|
||||
0xd9320204, 0x00000644, 0xa0b39abf, 0xb4d97f00, 0x98000029, 0x9bbf019c, 0x9cd9f43d, 0xbd000029,
|
||||
0x159f35d4, 0x7e10dc4e, 0x320020d0, 0x356f3ea1, 0x030d3300, 0x0e7e0207, 0x39180001, 0x00903308,
|
||||
0x033e9824, 0x002a3cd9, 0x2a44df00, 0x9ea00000, 0xb5043e98, 0x3998019e, 0x98f9a005, 0xfeb5063e,
|
||||
@ -464,7 +464,7 @@ const NvU32 soe_ucode_data_lr10_prd[] = {
|
||||
0xff90014f, 0x3df92048, 0x02f93594, 0x09033318, 0xb2b4bd04, 0x03f335fa, 0x7e01f935, 0x3e000f71,
|
||||
0xfe00371a, 0x41fe0140, 0x44009001, 0xfe401190, 0x0ab20142, 0xb23c2290, 0x3d2cb21b, 0x75b07ed4,
|
||||
0x02399800, 0x010a0fbf, 0x1bf4f9a6, 0x0524de3c, 0xe93f0000, 0x0e009033, 0x1e0a943d, 0x063ee920,
|
||||
0xffd90036, 0xff200000, 0x94b394f9, 0x0ab2121c, 0x2cb21bb2, 0x0098b87e, 0x0036063e, 0x1bb20ab2,
|
||||
0xffd90036, 0xff200000, 0x94b394f9, 0x0ab2121c, 0x2cb21bb2, 0x0098b97e, 0x0036063e, 0x1bb20ab2,
|
||||
0x3e7e2cb2, 0x4bfe008d, 0x44bb9001, 0xa9c4bebf, 0xffffdf1f, 0x94b6e0ff, 0x04effd18, 0xa0e59eff,
|
||||
0x0000d9be, 0xe9ff4000, 0x6b0bf494, 0x681fa433, 0x900149fe, 0x9dbf4099, 0xbf049992, 0x1ee4339c,
|
||||
0x0003df42, 0xff89ff00, 0xefff3fff, 0x94d9fff4, 0xff0294b6, 0xc0b3e5f9, 0xe9c50b00, 0x36703e03,
|
||||
@ -646,7 +646,7 @@ const NvU32 soe_ucode_data_lr10_prd[] = {
|
||||
0x01b024a1, 0x08113001, 0x300c1130, 0x050d1c01, 0xda00c04e, 0x000005d0, 0x005d0a7e, 0x001404da,
|
||||
0x0c040b00, 0x59377e08, 0x00ad3300, 0x4d4c00f6, 0x00c3f171, 0x00d8db00, 0xa1300000, 0x00a13028,
|
||||
0x3010a130, 0xa13014a1, 0x20a13018, 0xb024a130, 0x11300101, 0x0c113008, 0x0d1c0130, 0x00804e09,
|
||||
0x0005d4da, 0x5d0a7e00, 0x1428da00, 0x040b0000, 0x377e080c, 0xad330059, 0x4c00a900, 0xc3f1b7c7,
|
||||
0x0005d4da, 0x5d0a7e00, 0x1428da00, 0x040b0000, 0x377e080c, 0xad330059, 0x4c00a900, 0xc3f1b7cb,
|
||||
0xb4db0000, 0x30000000, 0xa13028a1, 0x10a13000, 0x3014a130, 0xa13018a1, 0x24a13020, 0x300c1130,
|
||||
0x01b01c01, 0x08113001, 0xc04e0a0d, 0x05d8da00, 0x0a7e0000, 0x1cda005d, 0x0b000014, 0x7e080c04,
|
||||
0x33005937, 0x7e5c00a4, 0x7e005c97, 0x7e004db4, 0x7e005931, 0x7e000a74, 0x7e003cf7, 0x7e005249,
|
||||
@ -662,7 +662,7 @@ const NvU32 soe_ucode_data_lr10_prd[] = {
|
||||
0x3d071bf4, 0xc700f8a4, 0x96b024f9, 0x0b9cf002, 0x00f89a32, 0x0089050f, 0x9ff60180, 0xb8060f00,
|
||||
0x00010099, 0xf8009ff6, 0x02008900, 0x0099cf01, 0x1000008f, 0xf4049ffd, 0x34da181b, 0x7e008204,
|
||||
0xf0001a27, 0x1bf401a4, 0x0a02f809, 0x3d00f824, 0xd900f8a4, 0x00001430, 0x34da99bf, 0x98000014,
|
||||
0x95f90e99, 0x1e0a00f8, 0x00b99e7e, 0x0600a033, 0x00f802f8, 0x0100008f, 0xf6590049, 0x00f8009f,
|
||||
0x95f90e99, 0x1e0a00f8, 0x00b9a27e, 0x0600a033, 0x00f802f8, 0x0100008f, 0xf6590049, 0x00f8009f,
|
||||
0x00900089, 0xf00099ce, 0x0bf40194, 0xf1008e20, 0x00e9ce00, 0x9ffdef0f, 0x00e9f704, 0x5200eeb8,
|
||||
0x00e9ce02, 0xf7049ffd, 0x00f800e9, 0x7e0a004a, 0xe7001a27, 0xb30114aa, 0x4f1e06a4, 0xf9cf4f00,
|
||||
0xe899c700, 0x110f94b3, 0xf000f9cf, 0x9cf0ff94, 0xf89a320b, 0xf8a43d00, 0x8902f900, 0xce009000,
|
||||
@ -751,7 +751,7 @@ const NvU32 soe_ucode_data_lr10_prd[] = {
|
||||
0x00f0b305, 0x0a09584a, 0x90014afe, 0xafb508aa, 0x010f9801, 0xb60093f0, 0xa9b50294, 0x02afb503,
|
||||
0xb2100918, 0x18a9351b, 0xb5020f98, 0x099804af, 0x05a9b503, 0xa0a000bf, 0x005b0b7e, 0xf001a6b0,
|
||||
0x9a120b9c, 0x59ab3e01, 0xfb020a00, 0xe27e1c15, 0x943d0059, 0xf001a6b0, 0xa6f00bac, 0xa29a3c01,
|
||||
0x4c8900f8, 0x9ebf0005, 0xb5019f98, 0x9ea0019f, 0x005a267e, 0x0801a4b3, 0x00f8a43d, 0xff0a09f8,
|
||||
0x4c8900f8, 0x9ebf0005, 0xb5019f98, 0x9ea0019f, 0x005a267e, 0x0801a4b3, 0x00f8a43d, 0xff0a02f8,
|
||||
0x12f900f8, 0x000f8c89, 0xf20a99bf, 0x380090b3, 0x000fa881, 0xf10a10bf, 0x2c0004b3, 0x000a747e,
|
||||
0x19a00109, 0x000f9889, 0x948990a0, 0xff0f0010, 0x90899fa0, 0x90a0000f, 0x000f9489, 0x587e9fa0,
|
||||
0x10a00037, 0x12f911fb, 0x000f8c89, 0xb4bd04bd, 0xb44c90a0, 0x0fac8a00, 0x0b947e00, 0x0cb4bd00,
|
||||
@ -1157,371 +1157,371 @@ const NvU32 soe_ucode_data_lr10_prd[] = {
|
||||
0x0a3299bf, 0x0bf4f9a6, 0x3a317e07, 0x2875fb00, 0x00299cd9, 0x15991800, 0xbeb2adb2, 0x0a009033,
|
||||
0x008b707e, 0x44d900f8, 0xbf000006, 0xb2cab29b, 0xb0bdbcec, 0x000b7e7e, 0x00f81f0a, 0xdff430f4,
|
||||
0x000005dc, 0xffbf32f9, 0x900149fe, 0xa2b21899, 0xa9bf9fa0, 0xb39899c7, 0x00aa1d99, 0x00299cd9,
|
||||
0x02999800, 0xb34299c7, 0x009a0099, 0x0a0140fe, 0x14009001, 0xee7e0bb2, 0xa4330094, 0x4bfe551f,
|
||||
0x90020a01, 0xee7e10bb, 0xa4330094, 0x09bf451f, 0x04bd0103, 0xbc1493ff, 0x94f09530, 0x121bf401,
|
||||
0x0f0204b3, 0x009a447e, 0x0700a033, 0x900415f0, 0x04b30100, 0x49fee509, 0x14999001, 0x19a699bf,
|
||||
0x0a150bf4, 0x7e1bb201, 0x33009509, 0xf80a1fa0, 0x8d233e09, 0xfe2ebf00, 0x99900149, 0xdf99bf10,
|
||||
0x02999800, 0xb34299c7, 0x009a0099, 0x0a0140fe, 0x14009001, 0xef7e0bb2, 0xa4330094, 0x4bfe551f,
|
||||
0x90020a01, 0xef7e10bb, 0xa4330094, 0x09bf451f, 0x04bd0103, 0xbc1493ff, 0x94f09530, 0x121bf401,
|
||||
0x0f0204b3, 0x009a457e, 0x0700a033, 0x900415f0, 0x04b30100, 0x49fee509, 0x14999001, 0x19a699bf,
|
||||
0x0a150bf4, 0x7e1bb201, 0x3300950a, 0xf80a1fa0, 0x8d233e09, 0xfe2ebf00, 0x99900149, 0xdf99bf10,
|
||||
0xbfffffff, 0xeffd1f0a, 0x0099b904, 0xf09419ff, 0x96f00b9c, 0x1e94b601, 0xa0059efd, 0x8d233e29,
|
||||
0xfe1f0a00, 0x99900149, 0xd99fbf18, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x30f40c35,
|
||||
0x05dcdfe4, 0x52f90000, 0x49feffbf, 0x30999001, 0x9fa0a3b2, 0xc5b2afbf, 0xfdc7b4b2, 0x00ddb31d,
|
||||
0xfa95075c, 0x10f99508, 0xa132f032, 0xf9339232, 0x3000d515, 0x0cf415f6, 0x05f93346, 0xf63005fb,
|
||||
0x1c0cf405, 0x8701f933, 0x301f0a00, 0x08f501f6, 0xf6300739, 0x240cf503, 0x8e283e07, 0x10f93300,
|
||||
0xf630041a, 0x0e0cf410, 0xf50df630, 0x3e070e08, 0x33009155, 0x070611fd, 0x00915f3e, 0x421df933,
|
||||
0x1df63006, 0x33250cf4, 0x03fa18f9, 0xf418f630, 0xfd330c0c, 0x3e06e717, 0x33009408, 0x01001af9,
|
||||
0xd91cfd33, 0x94c53e06, 0x21f93300, 0xf6300262, 0x0c0cf421, 0xc51efd33, 0x8ecd3e06, 0x24f93300,
|
||||
0xfd330639, 0x3e06b725, 0xdf009499, 0x0000299c, 0x2614f918, 0x0d18f4a9, 0xbcffa9c4, 0x6e3e98f9,
|
||||
0xbda00093, 0x0094303e, 0x1d33080a, 0x7e069d00, 0x330063f7, 0x490a0300, 0xa9fdff00, 0x3e4aa004,
|
||||
0x0a009430, 0x04163003, 0x067f0cf5, 0x00299cd9, 0x0e99bf00, 0xbc080a01, 0x99c7f4e1, 0x049ffd98,
|
||||
0x06670bf5, 0x0e021033, 0x10041033, 0x843eea32, 0xeab2008e, 0x008e7a3e, 0x4bfea4bd, 0x2cbb9001,
|
||||
0x0063b47e, 0x008a847e, 0x3f1fad33, 0x0149fe06, 0xbf2c9990, 0x1fe9959e, 0x0a0190b3, 0xa73ed4bd,
|
||||
0x00dd008e, 0xc4ff0000, 0x943380e9, 0xf4bd0a00, 0x008ebe3e, 0xe6b0010f, 0x051ff400, 0xe995ff0f,
|
||||
0x95d9ff08, 0xa090f9bc, 0x94c73e49, 0xb29b3200, 0x7e5db24c, 0x3e0077ca, 0x330094c7, 0x305507a0,
|
||||
0x0cf407a6, 0x299cd912, 0xa6300000, 0x2b0df402, 0x008f243e, 0xf40ca630, 0x9cd9120c, 0x30000029,
|
||||
0x18f409a6, 0x8f473e57, 0x0da03300, 0x33030a61, 0x05b80e1d, 0x008f7a3e, 0xdf019998, 0x04000000,
|
||||
0x008f603e, 0xdf019998, 0x08000000, 0x008f603e, 0x00299cd9, 0x02999800, 0x0200008f, 0xf5049ffd,
|
||||
0x3e00c61b, 0x98009045, 0x008f0299, 0x9ffd0400, 0xc41bf504, 0x90453e00, 0x02999800, 0x0100008f,
|
||||
0xf4049ffd, 0x453e2f1b, 0x9cd90090, 0x8f000029, 0x98400000, 0x873e0299, 0x9cd9008f, 0x98000029,
|
||||
0x00df0299, 0xfd008000, 0x1bf5049f, 0x453e00a9, 0x10330090, 0x16307307, 0x1a0cf407, 0x4b021033,
|
||||
0xf4021630, 0x1033540c, 0x1d332700, 0x3e048601, 0x30008fd7, 0x0cf40c16, 0x0916300d, 0x3e6518f4,
|
||||
0x30009015, 0x0df40e16, 0x94303e6d, 0x7e4ab200, 0x3e00789f, 0x320094c7, 0xb22b321a, 0x7e5db24c,
|
||||
0x3e007cca, 0x320094c7, 0xb22b321a, 0x7e5db24c, 0x3e007c3b, 0x320094c7, 0xb22b321a, 0x7e467e4c,
|
||||
0x94c73e00, 0xb22b3200, 0x0a5db24c, 0x7ba27e07, 0x94c73e00, 0x32080a00, 0xb24cb22b, 0x7b037e5d,
|
||||
0x321a3200, 0xb23cb22b, 0x7e5eb24d, 0x3e007ed3, 0x320094c7, 0xb22b321a, 0xb24db23c, 0x78a77e5e,
|
||||
0x94c73e00, 0x3e080a00, 0x0a0094c7, 0x009d3304, 0x9cd9047a, 0x98000029, 0x080a0299, 0x400094f1,
|
||||
0x04670bf5, 0xfe0149fe, 0x99900142, 0x1822902c, 0x2da09da0, 0xa0049992, 0x0499929d, 0x99929da0,
|
||||
0x929da004, 0x9da00499, 0x85011933, 0x01163000, 0x0a0e08f4, 0x021d3303, 0x213e0432, 0x41fe0091,
|
||||
0x0140fe01, 0x902c1190, 0x1ab22800, 0x607e0bb2, 0x19bf0075, 0x43fe00bf, 0x0142fe01, 0x900794f0,
|
||||
0x22902433, 0xfe3ab220, 0x2bb20141, 0xf01c1190, 0x1cb20704, 0xfd0404b6, 0x5c7e0509, 0x29bf006a,
|
||||
0x1ebf3fbf, 0xb60141fe, 0xf4f00894, 0xff94f1ff, 0x10f4b6ff, 0x9018e4b6, 0x09fd1811, 0xfd1ab205,
|
||||
0x0efd050f, 0x6a497e05, 0x91473e00, 0x7e2ab200, 0xb2006a39, 0x7e20bf2a, 0xbf006a29, 0x914d3e29,
|
||||
0x0141fe00, 0xb2181190, 0x6a167e1a, 0xbf1ab200, 0x6a037e10, 0xb219bf00, 0xff04f11a, 0x1094b6ff,
|
||||
0x7e0590ff, 0xbf0069f0, 0xff94f119, 0xa040a0ff, 0x94303e59, 0x7efab200, 0x3e0095f3, 0x330094c7,
|
||||
0x330d00a0, 0x035c01ad, 0x0091ad3e, 0x9033b0bf, 0x94330c01, 0x9d3e2f02, 0x41fe0091, 0x90010a01,
|
||||
0x1bb21811, 0x0094ee7e, 0x3f1fad33, 0x091fbf03, 0x9509fffe, 0xa0049fff, 0x91a13e10, 0xff04f100,
|
||||
0xb22a3201, 0x95097e0b, 0x94c73e00, 0x7e9a3200, 0x3e0094ee, 0xb20094c7, 0x95227efa, 0x94c73e00,
|
||||
0x299cd300, 0x39bf0000, 0x000000df, 0xfd080a20, 0x0bf5049f, 0x030a02f5, 0xef001d33, 0x0140fe02,
|
||||
0x90014cfe, 0xcc902800, 0xfe0bb22c, 0x22900142, 0x7e2ab224, 0x7f007347, 0x03967009, 0x940b9cf0,
|
||||
0x0e7e0791, 0x30180001, 0x01087e58, 0x00003300, 0x3e1fb20a, 0x7f00924c, 0x00a4732a, 0x3e19b20a,
|
||||
0xc500924a, 0xa0734019, 0xa0731403, 0xa4731804, 0x9fe51c02, 0x4c3e0100, 0x9fe50092, 0x4c3e0200,
|
||||
0x9fe50092, 0x4c3e0300, 0x9fb20092, 0x900149fe, 0x997f2c99, 0x88049973, 0x04967000, 0x731a0cf4,
|
||||
0x70480190, 0x08f40196, 0x02907336, 0x039d734c, 0xce3e00e3, 0x99730092, 0x70009b07, 0x0cf40796,
|
||||
0x05907310, 0x069d7369, 0x033e00cb, 0x99730093, 0x73009c08, 0x00bd099d, 0x0093383e, 0xfe07ff89,
|
||||
0x3e04f9fd, 0x49009350, 0xf9ffc7ff, 0x0095f194, 0x92bf3e20, 0xc7ff4900, 0xf194f9ff, 0x8f180095,
|
||||
0xfdfe3fff, 0x9fe5049f, 0x503e4000, 0xff490093, 0x94f9ffc7, 0x100095f1, 0x0092bf3e, 0xffc7ff49,
|
||||
0x95f194f9, 0xf43e0800, 0xff490092, 0x94f9ffc7, 0x100095f1, 0xfe3fff8f, 0xe5049ffd, 0x3e80009f,
|
||||
0x49009350, 0xf9ffc7ff, 0x0095f194, 0x931b3e08, 0xc7ff4900, 0xf194f9ff, 0x8f100095, 0xfdfe3fff,
|
||||
0x9fe5049f, 0x503ec000, 0xff490093, 0x94f9ffc7, 0x080095f1, 0x0093423e, 0xffc7ff49, 0x95f194f9,
|
||||
0xff8f1000, 0x9ffdfe3f, 0x00008f04, 0xf59fff01, 0x00299cd9, 0x50991800, 0x0f009033, 0x02000089,
|
||||
0x3e95f9ff, 0x8900936e, 0xfffdffff, 0x49a094f9, 0x0094303e, 0xf514a630, 0xc401480c, 0xd0d9ffaf,
|
||||
0xbc000004, 0x9cd9e89f, 0x0a000029, 0x3befc708, 0xc7989fbc, 0x9fbb96ef, 0x0194f005, 0x012b0bf5,
|
||||
0xe7ff29c4, 0x54010def, 0x040a029b, 0x18f5bf66, 0xf3f00119, 0xffb9e400, 0xc2f9bcff, 0xf404c6b0,
|
||||
0x040c090d, 0x0093ca3e, 0xbae44da0, 0xe9c4ffff, 0x42ebe703, 0x00943301, 0xb0babc12, 0x0029bcd9,
|
||||
0x3e4ab200, 0xd90093f3, 0x00000644, 0xbabc99bf, 0xbc4ab2b0, 0x7e7eb09b, 0x303e000b, 0x9b320094,
|
||||
0x009aca7e, 0x0094c73e, 0x0f00a033, 0x1d33080a, 0x3e00b101, 0xfe0094c7, 0x00900140, 0x7e0ab224,
|
||||
0x3f0072fb, 0x00a54f09, 0x06009433, 0x4fa05a0f, 0xc73e1f0a, 0x9cd90094, 0x18000029, 0x99331599,
|
||||
0x33008700, 0x303802a0, 0x0cf402a6, 0x00a0330f, 0x01a43318, 0x946f3e6e, 0x03a03300, 0x04a4332c,
|
||||
0x948f3e62, 0x7e3ab200, 0x3e009d81, 0xb20094c7, 0x7ecbb2ba, 0x3e009ffb, 0x320094c7, 0x9d0a7e2a,
|
||||
0x94c73e00, 0x7e2a3200, 0x3e00a211, 0x320094c7, 0xa1a57e2a, 0x94c73e00, 0x299cd900, 0x99180000,
|
||||
0x00903315, 0x6cfbc724, 0x4db22c32, 0xa4f05eb2, 0x9eab7e0f, 0x94c73e00, 0x3e020a00, 0x0a0094c7,
|
||||
0x94c73e03, 0xfe090a00, 0x99900149, 0xd99fbf30, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31,
|
||||
0xa4f01c55, 0x02a4b6ff, 0x1f0acaa0, 0xaf3200f8, 0xf630040a, 0x120cf402, 0xd9fff4f0, 0x00002a5c,
|
||||
0x0af89fbc, 0xf8bfa01f, 0x0aaf3200, 0x02f63004, 0xf0100cf4, 0x5cd9fff4, 0x0a00002a, 0xf99bbc1f,
|
||||
0x12f900f8, 0xb210af95, 0x08ae95b1, 0x00299cd0, 0x26ff0900, 0x3d1bf4e9, 0x26490918, 0xb21bf5f9,
|
||||
0x4a091800, 0x99331c0a, 0x3000ab01, 0x08f50196, 0x060a00a1, 0x9d029d33, 0x13099800, 0x1f0af43d,
|
||||
0x0918b9a0, 0x4a0f3549, 0x35019910, 0xf13e4909, 0x09180095, 0x330a0a4a, 0xd97a0094, 0x00002a5c,
|
||||
0xf4f099bf, 0xe899c7ff, 0xbc0694b6, 0xf6b0f0f9, 0x5e0cf43f, 0xe433030a, 0xf9905b0c, 0x4096b104,
|
||||
0x4e0cf400, 0xdf02f994, 0x00002a68, 0x7f909fbc, 0x019a589f, 0xf473080d, 0x09981b02, 0xf0290d04,
|
||||
0x90338094, 0x4b7e0f00, 0x01090075, 0x0935d43d, 0x299cdf50, 0xfe180000, 0xffd9c449, 0x0913f9b5,
|
||||
0x4af93502, 0x0affe4f0, 0x3e1ea01c, 0x0a0095f1, 0xf911fb04, 0xb2adb222, 0xe8a0c7b2, 0x06b0bbbf,
|
||||
0xcc0cf53f, 0xffbcc400, 0xb3ffaec4, 0x0a0d0fe4, 0x3fc6b005, 0x00bb0cf5, 0x002a5cd9, 0xc499bf00,
|
||||
0x99c7ff9f, 0x06f194e8, 0xb30694b6, 0xb32c0ee0, 0x0a440fe0, 0x0dedb31f, 0x097c009a, 0xff967190,
|
||||
0x8c0cf500, 0xff9fe400, 0x2a68d9ff, 0x9fbc0000, 0x3e2fa0f8, 0x7c00966d, 0x96719001, 0x0cf400ff,
|
||||
0xff9fe46f, 0x2a68d9ff, 0x9bbc0000, 0x3e1f0af9, 0xbc0096cf, 0x050af0c9, 0x94f0d9c7, 0x999002fb,
|
||||
0x029c9401, 0xb1e0cbbc, 0xf41000e6, 0x01bc440c, 0xb6030a90, 0xc9bc0294, 0x00f6b1f0, 0x320cf410,
|
||||
0x08f49ba6, 0xf49ea608, 0xb9a62008, 0xa6080df4, 0x1608f4bf, 0x002a68df, 0xa09fbc00, 0x7eb0bfbc,
|
||||
0x3e000b7e, 0x0a00966d, 0x96cf3e04, 0xfb030a00, 0xb1c9b221, 0xf40fffa6, 0x9abc2b0c, 0x0096b190,
|
||||
0x210cf410, 0x002a68de, 0x90aebc00, 0x0a00d033, 0xfa3e9ab2, 0xbab20096, 0x7e7e9bb2, 0x1f0a000b,
|
||||
0x040a00f8, 0x30f400f8, 0x05dcdfe4, 0x12f90000, 0x49feffbf, 0x20999001, 0x9fa0a0b2, 0xb4f0d1b2,
|
||||
0xb4edb2ff, 0xe0b40aa0, 0x0709c40b, 0x1bf49ba6, 0x2f0fc775, 0x900149fe, 0x9da00899, 0xb5029eb5,
|
||||
0x9fbc019a, 0xfe94bdb8, 0xff90014f, 0xb5f9a014, 0xf1b501fc, 0x2309c702, 0xf9bcbabf, 0x850fc7c8,
|
||||
0x3c8a09c7, 0xf4f0e09f, 0x910dc71f, 0x3c05cfbb, 0xeeb990d9, 0x1fd4f000, 0xb91fe4f0, 0xefbc0099,
|
||||
0x1f94f0e0, 0x9dbcff0f, 0x95f9bc90, 0xbb05febb, 0xfcfd049d, 0x0099b904, 0xfd04fdbb, 0x9ffd049a,
|
||||
0xfeb9a005, 0x99900149, 0xd99fbf20, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x30f41c15,
|
||||
0x05dcd9f4, 0x82f90000, 0xd1b299bf, 0x90014ffe, 0xf9a02cff, 0xff92dd3f, 0x091f0003, 0x01f03517,
|
||||
0x2002f035, 0xb2b6b2f9, 0x33a5b2e3, 0xdb1900d4, 0x00000528, 0x7e7e240c, 0x0909000b, 0x19200a32,
|
||||
0x0098813e, 0xd630030a, 0x780cf409, 0xc40147fe, 0xf8b2ffc4, 0x7790043d, 0x98783e24, 0xff09c400,
|
||||
0x92947bb2, 0xbc040c02, 0xd43da026, 0x0096d17e, 0x6b1fa433, 0xf9c47fbf, 0xf494a607, 0xf9c75e18,
|
||||
0x01991223, 0xf4019630, 0xfec7520c, 0xffe9c42f, 0xc7c8893c, 0xf9c78afd, 0x90d93c85, 0x0cf49c26,
|
||||
0x03e0333b, 0x91f9c738, 0x26909d3c, 0x2c0cf49c, 0x109052bc, 0x9fa00100, 0x0926193f, 0x0aa108f4,
|
||||
0x0149fe1f, 0xbf2c9990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x98b13e23, 0xbf0d0a00, 0xff0fc439,
|
||||
0x000000de, 0x049efdff, 0xa005f9fd, 0x98813e3f, 0x3a317e00, 0x0c85fb00, 0xd9a830f4, 0x000005dc,
|
||||
0x99bf82f9, 0xb2f830f4, 0x014ffea7, 0xa080ff90, 0xb0aabff9, 0xc1b00eb1, 0x68a6c70d, 0x30016912,
|
||||
0x0cf50396, 0xa9c7013b, 0x0a96306c, 0x01310cf5, 0xfe0141fe, 0x11900140, 0x50009057, 0x2010a5b6,
|
||||
0xb2b4bd19, 0x94e27e0c, 0x1fad3300, 0x09bf011d, 0xc40142fe, 0x2290ff6b, 0x04b4b658, 0xb9bc2ab2,
|
||||
0xb26c32b0, 0x7e7eb21d, 0x300097be, 0xad333fa1, 0xfe00f51f, 0x01080141, 0x3d401190, 0x08199024,
|
||||
0x3d0c1e90, 0xb054bd34, 0xe1b00c91, 0x9a0d3e0b, 0x1490b400, 0x100c1bb2, 0x59bcd43d, 0x7e4ab240,
|
||||
0x330096d1, 0x00c31fad, 0x1f9819bf, 0xffffde01, 0x9efde0ff, 0x021fb504, 0x203319a0, 0x043d0a00,
|
||||
0x0099a73e, 0xb40cb0b4, 0x1ab20bc0, 0x008d3e7e, 0xa0321fbf, 0xffffffde, 0x1f09c4e0, 0xb604fefd,
|
||||
0x9ffd1894, 0xb219a005, 0x0c1bb24a, 0x7e010d10, 0x330096d1, 0x33731fa4, 0x020a0020, 0x9a073e01,
|
||||
0x1f043300, 0x3e043d3f, 0xc40099f4, 0x1c98ff09, 0x031d9802, 0xfe0de0b4, 0xff90014f, 0xa8f9bc58,
|
||||
0xb00e90b4, 0x001001e1, 0xb03b3201, 0x7eb20091, 0x0097067e, 0x26579034, 0xd208f409, 0x009a073e,
|
||||
0x843d19bf, 0x101f9295, 0x55900133, 0xf5362610, 0x0aff4208, 0x0080331b, 0x9a233e11, 0x3e030a00,
|
||||
0x34009a26, 0x49fe3fa0, 0x80999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x30f4003a,
|
||||
0x5885fb08, 0xdff430f4, 0x000005dc, 0xffbf12f9, 0x900149fe, 0x41fe1099, 0x909fa001, 0xb84a0c11,
|
||||
0xb2040b00, 0x8c307e1c, 0x1fa43300, 0x0140fe2b, 0x9000b44a, 0x040b0800, 0x307e0cb2, 0xa433008c,
|
||||
0x19bf161f, 0x9fa60fbf, 0xf00b9cf0, 0x9a320196, 0x009a963e, 0x49fea43d, 0x10999001, 0xdcd99fbf,
|
||||
0xbf000005, 0xf4f9a699, 0x317e070b, 0x15fb003a, 0x04a9980c, 0xac90afb2, 0xf0010b59, 0x904a2095,
|
||||
0x04f9b500, 0x008c307e, 0x30f400f8, 0x05dcd990, 0x52f90000, 0x4ffe99bf, 0x84ff9001, 0xf9a0030e,
|
||||
0x0500ad33, 0x299cd901, 0x99180000, 0x00993359, 0xba3200f6, 0xbd014cfe, 0x20cc90b4, 0x0094e27e,
|
||||
0xad33ae32, 0xfe00e31f, 0xb84a0144, 0x1c449000, 0x4cb2040b, 0x008c307e, 0xad33ae32, 0xfe00cb1f,
|
||||
0xb44a0140, 0x18009000, 0x0cb2040b, 0x008c307e, 0xad33ae32, 0xbf00b31f, 0xa64abf09, 0xa60bf5a9,
|
||||
0xbcaa9000, 0x0b0140fe, 0x27009001, 0x307e0cb2, 0xae32008c, 0x911fad33, 0xfe093f00, 0x43b20142,
|
||||
0xf0282290, 0x0045ff94, 0x02915410, 0x009ba93e, 0x1be43abf, 0x5abcffff, 0xf4b9a692, 0x9bb2050d,
|
||||
0xaa90b072, 0x00b3f0bc, 0x307e2cb2, 0x0fe4008c, 0xae32ffff, 0x511fa433, 0x107b39bf, 0x202fbc02,
|
||||
0xf190f9bc, 0xa00fff94, 0x00147339, 0x0149fec7, 0xbf209990, 0x0799909a, 0x4bfe9c3f, 0x90010d01,
|
||||
0xc4f028bb, 0x02c4b6ff, 0x0096d17e, 0xa433ae32, 0x4cb2171f, 0x0b00b84a, 0x8af07e04, 0x3eae3200,
|
||||
0x0e009be5, 0x0149fe09, 0xbf849990, 0x05dcd99f, 0x99bf0000, 0xf9a6ea32, 0x7e070bf4, 0xfb003a31,
|
||||
0xa9987055, 0xf0008f04, 0x059ffd3f, 0xf804a9b5, 0x12aeb200, 0x040a10bf, 0xf926ee09, 0x332e0df4,
|
||||
0x7f0a00c4, 0x9c2c3eea, 0x01ea5800, 0x1800a073, 0xb926ff09, 0xe4140bf4, 0xbbffffa9, 0x94f0059b,
|
||||
0x071bf401, 0x00f8090a, 0x00f81f0a, 0xdff830f4, 0x000005dc, 0xffbf32f9, 0xfe0149fe, 0x99900140,
|
||||
0x0143fe14, 0xa2b29fa0, 0x0090b1b2, 0x12339013, 0x0b10ec4a, 0x7e0cb201, 0x33008b70, 0x3f741fa4,
|
||||
0x01a6300a, 0xb3690cf4, 0xf0210020, 0xa994ffa4, 0xb6240b05, 0x2cb202a4, 0xb8a0a9bc, 0x0010eeaa,
|
||||
0x008b707e, 0x4b1fa433, 0x230010b3, 0x040b0a3f, 0xa4f01cb2, 0x05a994ff, 0xbc02a4b6, 0xaab8a0a9,
|
||||
0x7e0010ee, 0x33008b70, 0x4a281fa4, 0x010b10ec, 0x707e3cb2, 0xa433008b, 0x3f3f191f, 0xf401f630,
|
||||
0x093f0e0c, 0x1bf49f26, 0x9cef3e8a, 0xfe050a00, 0x99900149, 0xd99fbf14, 0x000005dc, 0xf9a699bf,
|
||||
0x7e070bf4, 0xfb003a31, 0x30f40835, 0x05dcdfd8, 0x22f90000, 0x49feffbf, 0x30999001, 0x9fa0a132,
|
||||
0x00299cd9, 0x04999800, 0x080ab2b2, 0x400094f1, 0xfe360bf4, 0xb4bd0140, 0xb20c0090, 0x9c4c7e0a,
|
||||
0x1fa43300, 0x320ab225, 0x7e010c1b, 0x33009c11, 0xc4171fa4, 0x9990ff19, 0x9099bc02, 0x7f9009bc,
|
||||
0x0f92f099, 0x49fe29a0, 0x30999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x25fb003a,
|
||||
0xd830f428, 0x0005dcdf, 0xbf62f900, 0x0149feff, 0xb2409990, 0xd99fa0b2, 0x0000299c, 0xb2049998,
|
||||
0x0bc3b2a6, 0x0094f108, 0xe50bf510, 0xfeb4bd00, 0x11900141, 0x7e1ab21c, 0x32009c4c, 0x1fad33ab,
|
||||
0xff0b00d1, 0x010c1ab2, 0x009c117e, 0xad33ab32, 0x0b00c01f, 0x3d1ab2ff, 0x9c117ec4, 0x33ab3200,
|
||||
0x00af1fad, 0xbd011458, 0xa029a094, 0x04109039, 0x4c72157f, 0x004da47d, 0x01e4bd80, 0x9e313e01,
|
||||
0x01c9c400, 0x7f200bf4, 0xf4fd660f, 0x1ebc0a1d, 0x9e263ea4, 0xf4fd6600, 0x1ebc0d1b, 0x05a9fd94,
|
||||
0x009e263e, 0xee90df72, 0x01c57601, 0x72020090, 0x00c473fd, 0xf06ebfd0, 0xa9c400d3, 0xffffdfff,
|
||||
0x94b6ff00, 0x04effd10, 0xff00008c, 0xfd059efd, 0x9dfd049c, 0xbf69a005, 0xff4ee429, 0xe8afc7ff,
|
||||
0xf110ed94, 0xfdff0094, 0xf9fd059d, 0xe42fa005, 0xb9ffff59, 0xe9ff00ee, 0x150bf4a4, 0x9cfd39bf,
|
||||
0x059afd04, 0x29bf39a0, 0x010095f1, 0x49fe29a0, 0x40999001, 0xdcd99fbf, 0xbf000005, 0xa6ba3299,
|
||||
0x070bf4f9, 0x003a317e, 0xf42865fb, 0xdcdff030, 0xf9000005, 0xfeffbf62, 0x99900149, 0xa0a13228,
|
||||
0x32b0329f, 0xb2d5b2c4, 0x04b630e6, 0x01120cf5, 0x00299cd9, 0x049e9800, 0x90ffb9c4, 0x9fc41199,
|
||||
0xbb080a1f, 0x99b905ef, 0x1f94f000, 0x0f909fbc, 0x05f9bbff, 0xb334feff, 0x00e9013d, 0x4ffe94bd,
|
||||
0x20ff9001, 0xb50142fe, 0x229001f9, 0xbdf9a01c, 0x7e2bb2a4, 0x33009c4c, 0x00c91fad, 0x3c322ab2,
|
||||
0x117e1b32, 0xad33009c, 0x3300ba1f, 0x30460200, 0x0cf40206, 0x00003310, 0x010d331a, 0x5f3e00a5,
|
||||
0x0033009f, 0x0d334103, 0x3e009804, 0xc4009f95, 0x90f1ff19, 0x9eb80126, 0x3e001136, 0xc4009f6b,
|
||||
0x90f1ff19, 0x9eb80126, 0x0f001146, 0x9fa43e10, 0xff19c400, 0x012690f1, 0x9eb8040f, 0x3e001156,
|
||||
0xc4009fa4, 0x90f1ff19, 0x020f0126, 0x115a9eb8, 0x9fa43e00, 0xff19c400, 0x012690f1, 0xb801004f,
|
||||
0x00115c9e, 0x0a034994, 0xf89cc404, 0x18f4cfa6, 0x08c99032, 0x9fa6080b, 0xbc060df4, 0xecbcb2fc,
|
||||
0x0140fea0, 0xb2200090, 0x8b707e0c, 0x1fa43300, 0xa009bf13, 0x01009859, 0xe03e60a0, 0x030a009f,
|
||||
0x900149fe, 0x9fbf2899, 0x0005dcd9, 0xa699bf00, 0x070bf4f9, 0x003a317e, 0xf41065fb, 0xdcdfe830,
|
||||
0xf9000005, 0xfeffbf52, 0x99900149, 0xa0a3b22c, 0x299cd99f, 0x99980000, 0x0ab2b204, 0x0094f108,
|
||||
0xca0bf520, 0x0140fe00, 0x0090a4bd, 0x7e0bb218, 0x33009c4c, 0x00b81fad, 0xff0b0ab2, 0x117ec43d,
|
||||
0xad33009c, 0xfe00a91f, 0x007f0141, 0x4a1c1190, 0x100b10dc, 0x707e1cb2, 0xad33008b, 0x7200911f,
|
||||
0xbd15b20b, 0x0104bdc4, 0x3eff04e0, 0xc400a0e7, 0x0bf401b9, 0x07c6b069, 0xbf350cf4, 0xf85c3c3d,
|
||||
0x901f0ec4, 0x99b90309, 0xfff4f000, 0xbc1f94f0, 0x49bc909e, 0xf49fff95, 0xbb049ebb, 0x99b904fe,
|
||||
0x049dfd00, 0xa0059ffd, 0xa0db3e39, 0x3c2dbf00, 0x1ec4f85c, 0x1d09921f, 0xf00099b9, 0x94f0fff4,
|
||||
0x909ebc1f, 0xff9549bc, 0x9ebbf49f, 0x04febb04, 0xfd0099b9, 0x9ffd049d, 0x9029a005, 0xb57601cc,
|
||||
0x04009001, 0x73041190, 0xfe8800b4, 0x99900149, 0xd99fbf2c, 0x000005dc, 0xf9a699bf, 0x7e070bf4,
|
||||
0xfb003a31, 0x30f41855, 0x05dcdfd4, 0x22f90000, 0x49feffbf, 0x34999001, 0x41fea232, 0x909fa001,
|
||||
0x984a0c11, 0xb2280b23, 0x8b707e1c, 0x1fa43300, 0x0110985d, 0x90bc19bf, 0xf490a6f2, 0xf6b01008,
|
||||
0x0b9cf001, 0x3e0196f0, 0x0900a155, 0xf0f9a6e1, 0x96f00b9c, 0x330b0a01, 0xd9330090, 0x000029b4,
|
||||
0xbf019c98, 0x014ffe9b, 0xbc0cff90, 0x9c4d90f0, 0x08923523, 0x0990240e, 0x1f94f001, 0xb504fa90,
|
||||
0x367e01f9, 0x847e0021, 0x49fe008a, 0x34999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b,
|
||||
0x25fb003a, 0xf830f42c, 0x0005dcdf, 0xbf12f900, 0x0149feff, 0x320c9990, 0xd99fa0a1, 0x0000299c,
|
||||
0x0a049f98, 0x00008908, 0x04f9fd01, 0xfe2a0bf4, 0xa4bd0140, 0xb2080090, 0x9c4c7e0b, 0x1fa43300,
|
||||
0x320ab219, 0x7ec43d1b, 0x33009c11, 0xc40b1fa4, 0x067e1f1a, 0x49fe00a1, 0x0c999001, 0xdcd99fbf,
|
||||
0xbf000005, 0xf4f9a699, 0x317e070b, 0x15fb003a, 0xf830f408, 0x0005dcdf, 0xbf12f900, 0x0149feff,
|
||||
0x320c9990, 0xd99fa0a1, 0x0000299c, 0x0a049998, 0x0094f108, 0x00907380, 0x0140fe2e, 0x0090a4bd,
|
||||
0x7e0bb208, 0x33009c4c, 0xb21c1fa4, 0x3d1b320a, 0x9c117ec4, 0x1fa43300, 0x1f1ac40e, 0x7e20a5f0,
|
||||
0xfe00a106, 0x99900149, 0xd99fbf0c, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x52f90815,
|
||||
0xb206b995, 0x0394b6c4, 0xa9bcd5b2, 0x3fb0c430, 0x00a2df3e, 0x329831bf, 0x0054b301, 0xbd010a18,
|
||||
0x7e0cb2b4, 0xfd0039cd, 0x1afd052b, 0xa2c73e05, 0x0a0cb200, 0x7eb4bd01, 0xb90039cd, 0xaab900b9,
|
||||
0x0429fd00, 0x92041afd, 0x40b30144, 0x00900b00, 0x4004b301, 0xb531a0c8, 0x04bd0132, 0xb3083390,
|
||||
0xfbb50044, 0x7ed4bd51, 0xf800a27e, 0x7e010d00, 0xf800a27e, 0x3fbcc400, 0xb606b5b6, 0xabbc03b4,
|
||||
0x01ab98a0, 0x797eaabf, 0xa4f00039, 0xb200f801, 0x3df4bdae, 0x08f0b3a4, 0x98ef3c0a, 0x90a0a93c,
|
||||
0xfeb301ff, 0xf0f30080, 0xaa3907a2, 0x3f00f801, 0x01e9c4ae, 0xbd1b0bf4, 0x3cff0ef4, 0xff9098af,
|
||||
0xf59e2601, 0xb300c51b, 0x3ef410f4, 0xbd00a40c, 0x90afbcf4, 0x90099918, 0x9d3301ff, 0xb300ae00,
|
||||
0x18f207f4, 0x800c06ad, 0x0cf5dc26, 0xe433009e, 0xa9183800, 0x009d3301, 0xa9180093, 0x009d3302,
|
||||
0xa918008b, 0x009d3303, 0xaf180083, 0x05a91804, 0x76fff4f0, 0x9ffd0894, 0x00947305, 0xf4dc266f,
|
||||
0x013e691b, 0xaf1800a4, 0x05a91804, 0xf0fff4f0, 0x94b6ff94, 0x059ffd08, 0x737099cd, 0x184d0094,
|
||||
0x991201a9, 0x19963041, 0x18400cf4, 0x963102a9, 0x1df40040, 0x5a963136, 0x2f1cf400, 0x3103a918,
|
||||
0xf4004096, 0x9631251d, 0x1cf4005a, 0x00d0331e, 0xffefc41b, 0xf404f9c4, 0xf9c4151b, 0x0294b30a,
|
||||
0x07a9180b, 0x08009033, 0x00f8060a, 0x00f8a4bd, 0x020f12f9, 0xa0b2b1b2, 0x2200a0b3, 0x94f0a93f,
|
||||
0x171bf408, 0x00a30f7e, 0x060010b3, 0x09181a20, 0x26060f08, 0x051bf4a9, 0xfab2f4bd, 0xa9b211fb,
|
||||
0xc0b3020a, 0x9abf1200, 0xb4b6cdb2, 0x00804c07, 0x00b75e7e, 0x30f400f8, 0x05dcdff8, 0x22f90000,
|
||||
0x49feffbf, 0x10999001, 0x9fa0a0b2, 0x00b3020a, 0x0abf3400, 0xb294943d, 0x0141fe07, 0x11902bb2,
|
||||
0x20010c0f, 0x7e1db219, 0xb300b775, 0x3f1700a4, 0xb20abf19, 0xf01db22b, 0x010cfd94, 0x5e7e1920,
|
||||
0x49fe00b7, 0x10999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x25fb003a, 0xf830f408,
|
||||
0x0005dcdf, 0xbf42f900, 0x0149feff, 0xb2189990, 0xb29fa0a1, 0xb2c0b2b4, 0x00a0b3d3, 0x00c0b356,
|
||||
0x07cf1852, 0x42fe94bd, 0x14229001, 0xa001ff10, 0x07cf3529, 0x0f7ecab2, 0x2bb200a3, 0xb2080a35,
|
||||
0xa7b17e1a, 0x00a4b300, 0xb22bbf2c, 0x7e1ab20c, 0xb300a43e, 0xb21e00a4, 0x7e4bb21a, 0xb300a456,
|
||||
0xb31200a4, 0xbf0e0030, 0x3e32a022, 0x0a00a531, 0x0149fe02, 0xbf189990, 0x05dcd99f, 0x99bf0000,
|
||||
0x0bf4f9a6, 0x3a317e07, 0x0845fb00, 0xc0b202f9, 0x2400a0b3, 0x2000c0b3, 0xb4b6aabf, 0x00804c07,
|
||||
0x757e0db2, 0xa4b300b7, 0x0ab21000, 0x00a32f7e, 0x00a5763e, 0x01fb020a, 0x1700a0b3, 0x1300c0b3,
|
||||
0xcdb2aabf, 0x0c07b4b6, 0xb7757e10, 0x0a00f800, 0xf900f802, 0xb2b3b242, 0x00a2b2c4, 0x00a0b302,
|
||||
0xa5e97e42, 0xb2030000, 0x00a0b3a1, 0xb23bb236, 0x7e1cb22a, 0xb200a54c, 0x00a4b3a0, 0xbd1ab21e,
|
||||
0xa4107eb4, 0xb3a0b200, 0xb31000a4, 0x180c0040, 0x94f00619, 0xb249a0ff, 0x7e1bb22a, 0xb200a60b,
|
||||
0xf841fb0a, 0xf800f800, 0x98aeb200, 0xa0b30eaa, 0xf4bd0a00, 0x00a6013e, 0xb30fea98, 0x0f0e00a0,
|
||||
0x0eff9001, 0xe9bc94bd, 0xb300f8f9, 0x981a00b0, 0x90b30ea9, 0xa9980d00, 0x0094b30f, 0x9001090c,
|
||||
0xabbc0e99, 0x9800f899, 0xa9a002b9, 0xa9b5ff09, 0x02b99801, 0xb504abb5, 0xa9b503ac, 0xf900f802,
|
||||
0x32a0b222, 0x0ad2b2c1, 0x00b0b302, 0x400cb85e, 0xd4bd0001, 0xb304c998, 0x33440090, 0xb3080014,
|
||||
0x3f3c0390, 0x26b93fcf, 0x321bf4f9, 0x1801cf18, 0xf92601b9, 0x18271bf4, 0xbf1802ce, 0x90ddbc02,
|
||||
0xb6909dbc, 0x99b80394, 0xbc000140, 0xef269009, 0xa00b1bf4, 0x3ea4bd29, 0x9000a6a7, 0xcc9001dd,
|
||||
0x14d4b318, 0xfb040ab3, 0xb2abbf21, 0xa6f009ac, 0x0d0bf4b9, 0xb503aa98, 0x5b7e01cb, 0x00f800b6,
|
||||
0xa1b232f9, 0x04bdb2b2, 0xef3ef003, 0x19bf00a6, 0xb2010090, 0xf493a61a, 0x030a090d, 0x00a6f63e,
|
||||
0x1bf493a6, 0x3e020a09, 0x7e00a6f6, 0xa600a6a9, 0xdd08f402, 0x31fba4bd, 0xdff830f4, 0x000005dc,
|
||||
0xffbf82f9, 0x900149fe, 0xa3b22899, 0xb8b29fa0, 0x8400a9b3, 0x00b0b300, 0x0147fe7f, 0xbd05a498,
|
||||
0xbd54bd24, 0x24779014, 0x00a7603e, 0xbd0c3a98, 0xb002bc94, 0x7cb279a0, 0x00b65b7e, 0xff0f79bf,
|
||||
0x0bf49fa6, 0x3e643d09, 0x9000a74e, 0x00900155, 0xf404a601, 0x6033d908, 0x11900700, 0x2024bc01,
|
||||
0xa6033998, 0x0b18f429, 0x04bd0106, 0x00a7513e, 0x1ab24bb2, 0x0016fc7e, 0x0df45aa6, 0x01119006,
|
||||
0x3d063998, 0xf419a6f4, 0x010f050c, 0xa4bd8f20, 0x00a7963e, 0x49fe020a, 0x28999001, 0xdcd99fbf,
|
||||
0xbf000005, 0xf4f9a699, 0x317e070b, 0x85fb003a, 0xf030f408, 0x0005dcdf, 0xbf82f900, 0x0149feff,
|
||||
0xfe309990, 0x9fa00147, 0xb208a998, 0x09b1b0a6, 0x91b0f105, 0xb2843d0a, 0x2c779090, 0xbd036998,
|
||||
0xa67fa0f4, 0x0708f409, 0x010804bd, 0xa60a90b4, 0x351bf409, 0x32008033, 0x00a8593e, 0xbc0c6a98,
|
||||
0x7cb24010, 0x5b7e4bb2, 0x79bf00b6, 0x9fa6ff0f, 0x900f1bf4, 0xf1090122, 0x1bf439a6, 0x9043b205,
|
||||
0x2c3e0111, 0x24bd00a8, 0xf10314bd, 0xa6056998, 0xcb08f419, 0x1e0020b3, 0x18f429a6, 0x0860b50f,
|
||||
0xa009f0b4, 0xa86a3ef3, 0xa6f10f00, 0x051bf45f, 0x09bc05b2, 0xa7dc3e00, 0x091a0a00, 0xf459a6f1,
|
||||
0x65b50d0b, 0x0990b408, 0xa4bd95a0, 0x900149fe, 0x9fbf3099, 0x0005dcd9, 0xa699bf00, 0x070bf4f9,
|
||||
0x003a317e, 0xf41085fb, 0xdcd9f830, 0xf9000005, 0xfe99bf82, 0xff90014f, 0xa0a3b228, 0xb2b4b2f9,
|
||||
0x00c033d0, 0x3ddab20e, 0x7e140cb4, 0xfe00b78c, 0x14bd0142, 0x08242290, 0x06ff07fe, 0x3efb05fc,
|
||||
0x9800a939, 0x94bd0c3a, 0xa0b014bc, 0x7e2cb229, 0xbf00b65b, 0xa6f00f29, 0x560df49f, 0x9fa6fd0f,
|
||||
0xa6110cf4, 0x3018f496, 0x1bf495a6, 0xa9083e45, 0xf498a600, 0x97a62f0b, 0x98371bf4, 0x99900109,
|
||||
0x0109b501, 0x00a9363e, 0x90040998, 0x09b50199, 0xa9363e04, 0x02099800, 0xb5019990, 0x363e0209,
|
||||
0x099800a9, 0x01999003, 0x3e0309b5, 0xbf00a936, 0x01999009, 0x119009a0, 0x05399801, 0x08f419a6,
|
||||
0x0149fe85, 0xbf289990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x3a317e07, 0x0885fb00, 0xdff830f4,
|
||||
0x000005dc, 0xa1b222f9, 0xb2b2ffbf, 0xbf03aa98, 0x0149fe1b, 0xfe109990, 0x9fa00140, 0xb20c0090,
|
||||
0xb65b7e0c, 0x980cbf00, 0x2bb2031a, 0x00b6727e, 0x09011b98, 0xf4b9a6ff, 0x1998101b, 0x0212b504,
|
||||
0x3e0292b5, 0x9800a9b0, 0x2cb2031a, 0x00b6727e, 0xbf031a98, 0x7efd0c1b, 0xfe00b672, 0x99900149,
|
||||
0xbf12a010, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x3a317e07, 0x0825fb00, 0xdfc830f4, 0x000005dc,
|
||||
0xffbf82f9, 0xfef830f4, 0x99900149, 0x929fa060, 0xae180499, 0xa0f4bd1c, 0x05a9989f, 0x050aa2b2,
|
||||
0x330b91b0, 0x021a00e9, 0x980c2b98, 0x4afe092c, 0x90f10001, 0x44fe44aa, 0x01a6b201, 0xb6877e20,
|
||||
0xb205b200, 0x304490a3, 0x00aa713e, 0xa6082998, 0x310bf439, 0x3bb22ab2, 0x4db2010c, 0x00a8877e,
|
||||
0xb3044998, 0x981f0094, 0x94b30349, 0x49981800, 0x0094b302, 0xa649bf3b, 0x0918f491, 0x643e30b2,
|
||||
0x19b200aa, 0xb20bb0b4, 0x7e6ab291, 0xb200b6a0, 0xf435a6a3, 0x030ab91b, 0x0bf503a6, 0x14b301a3,
|
||||
0x03b20c00, 0x8e3e743d, 0x03b200aa, 0x38940107, 0xb254bd07, 0xab9a3e86, 0x0c2a9800, 0x53bce4bd,
|
||||
0x014cfe10, 0x9016e1b0, 0x1bb258cc, 0x00b65b7e, 0xf300adb3, 0x1690b400, 0x9fa6f00f, 0x00d80cf5,
|
||||
0x2ab294bd, 0x7e1591b0, 0xb200a5e9, 0x00a9b3a4, 0x2abf00d6, 0x804c6bb2, 0x7e4db200, 0xb200b775,
|
||||
0x00adb3a0, 0x2ab200a7, 0x4cb21bb2, 0x90014dfe, 0xbd7e50dd, 0xa0b200a4, 0x9000adb3, 0x902ab200,
|
||||
0x010c014b, 0x90014dfe, 0x3f7e54dd, 0xa0b200a6, 0x7800a4b3, 0x9815b0b4, 0x4afe0c2c, 0x30aa9001,
|
||||
0x00a6277e, 0xa60c90b4, 0x1e1bf491, 0xfe14b0b4, 0xaa90014a, 0xa95c7e30, 0x1590b400, 0xb3059f98,
|
||||
0x3e2300f4, 0x0e00ab88, 0xf49ea6ef, 0x0300090d, 0x00ab883e, 0x90014afe, 0xa97e30aa, 0x243e00a6,
|
||||
0xf99800ab, 0x14e0b402, 0x1bf491a6, 0x02feb506, 0x91a6f9bf, 0xa0091bf4, 0xab883efe, 0x01f99800,
|
||||
0x1bf491a6, 0x01feb506, 0x2ab24bb2, 0x00a60b7e, 0x130004b3, 0x90015590, 0x29988066, 0xf559a605,
|
||||
0x33fefa08, 0x98460070, 0x8db2042f, 0x2ab2e4bd, 0x0b00f1b0, 0x0070dc02, 0x41fe0000, 0x5c119001,
|
||||
0x7e0111b0, 0x9800a5e3, 0x2abf042c, 0xfb048bb2, 0x00b7477e, 0x2c981ebf, 0xbda0b204, 0xb22ab2b4,
|
||||
0xa5e57e0d, 0x0004b300, 0xbdff0406, 0xac003e04, 0x0c2a9800, 0xb2b003bc, 0x0100904c, 0x00b6727e,
|
||||
0xa60b90b4, 0xec08f409, 0xbc032f98, 0x29b59039, 0xf49fa609, 0x94bd0808, 0xbd0929b5, 0x0149fea4,
|
||||
0xbf609990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x3a317e07, 0x0830f400, 0xf43885fb, 0xdcd9cc30,
|
||||
0xf9000005, 0xf499bf82, 0x4ffef830, 0x5cff9001, 0xe1b0f9a0, 0xb2c8b20b, 0xb3a3b2d6, 0x028400b9,
|
||||
0x7f00e9b3, 0x2caf1802, 0xbd0141fe, 0x54119094, 0x030019a0, 0x6d00f933, 0xb2c43d02, 0xa63f7e1d,
|
||||
0xb3a0b200, 0x025e00ad, 0x68bc17bf, 0x017998f0, 0x08f59fa6, 0x7998024d, 0x0194b304, 0x3e05000a,
|
||||
0xb300aee1, 0x023e0069, 0x09027f98, 0xf5f9a6f0, 0xb2022a0b, 0xa5e97e3a, 0xb3a2b200, 0x021e00a9,
|
||||
0xb20c3c98, 0x0140fe7b, 0xb2340090, 0xa6277e0a, 0xb50ab200, 0x8bcc0570, 0xa6c07e70, 0xb3a0b200,
|
||||
0x01e900ad, 0x010d00b4, 0xf501a6f0, 0xf501ce0b, 0x3d01d00c, 0x00804cb4, 0x8c7e2ab2, 0x3abf00b7,
|
||||
0x4c070b94, 0x2db20080, 0x00b7757e, 0xb30ca1b0, 0x01b600ad, 0x18052918, 0x9476042f, 0xfff4f008,
|
||||
0x09e59fff, 0xf5e966ff, 0xe401980b, 0xa6ffffe9, 0x8e08f589, 0xbcf4bd01, 0x9918902f, 0x009d3309,
|
||||
0xff900182, 0x07f4b301, 0xaefb3ef2, 0xf28e3c00, 0x08f59f26, 0xfdc4016d, 0xff94f0ff, 0xa6529dbc,
|
||||
0x050df456, 0xd99065b2, 0xbca43d10, 0xc43db029, 0xa63ee4bd, 0xd6b100ad, 0x0cf5006f, 0x10b40145,
|
||||
0x98be3c0b, 0x26f81e3c, 0x170bf4f9, 0x39ff94f0, 0x9ffd0099, 0x00903304, 0x3c010a06, 0x010ce9bf,
|
||||
0x9001ee90, 0xe5a601dd, 0x33ce08f4, 0x00ed00c9, 0x94f0293f, 0x080bf408, 0xd000a933, 0xb294bd00,
|
||||
0x1491b03a, 0xb01391b0, 0x91301291, 0x014bfe5b, 0x7e5bbb90, 0xb200a6f8, 0x00adb3a0, 0x903400ef,
|
||||
0x0090335b, 0x7e3ab211, 0xb200a9d8, 0x00adb3a0, 0x00b400db, 0x1140b40d, 0x90014ffe, 0x2eb250ff,
|
||||
0xb0070d94, 0x804101f1, 0x0b3ab200, 0xb04cb201, 0xe37e0011, 0x0bb200a5, 0x3ab22cb2, 0x90014dfe,
|
||||
0xbd7e4cdd, 0xe0b400a4, 0xb2a0b214, 0xbd3ab21c, 0x7e0db2b4, 0xb300a5e5, 0x0091000d, 0xfe13b0b4,
|
||||
0xaa90014a, 0xa95c7e34, 0x0c3a9800, 0xfe0db0b4, 0xcc90014c, 0xb65b7e48, 0xb3a0b200, 0xb46d00a4,
|
||||
0xf0011290, 0x1bf491a6, 0x014e9832, 0xb370efcd, 0x0f0600f4, 0x06291870, 0xbcff94f0, 0x9fbb909e,
|
||||
0x0149b502, 0x00ae983e, 0x3ab20bb2, 0x3e7e2cb2, 0xa0b200a4, 0x3400a4b3, 0xfe0265bb, 0xaa90014a,
|
||||
0xa6a97e34, 0x0060b300, 0x0b90b420, 0xbc8085bc, 0x91b09095, 0xace43e0b, 0x3e020000, 0x0000aec8,
|
||||
0xaec83e03, 0x0c00b400, 0x2bb23ab2, 0x00a60b7e, 0x79b594bd, 0xaee13e05, 0x3e030000, 0x0000aee1,
|
||||
0x0149fe02, 0xbf5c9990, 0x05dcd99f, 0x99bf0000, 0xf9a60ab2, 0x3e170bf4, 0x1800af07, 0x9d330629,
|
||||
0x3efe4f00, 0x7e00aebf, 0xf4003a31, 0x85fb0830, 0xdc30f434, 0x0005dcdf, 0xbf82f900, 0xf830f4ff,
|
||||
0x900149fe, 0x9fa04c99, 0xb20bb1b0, 0xb2d4b2c2, 0xb3a5b2e6, 0x011700b9, 0x1200e9b3, 0xfe94bd01,
|
||||
0xc43d0141, 0xa0481190, 0x7e1db219, 0xb200a63f, 0x00adb3a0, 0x19bf00fb, 0x98f042bc, 0x9fa60199,
|
||||
0x00ea08f5, 0x03005ab2, 0x00a5e97e, 0xa9b3a3b2, 0xbf00de00, 0x0c5c981b, 0x900140fe, 0x0ab23000,
|
||||
0x00a6277e, 0x2bcc0ab2, 0xa6c07e70, 0xb3a8b200, 0x00ad00ad, 0xfe7021cd, 0x80420147, 0x44779000,
|
||||
0x00b0373e, 0xbd0c00b4, 0x0979a094, 0xf409a6f0, 0x0200091b, 0x00b03e3e, 0x09a6f009, 0x00090df4,
|
||||
0xb03e3e03, 0x0bc0b400, 0xbd0704b6, 0xb20db2e4, 0xb0b4bd5a, 0x71b00021, 0xa5e37e01, 0xb25abf00,
|
||||
0xb22cb20b, 0xb7757e3d, 0xb27ebf00, 0xb23bb2a0, 0xb22cb25a, 0xa5e57e0d, 0x0004b300, 0xbd3ab245,
|
||||
0xa4107eb4, 0xb3a0b200, 0x003700a4, 0x0201bb70, 0x0df404a6, 0x9040b205, 0x6ab2101b, 0xb2b03bbc,
|
||||
0xb7957e0c, 0x014afe00, 0x900240bb, 0x60bc30aa, 0xa6a97e60, 0xb314bd00, 0xff6d004d, 0x5ab280b2,
|
||||
0x0b7e3bb2, 0x4c3e00a6, 0x020000b0, 0x900149fe, 0x9fbf4c99, 0x0005dcd9, 0xb299bf00, 0xf4f9a60a,
|
||||
0x317e070b, 0x30f4003a, 0x2485fb08, 0xd9f830f4, 0x000005dc, 0x99bf32f9, 0x90014ffe, 0xa1b214ff,
|
||||
0x94bdf9a0, 0xc3b2b2b2, 0x4b0140fe, 0x00900320, 0xb209a010, 0xb79b7e0a, 0xb309bf00, 0xb34c0090,
|
||||
0xa04800a4, 0xb509bf91, 0x0fbf0192, 0xb5100049, 0x0fbf04f9, 0xf9b52009, 0xb509bf05, 0x0fbf0693,
|
||||
0xf9350109, 0x3509bf1c, 0x0fbf2c9a, 0xf9b5f009, 0x900fbf0a, 0xf9b540f9, 0x900fbf0e, 0xf9b5c0f9,
|
||||
0x3e0abf0f, 0xbd00b0e9, 0x0149fea4, 0xbf149990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x3a317e07,
|
||||
0x0835fb00, 0xdfd030f4, 0x000005dc, 0xffbf82f9, 0x900149fe, 0xa3b25099, 0x02059fa0, 0xf800a9b3,
|
||||
0x00b63004, 0x350b9cf0, 0x94bd2ca9, 0x7e0ca9b5, 0xb200a5e9, 0xbd3abfa0, 0x00804cb4, 0x757e0db2,
|
||||
0xa5b200b7, 0xae00adb3, 0x33093f04, 0x049f4a9d, 0x33010918, 0x0497469d, 0x33020918, 0x048f469d,
|
||||
0x33030918, 0x0487539d, 0x18040e18, 0x0f180509, 0x070d1806, 0xf0ffe4f0, 0xf4f0ff94, 0x0894b6ff,
|
||||
0xfd10f4b6, 0xd4b6059e, 0x05f9fd18, 0xf505dffd, 0x05045b0b, 0x03d6b005, 0x045a0cf5, 0xb3013db5,
|
||||
0x490e01d4, 0x39b55000, 0xb1d73e02, 0x080d1800, 0x18090918, 0x0e180a0f, 0xffd4f00b, 0xf0ff94f0,
|
||||
0x94b6fff4, 0x10f4b608, 0xb6059dfd, 0xf9fd18e4, 0x05effd05, 0xb2023eb5, 0x7e0bb23a, 0x9800a60b,
|
||||
0xff09023a, 0xa9a60305, 0x04080bf5, 0x9007a5b6, 0x3ab5303b, 0xb6ce7e03, 0xb3a5b200, 0x03f500ad,
|
||||
0x09033b98, 0x343a90c0, 0xfd3fbb90, 0xb5b604b9, 0xb79b7e03, 0xb3a5b200, 0x03d900ad, 0xfe0147fe,
|
||||
0x77900148, 0x9044bd40, 0x88900179, 0x0991b03c, 0x00b3443e, 0x8ea0e4bd, 0x0f0044b3, 0xbd0c3a98,
|
||||
0x3efe0cb4, 0xb200b267, 0xb24bb23a, 0xa5787e7c, 0xb3a5b200, 0x039d00ad, 0x94f0793f, 0x120bf401,
|
||||
0xb20c3a98, 0x7eff0c4b, 0x3e00b672, 0xb200b341, 0xa32f7e7a, 0x00a0b300, 0x0c3a980f, 0xfd0c4bb2,
|
||||
0x00b2673e, 0x94f0793f, 0x0e1bf402, 0xb20c3a98, 0x3efd0c4b, 0xb400b336, 0x3ab209b0, 0x8db2010c,
|
||||
0x00a63f7e, 0x5d00a0b3, 0x3fb2793f, 0x99c724bd, 0x01999002, 0x980a91b0, 0x54b354f5, 0xb0b43900,
|
||||
0x0022bc09, 0x02bc030c, 0x0304b600, 0x014001b8, 0x1031bc00, 0x957e1ab2, 0x30bc00b7, 0x4309b800,
|
||||
0x95200001, 0xb45302b5, 0x0fb50af0, 0x3e81a054, 0x9000b301, 0xff900122, 0x1424b318, 0xb62e3ebe,
|
||||
0x3f8ebf00, 0x027f5879, 0x98077d18, 0x3a9803ee, 0x0299c70d, 0xcc00f3f0, 0x96cb70ff, 0xcb4bb21f,
|
||||
0x010cd8e6, 0xebf0d6cb, 0x7e01e0f6, 0x9800a2e5, 0x4bb20c3a, 0x727e6cb2, 0xa5b200b6, 0xb400adb3,
|
||||
0x01449002, 0xa6033b98, 0xeb08f54b, 0xbc94bdfe, 0x89a0b0bb, 0xb17e8ab2, 0xa5b200b7, 0x9400adb3,
|
||||
0xbd37b202, 0x547f9884, 0xbc9088bc, 0x94b69098, 0x4099b803, 0x39bc0001, 0x0b91b090, 0x5300f9b3,
|
||||
0x033c9802, 0x3d0fa0b4, 0xbc24bdb4, 0x44bdc0cc, 0x00b78c7e, 0x3e0f60b4, 0x9800b45f, 0x2bb20d3a,
|
||||
0x7e0c41b0, 0x3300a2f5, 0x00b500a9, 0xfe0c3a98, 0x2bb2014c, 0x7e38cc90, 0xb300b65b, 0x020c00ad,
|
||||
0xb40be0b4, 0xef980e90, 0xd899c703, 0x1bf59fa6, 0x3a98008e, 0x0c2bb20d, 0xa2ed7e01, 0x014cfe00,
|
||||
0x2bb23ab2, 0x7e30cc90, 0xb300a593, 0x981306a4, 0x2bb20c3a, 0x727efd0c, 0x5c3e00b6, 0xadb300b4,
|
||||
0x7401cb00, 0x93f01c90, 0x9099bc00, 0x7f0069bc, 0xff19e401, 0x091bf4ff, 0x5c3e0260, 0x3a9800b4,
|
||||
0x014cfe0c, 0xffff1be4, 0x7e34cc90, 0xb300b65b, 0x019800ad, 0x343af034, 0xf9263690, 0x60100df4,
|
||||
0xff1be402, 0x0c3a98ff, 0x00b4513e, 0xb20c3a98, 0x7efd0c2b, 0xb300b672, 0x017000ad, 0x98012290,
|
||||
0x2aa6033a, 0xff3708f5, 0x6eb264b2, 0xd43db43d, 0xc4bdf4bd, 0x00b4933e, 0x9473e97f, 0x010d0a00,
|
||||
0x00b48d3e, 0x0600d033, 0xcc90010b, 0x01ff9001, 0xa602ee90, 0xe308f4fa, 0x0b00c4b3, 0x3e547cb5,
|
||||
0x3300b5cf, 0x00a600b9, 0xb0013998, 0x0cf40296, 0xb2030930, 0x5479b56d, 0xf4bde4bd, 0x00b4d23e,
|
||||
0x9073d97f, 0x697c0a00, 0x01ee90e9, 0x9001ff90, 0x399802dd, 0xf4f9a603, 0x493ee908, 0x94bd00b5,
|
||||
0x79b5f101, 0xb224bd54, 0xb5233e1b, 0xe4407f00, 0xf4ffff09, 0xf10f260b, 0x1bf4bfa6, 0xff0be40b,
|
||||
0xb51b3eff, 0x0c3a9800, 0xffff0ce4, 0x00b6727e, 0xb900adb3, 0xff0be400, 0x9019b2ff, 0x44900122,
|
||||
0x9891b202, 0x29a60339, 0x09c508f4, 0xf5b9a6f1, 0x9800a00b, 0x3c980c3a, 0xb6727e0a, 0x00adb300,
|
||||
0x31b5008c, 0xb5cf3e0a, 0xbd6f7f00, 0x01c19294, 0xf05179b5, 0x04bd00f3, 0x3e527fb5, 0x7f00b587,
|
||||
0x014c584b, 0x900c3a98, 0xb3f00100, 0x00c3f000, 0x7e024490, 0xb300b672, 0xb45200a4, 0xe9980be0,
|
||||
0x70999001, 0xa601e9b5, 0xd608f401, 0x9808607c, 0xf00c0c3a, 0xffff0be4, 0x00b6727e, 0x2d00a4b3,
|
||||
0xe4014cfe, 0xb2ffff0b, 0x40cc903a, 0x00a5787e, 0x1900a4b3, 0x98469034, 0x94f0517f, 0xf0f9bcff,
|
||||
0x3e517fb5, 0x0a00b5cf, 0x3ea5b203, 0x9000b5da, 0x77900188, 0x148db318, 0x49fefd90, 0x3c999001,
|
||||
0x457e9abf, 0xf03e00b7, 0x030500b5, 0x00b5f23e, 0x0bb204bd, 0x0b7e3ab2, 0x50b300a6, 0x3a981a00,
|
||||
0x7e04bd0c, 0x9800b6c4, 0x30b50d3a, 0xb7457e0c, 0x0d30b500, 0x900149fe, 0x9fbf5099, 0x0005dcd9,
|
||||
0xb299bf00, 0xf4f9a65a, 0x343e110b, 0x010500b6, 0x00b5f03e, 0x003a317e, 0xf93085fb, 0x7ea0b202,
|
||||
0x9800a5e7, 0xc47e0c0a, 0x0a9800b6, 0xb7457e0d, 0x7e0ab200, 0xbd00b745, 0xbf01fba4, 0x0aafb2a9,
|
||||
0xf4b9a602, 0xb9900d18, 0x98f9bc01, 0xc9a0a4bd, 0xa9bf00f8, 0x020aafb2, 0x18f4b9a6, 0x01b9900b,
|
||||
0xfcbca4bd, 0xbf00f899, 0xb2afb2b9, 0xf4c9a6ca, 0xf10a0708, 0xfbb500f8, 0xb5fca002, 0x00f801fc,
|
||||
0xaf98a9bf, 0x90b9bc02, 0xfbbfa9a0, 0x08f49ba6, 0x029bbb08, 0xa998a9a0, 0xa6aabf01, 0x051bf4a9,
|
||||
0x00f8f10a, 0x0800a0b3, 0x00b7457e, 0x30f400f8, 0x05dcdff8, 0x32f90000, 0x49feffbf, 0x14999001,
|
||||
0x9fa0a0b2, 0xa0b3b3b2, 0xfd024200, 0x0cf4a2a6, 0x01ab903a, 0xb60141fe, 0x119002b4, 0x7e1ab210,
|
||||
0xb300b7b1, 0xbf2700a4, 0xb21db219, 0xa0e4bd2c, 0x90dfbf90, 0x9eb201e9, 0xa699fcbc, 0xf408f490,
|
||||
0x3da0ddbf, 0x00b72a3e, 0x49fe020a, 0x14999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b,
|
||||
0x35fb003a, 0xda00f808, 0x00002944, 0x0041c77e, 0xf000a630, 0xa6f00bac, 0x01aab901, 0x44da00f8,
|
||||
0x7e000029, 0x30004142, 0xacf000a6, 0x01a6f00b, 0xf801aab9, 0x2944da00, 0xd77e0000, 0xa6300042,
|
||||
0x0bacf000, 0xb901a6f0, 0x00f801aa, 0x7effb4f0, 0xf8000b94, 0x0b7e7e00, 0xf900f800, 0x3da0b202,
|
||||
0x384c7ea4, 0x00a6b000, 0xa00b9cf0, 0xfb9ab20a, 0xb202f901, 0x7ea43da0, 0xb000382a, 0x9cf000a6,
|
||||
0xb20aa00b, 0xf401fb9a, 0xdcdfe430, 0xf9000005, 0xfeffbf82, 0x45fe0149, 0x3c999001, 0xa00147fe,
|
||||
0x2455909f, 0xd9347790, 0x0000141c, 0x4bfe9abf, 0x90080c01, 0xff0d2cbb, 0x0000c17e, 0xeb00a433,
|
||||
0x3f0c30b4, 0x0c943339, 0x043118e2, 0x0f001033, 0xb0011933, 0x3e043d00, 0x9800b96d, 0x2cd9023f,
|
||||
0x98000014, 0x34580431, 0x3f5fa00a, 0x0339989f, 0xb5183690, 0xff090159, 0xf43379a0, 0xf77e1800,
|
||||
0xa0320032, 0x2900ad33, 0xdf010901, 0x0000142c, 0x1272f920, 0xbd0043f0, 0xb8ad3e14, 0x0241bc00,
|
||||
0x010006b1, 0x40060df4, 0x947e0100, 0x24d9000b, 0xbf000014, 0xff2ce49a, 0xb26bb2ff, 0x1300de0d,
|
||||
0x117e0000, 0x7aa000af, 0xd400adb3, 0x985bbf00, 0x1d90015c, 0x7c0eb204, 0x10bc2020, 0x1300da10,
|
||||
0x367e0000, 0xa0320021, 0xc500ad33, 0x4cb4bd00, 0x00da0100, 0xa6000013, 0xa408f414, 0x00b95c3e,
|
||||
0xd9023f98, 0x0000142c, 0x58043498, 0x5fa00a32, 0x39989f3f, 0x18389003, 0x090159b5, 0x3379a0ff,
|
||||
0x7e1600f4, 0x320032f7, 0x00ad33a0, 0x2cdf0084, 0x20000014, 0xff26e4f1, 0x3e24bdff, 0xbc00b94d,
|
||||
0x16b11262, 0x0df40100, 0x01004106, 0x000b947e, 0x5c985bbf, 0x042d9001, 0x00da1eb2, 0x7e000013,
|
||||
0xe40020d0, 0xbcffff4c, 0xa0322021, 0x1db28bb2, 0x001300de, 0x40417c00, 0x3500a433, 0x001424d9,
|
||||
0x7e9abf00, 0xa000ac3b, 0x00a4b37a, 0x4cb4bd13, 0x00da0100, 0xa6000013, 0xa608f426, 0x5c985bbf,
|
||||
0xbd7ab201, 0x7e040ed4, 0x32002136, 0x2db034a0, 0x817e3ab2, 0x0d33000f, 0x30fe7100, 0x020f3a01,
|
||||
0x1838f130, 0x04090333, 0x30014afe, 0x31303991, 0x90b4bd3b, 0x717e38aa, 0xe73e000f, 0x02f900b7,
|
||||
0x002930d9, 0xbfa0b200, 0x7e640b9a, 0x090000de, 0x00a43310, 0xa6008961, 0x009fcf02, 0x1000f5f1,
|
||||
0x8a009ff6, 0x4b02a600, 0xc4bd1000, 0xbd27104d, 0x198b7ee4, 0x00a43300, 0x2930d915, 0x9abf0000,
|
||||
0x00009b7e, 0x123e0409, 0x0ab200ba, 0x7e03e84b, 0x890016fc, 0xb802a400, 0x000200aa, 0x920aa5b6,
|
||||
0x9af601aa, 0x01114f00, 0x020099b8, 0x009ff600, 0x9a32943d, 0x000001fb, 0x00000000, 0x00000000,
|
||||
0xfa95075d, 0x10f99508, 0xa132f032, 0xf9339232, 0x3000d515, 0x0cf415f6, 0x05f93346, 0xf63005fc,
|
||||
0x1c0cf405, 0x8701f933, 0x301f0a00, 0x08f501f6, 0xf630073a, 0x250cf503, 0x8e283e07, 0x10f93300,
|
||||
0xf630041b, 0x0e0cf410, 0xf50df630, 0x3e070f08, 0x33009156, 0x070711fd, 0x0091603e, 0x431df933,
|
||||
0x1df63006, 0x33250cf4, 0x03fb18f9, 0xf418f630, 0xfd330c0c, 0x3e06e817, 0x33009409, 0x01011af9,
|
||||
0xda1cfd33, 0x94c63e06, 0x21f93300, 0xf6300263, 0x0c0cf421, 0xc61efd33, 0x8ece3e06, 0x24f93300,
|
||||
0xfd33063a, 0x3e06b825, 0xdf00949a, 0x0000299c, 0x2614f918, 0x0d18f4a9, 0xbcffa9c4, 0x6f3e98f9,
|
||||
0xbda00093, 0x0094313e, 0x1d33080a, 0x7e069e00, 0x330063f7, 0x490a0300, 0xa9fdff00, 0x3e4aa004,
|
||||
0x0a009431, 0x09163003, 0x06800cf5, 0x00299cd9, 0x0e99bf00, 0xbc080a01, 0x99e7f4e1, 0x9ffd0133,
|
||||
0x670bf504, 0x02103306, 0x0410330e, 0x3eea3210, 0xb2008e85, 0x8e7b3eea, 0xfea4bd00, 0xbb90014b,
|
||||
0x63b47e2c, 0x8a847e00, 0x1fad3300, 0x49fe063f, 0x2c999001, 0xe9959ebf, 0x0190b31f, 0x3ed4bd0a,
|
||||
0xdd008ea8, 0xff000000, 0x3380e9c4, 0xbd0a0094, 0x8ebf3ef4, 0xb0010f00, 0x1ff400e6, 0x95ff0f05,
|
||||
0xd9ff08e9, 0x90f9bc95, 0xc83e49a0, 0x9b320094, 0x5db24cb2, 0x0077ca7e, 0x0094c83e, 0x5507a033,
|
||||
0xf407a630, 0x9cd9120c, 0x30000029, 0x0df402a6, 0x8f253e2b, 0x0ca63000, 0xd9120cf4, 0x0000299c,
|
||||
0xf409a630, 0x483e5718, 0xa033008f, 0x030a610d, 0xb80e1d33, 0x8f7b3e05, 0x01999800, 0x000000df,
|
||||
0x8f613e04, 0x01999800, 0x000000df, 0x8f613e08, 0x299cd900, 0x99980000, 0x00008f02, 0x049ffd02,
|
||||
0x00c61bf5, 0x0090463e, 0x8f029998, 0xfd040000, 0x1bf5049f, 0x463e00c4, 0x99980090, 0x00008f02,
|
||||
0x049ffd01, 0x3e2f1bf4, 0xd9009046, 0x0000299c, 0x4000008f, 0x3e029998, 0xd9008f88, 0x0000299c,
|
||||
0xdf029998, 0x00800000, 0xf5049ffd, 0x3e00a91b, 0x33009046, 0x30730710, 0x0cf40716, 0x0210331a,
|
||||
0x0216304b, 0x33540cf4, 0x33270010, 0x0486011d, 0x008fd83e, 0xf40c1630, 0x16300d0c, 0x6518f409,
|
||||
0x0090163e, 0xf40e1630, 0x313e6d0d, 0x4ab20094, 0x00789f7e, 0x0094c83e, 0x2b321a32, 0x5db24cb2,
|
||||
0x007cca7e, 0x0094c83e, 0x2b321a32, 0x5db24cb2, 0x007c3b7e, 0x0094c83e, 0x2b321a32, 0x467e4cb2,
|
||||
0xc83e007e, 0x2b320094, 0x5db24cb2, 0xa27e070a, 0xc83e007b, 0x080a0094, 0x4cb22b32, 0x037e5db2,
|
||||
0x1a32007b, 0x3cb22b32, 0x5eb24db2, 0x007ed37e, 0x0094c83e, 0x2b321a32, 0x4db23cb2, 0xa77e5eb2,
|
||||
0xc83e0078, 0x080a0094, 0x0094c83e, 0x9d33040a, 0xd9047a00, 0x0000299c, 0x0a029998, 0x0094f108,
|
||||
0x670bf540, 0x0149fe04, 0x900142fe, 0x22902c99, 0xa09da018, 0x0499922d, 0x99929da0, 0x929da004,
|
||||
0x9da00499, 0xa0049992, 0x0119339d, 0x16300085, 0x0e08f401, 0x1d33030a, 0x3e043202, 0xfe009122,
|
||||
0x40fe0141, 0x2c119001, 0xb2280090, 0x7e0bb21a, 0xbf007560, 0xfe00bf19, 0x42fe0143, 0x0794f001,
|
||||
0x90243390, 0x3ab22022, 0xb20141fe, 0x1c11902b, 0xb20704f0, 0x0404b61c, 0x7e0509fd, 0xbf006a5c,
|
||||
0xbf3fbf29, 0x0141fe1e, 0xf00894b6, 0x94f1fff4, 0xf4b6ffff, 0x18e4b610, 0xfd181190, 0x1ab20509,
|
||||
0xfd050ffd, 0x497e050e, 0x483e006a, 0x2ab20091, 0x006a397e, 0x20bf2ab2, 0x006a297e, 0x4e3e29bf,
|
||||
0x41fe0091, 0x18119001, 0x167e1ab2, 0x1ab2006a, 0x037e10bf, 0x19bf006a, 0x04f11ab2, 0x94b6ffff,
|
||||
0x0590ff10, 0x0069f07e, 0x94f119bf, 0x40a0ffff, 0x313e59a0, 0xfab20094, 0x0095f47e, 0x0094c83e,
|
||||
0x0d00a033, 0x5c01ad33, 0x91ae3e03, 0x33b0bf00, 0x330c0190, 0x3e2f0294, 0xfe00919e, 0x010a0141,
|
||||
0xb2181190, 0x94ef7e1b, 0x1fad3300, 0x1fbf033f, 0x09fffe09, 0x049fff95, 0xa23e10a0, 0x04f10091,
|
||||
0x2a3201ff, 0x0a7e0bb2, 0xc83e0095, 0x9a320094, 0x0094ef7e, 0x0094c83e, 0x237efab2, 0xc83e0095,
|
||||
0x9cd30094, 0xbf000029, 0x0000df39, 0x080a2000, 0xf5049ffd, 0x0a02f50b, 0x001d3303, 0x40fe02ef,
|
||||
0x014cfe01, 0x90280090, 0x0bb22ccc, 0x900142fe, 0x2ab22422, 0x0073477e, 0x9670097f, 0x0b9cf003,
|
||||
0x7e079194, 0x1800010e, 0x087e5830, 0x00330001, 0x1fb20a00, 0x00924d3e, 0xa4732a7f, 0x19b20a00,
|
||||
0x00924b3e, 0x734019c5, 0x731403a0, 0x731804a0, 0xe51c02a4, 0x3e01009f, 0xe500924d, 0x3e02009f,
|
||||
0xe500924d, 0x3e03009f, 0xb200924d, 0x0149fe9f, 0x7f2c9990, 0x04997399, 0x96700088, 0x1a0cf404,
|
||||
0x48019073, 0xf4019670, 0x90733608, 0x9d734c02, 0x3e00e303, 0x730092cf, 0x009b0799, 0xf4079670,
|
||||
0x9073100c, 0x9d736905, 0x3e00cb06, 0x73009304, 0x009c0899, 0xbd099d73, 0x93393e00, 0x07ff8900,
|
||||
0x04f9fdfe, 0x0093513e, 0xffc7ff49, 0x95f194f9, 0xc03e2000, 0xff490092, 0x94f9ffc7, 0x180095f1,
|
||||
0xfe3fff8f, 0xe5049ffd, 0x3e40009f, 0x49009351, 0xf9ffc7ff, 0x0095f194, 0x92c03e10, 0xc7ff4900,
|
||||
0xf194f9ff, 0x3e080095, 0x490092f5, 0xf9ffc7ff, 0x0095f194, 0x3fff8f10, 0x049ffdfe, 0x80009fe5,
|
||||
0x0093513e, 0xffc7ff49, 0x95f194f9, 0x1c3e0800, 0xff490093, 0x94f9ffc7, 0x100095f1, 0xfe3fff8f,
|
||||
0xe5049ffd, 0x3ec0009f, 0x49009351, 0xf9ffc7ff, 0x0095f194, 0x93433e08, 0xc7ff4900, 0xf194f9ff,
|
||||
0x8f100095, 0xfdfe3fff, 0x008f049f, 0x9fff0100, 0x299cd9f5, 0x99180000, 0x00903350, 0x0000890f,
|
||||
0x95f9ff02, 0x00936f3e, 0xfdffff89, 0xa094f9ff, 0x94313e49, 0x14a63000, 0x01480cf5, 0xd9ffafc4,
|
||||
0x000004d0, 0xd9e89fbc, 0x0000299c, 0xefc7080a, 0x989fbc3b, 0xbb96efc7, 0x94f0059f, 0x2b0bf501,
|
||||
0xff29c401, 0x010defe7, 0x0a029b54, 0xf5bf6604, 0xf0011918, 0xb9e400f3, 0xf9bcffff, 0x04c6b0c2,
|
||||
0x0c090df4, 0x93cb3e04, 0xe44da000, 0xc4ffffba, 0xebe703e9, 0x94330142, 0xbabc1200, 0x29bcd9b0,
|
||||
0x4ab20000, 0x0093f43e, 0x000644d9, 0xbc99bf00, 0x4ab2b0ba, 0x7eb09bbc, 0x3e000b7e, 0x32009431,
|
||||
0x9acb7e9b, 0x94c83e00, 0x00a03300, 0x33080a0f, 0x00b1011d, 0x0094c83e, 0x900140fe, 0x0ab22400,
|
||||
0x0072fb7e, 0xa54f093f, 0x00943300, 0xa05a0f06, 0x3e1f0a4f, 0xd90094c8, 0x0000299c, 0x33159918,
|
||||
0x00870099, 0x3802a033, 0xf402a630, 0xa0330f0c, 0xa4331800, 0x703e6e01, 0xa0330094, 0xa4332c03,
|
||||
0x903e6204, 0x3ab20094, 0x009d827e, 0x0094c83e, 0xcbb2bab2, 0x009ffc7e, 0x0094c83e, 0x0b7e2a32,
|
||||
0xc83e009d, 0x2a320094, 0x00a2127e, 0x0094c83e, 0xa67e2a32, 0xc83e00a1, 0x9cd90094, 0x18000029,
|
||||
0x90331599, 0xfbc72400, 0xb22c326c, 0xf05eb24d, 0xac7e0fa4, 0xc83e009e, 0x020a0094, 0x0094c83e,
|
||||
0xc83e030a, 0x090a0094, 0x900149fe, 0x9fbf3099, 0x0005dcd9, 0xa699bf00, 0x070bf4f9, 0x003a317e,
|
||||
0xf01c55fb, 0xa4b6ffa4, 0x0acaa002, 0x3200f81f, 0x30040aaf, 0x0cf402f6, 0xfff4f012, 0x002a5cd9,
|
||||
0xf89fbc00, 0xbfa01f0a, 0xaf3200f8, 0xf630040a, 0x100cf402, 0xd9fff4f0, 0x00002a5c, 0x9bbc1f0a,
|
||||
0xf900f8f9, 0x10af9512, 0xae95b1b2, 0x299cd008, 0xff090000, 0x1bf4e926, 0x4909183d, 0x1bf5f926,
|
||||
0x091800b2, 0x331c0a4a, 0x00ab0199, 0xf5019630, 0x0a00a108, 0x029d3306, 0x0998009d, 0x0af43d13,
|
||||
0x18b9a01f, 0x0f354909, 0x0199104a, 0x3e490935, 0x180095f2, 0x0a0a4a09, 0x7a009433, 0x002a5cd9,
|
||||
0xf099bf00, 0x99c7fff4, 0x0694b6e8, 0xb0f0f9bc, 0x0cf43ff6, 0x33030a5e, 0x905b0ce4, 0x96b104f9,
|
||||
0x0cf40040, 0x02f9944e, 0x002a68df, 0x909fbc00, 0x9a589f7f, 0x73080d01, 0x981b02f4, 0x290d0409,
|
||||
0x338094f0, 0x7e0f0090, 0x0900754b, 0x35d43d01, 0x9cdf5009, 0x18000029, 0xd9c449fe, 0x13f9b5ff,
|
||||
0xf9350209, 0xffe4f04a, 0x1ea01c0a, 0x0095f23e, 0x11fb040a, 0xadb222f9, 0xa0c7b2b2, 0xb0bbbfe8,
|
||||
0x0cf53f06, 0xbcc400cc, 0xffaec4ff, 0x0d0fe4b3, 0xc6b0050a, 0xbb0cf53f, 0x2a5cd900, 0x99bf0000,
|
||||
0xc7ff9fc4, 0xf194e899, 0x0694b606, 0x2c0ee0b3, 0x440fe0b3, 0xedb31f0a, 0x7c009a0d, 0x96719009,
|
||||
0x0cf500ff, 0x9fe4008c, 0x68d9ffff, 0xbc00002a, 0x2fa0f89f, 0x00966e3e, 0x7190017c, 0xf400ff96,
|
||||
0x9fe46f0c, 0x68d9ffff, 0xbc00002a, 0x1f0af99b, 0x0096d03e, 0x0af0c9bc, 0xf0d9c705, 0x9002fb94,
|
||||
0x9c940199, 0xe0cbbc02, 0x1000e6b1, 0xbc440cf4, 0x030a9001, 0xbc0294b6, 0xf6b1f0c9, 0x0cf41000,
|
||||
0xf49ba632, 0x9ea60808, 0xa62008f4, 0x080df4b9, 0x08f4bfa6, 0x2a68df16, 0x9fbc0000, 0xb0bfbca0,
|
||||
0x000b7e7e, 0x00966e3e, 0xd03e040a, 0x030a0096, 0xc9b221fb, 0x0fffa6b1, 0xbc2b0cf4, 0x96b1909a,
|
||||
0x0cf41000, 0x2a68de21, 0xaebc0000, 0x00d03390, 0x3e9ab20a, 0xb20096fb, 0x7e9bb2ba, 0x0a000b7e,
|
||||
0x0a00f81f, 0xf400f804, 0xdcdfe430, 0xf9000005, 0xfeffbf12, 0x99900149, 0xa0a0b220, 0xf0d1b29f,
|
||||
0xedb2ffb4, 0xb40aa0b4, 0x09c40be0, 0xf49ba607, 0x0fc7751b, 0x0149fe2f, 0xa0089990, 0x029eb59d,
|
||||
0xbc019ab5, 0x94bdb89f, 0x90014ffe, 0xf9a014ff, 0xb501fcb5, 0x09c702f1, 0xbcbabf23, 0x0fc7c8f9,
|
||||
0x8a09c785, 0xf0e09f3c, 0x0dc71ff4, 0x05cfbb91, 0xb990d93c, 0xd4f000ee, 0x1fe4f01f, 0xbc0099b9,
|
||||
0x94f0e0ef, 0xbcff0f1f, 0xf9bc909d, 0x05febb95, 0xfd049dbb, 0x99b904fc, 0x04fdbb00, 0xfd049afd,
|
||||
0xb9a0059f, 0x900149fe, 0x9fbf2099, 0x0005dcd9, 0xa699bf00, 0x070bf4f9, 0x003a317e, 0xf41c15fb,
|
||||
0xdcd9f430, 0xf9000005, 0xb299bf82, 0x014ffed1, 0xa02cff90, 0x92dd3ff9, 0x1f0003ff, 0xf0351709,
|
||||
0x02f03501, 0xb6b2f920, 0xa5b2e3b2, 0x1900d433, 0x000528db, 0x7e240c00, 0x09000b7e, 0x200a3209,
|
||||
0x98823e19, 0x30030a00, 0x0cf409d6, 0x0147fe78, 0xb2ffc4c4, 0x90043df8, 0x793e2477, 0x09c40098,
|
||||
0x947bb2ff, 0x040c0292, 0x3da026bc, 0x96d27ed4, 0x1fa43300, 0xc47fbf6b, 0x94a607f9, 0xc75e18f4,
|
||||
0x991223f9, 0x01963001, 0xc7520cf4, 0xe9c42ffe, 0xc8893cff, 0xc78afdc7, 0xd93c85f9, 0xf49c2690,
|
||||
0xe0333b0c, 0xf9c73803, 0x909d3c91, 0x0cf49c26, 0x9052bc2c, 0xa0010010, 0x26193f9f, 0xa108f409,
|
||||
0x49fe1f0a, 0x2c999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0xb23e230b, 0x0d0a0098, 0x0fc439bf,
|
||||
0x0000deff, 0x9efdff00, 0x05f9fd04, 0x823e3fa0, 0x317e0098, 0x85fb003a, 0xa830f40c, 0x0005dcd9,
|
||||
0xbf82f900, 0xf830f499, 0x4ffea7b2, 0x80ff9001, 0xaabff9a0, 0xb00eb1b0, 0xa6c70dc1, 0x01691268,
|
||||
0xf5039630, 0xc7013b0c, 0x96306ca9, 0x310cf50a, 0x0141fe01, 0x900140fe, 0x00905711, 0x10a5b650,
|
||||
0xb4bd1920, 0xe37e0cb2, 0xad330094, 0xbf011d1f, 0x0142fe09, 0x90ff6bc4, 0xb4b65822, 0xbc2ab204,
|
||||
0x6c32b0b9, 0x7eb21db2, 0x0097bf7e, 0x333fa130, 0x00f51fad, 0x080141fe, 0x40119001, 0x1990243d,
|
||||
0x0c1e9008, 0x54bd343d, 0xb00c91b0, 0x0e3e0be1, 0x90b4009a, 0x0c1bb214, 0xbcd43d10, 0x4ab24059,
|
||||
0x0096d27e, 0xc31fad33, 0x9819bf00, 0xffde011f, 0xfde0ffff, 0x1fb5049e, 0x3319a002, 0x3d0a0020,
|
||||
0x99a83e04, 0x0cb0b400, 0xb20bc0b4, 0x8d3e7e1a, 0x321fbf00, 0xffffdea0, 0x09c4e0ff, 0x04fefd1f,
|
||||
0xfd1894b6, 0x19a0059f, 0x1bb24ab2, 0x010d100c, 0x0096d27e, 0x731fa433, 0x0a002033, 0x083e0102,
|
||||
0x0433009a, 0x043d3f1f, 0x0099f53e, 0x98ff09c4, 0x1d98021c, 0x0de0b403, 0x90014ffe, 0xf9bc58ff,
|
||||
0x0e90b4a8, 0x1001e1b0, 0x3b320100, 0xb20091b0, 0x97077e7e, 0x57903400, 0x08f40926, 0x9a083ed2,
|
||||
0x3d19bf00, 0x1f929584, 0x90013310, 0x36261055, 0xff4208f5, 0x80331b0a, 0x243e1100, 0x030a009a,
|
||||
0x009a273e, 0xfe3fa034, 0x99900149, 0xd99fbf80, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xf4003a31,
|
||||
0x85fb0830, 0xf430f458, 0x0005dcdf, 0xbf12f900, 0x0149feff, 0xfe109990, 0x9fa00141, 0x4a0c1190,
|
||||
0x040b00b8, 0x307e1cb2, 0xa433008c, 0x40fe2b1f, 0x00b44a01, 0x0b080090, 0x7e0cb204, 0x33008c30,
|
||||
0xbf161fa4, 0xa60fbf19, 0x0b9cf09f, 0x320196f0, 0x9a973e9a, 0xfea43d00, 0x99900149, 0xd99fbf10,
|
||||
0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0xa9980c15, 0x90afb204, 0x010b59ac, 0x4a2095f0,
|
||||
0xf9b50090, 0x8c307e04, 0xf400f800, 0xdcd99030, 0xf9000005, 0xfe99bf52, 0xff90014f, 0xa0030e84,
|
||||
0x00ad33f9, 0x9cd90105, 0x18000029, 0x99335999, 0x3200f600, 0x014cfeba, 0xcc90b4bd, 0x94e37e20,
|
||||
0x33ae3200, 0x00e31fad, 0x4a0144fe, 0x449000b8, 0xb2040b1c, 0x8c307e4c, 0x33ae3200, 0x00cb1fad,
|
||||
0x4a0140fe, 0x009000b4, 0xb2040b18, 0x8c307e0c, 0x33ae3200, 0x00b31fad, 0x4abf09bf, 0x0bf5a9a6,
|
||||
0xaa9000a6, 0x0140febc, 0x0090010b, 0x7e0cb227, 0x32008c30, 0x1fad33ae, 0x093f0091, 0xb20142fe,
|
||||
0x28229043, 0x45ff94f0, 0x91541000, 0x9baa3e02, 0xe43abf00, 0xbcffff1b, 0xb9a6925a, 0xb2050df4,
|
||||
0x90b0729b, 0xb3f0bcaa, 0x7e2cb200, 0xe4008c30, 0x32ffff0f, 0x1fa433ae, 0x7b39bf51, 0x2fbc0210,
|
||||
0x90f9bc20, 0x0fff94f1, 0x147339a0, 0x49fec700, 0x20999001, 0x99909abf, 0xfe9c3f07, 0x010d014b,
|
||||
0xf028bb90, 0xc4b6ffc4, 0x96d27e02, 0x33ae3200, 0xb2171fa4, 0x00b84a4c, 0xf07e040b, 0xae32008a,
|
||||
0x009be63e, 0x49fe090e, 0x84999001, 0xdcd99fbf, 0xbf000005, 0xa6ea3299, 0x070bf4f9, 0x003a317e,
|
||||
0x987055fb, 0x008f04a9, 0x9ffd3ff0, 0x04a9b505, 0xaeb200f8, 0x0a10bf12, 0x26ee0904, 0x2e0df4f9,
|
||||
0x0a00c433, 0x2d3eea7f, 0xea58009c, 0x00a07301, 0x26ff0918, 0x140bf4b9, 0xffffa9e4, 0xf0059bbb,
|
||||
0x1bf40194, 0xf8090a07, 0xf81f0a00, 0xf830f400, 0x0005dcdf, 0xbf32f900, 0x0149feff, 0x900140fe,
|
||||
0x43fe1499, 0xb29fa001, 0x90b1b2a2, 0x33901300, 0x10ec4a12, 0x0cb2010b, 0x008b707e, 0x741fa433,
|
||||
0xa6300a3f, 0x690cf401, 0x210020b3, 0x94ffa4f0, 0x240b05a9, 0xb202a4b6, 0xa0a9bc2c, 0x10eeaab8,
|
||||
0x8b707e00, 0x1fa43300, 0x0010b34b, 0x0b0a3f23, 0xf01cb204, 0xa994ffa4, 0x02a4b605, 0xb8a0a9bc,
|
||||
0x0010eeaa, 0x008b707e, 0x281fa433, 0x0b10ec4a, 0x7e3cb201, 0x33008b70, 0x3f191fa4, 0x01f6303f,
|
||||
0x3f0e0cf4, 0xf49f2609, 0xf03e8a1b, 0x050a009c, 0x900149fe, 0x9fbf1499, 0x0005dcd9, 0xa699bf00,
|
||||
0x070bf4f9, 0x003a317e, 0xf40835fb, 0xdcdfd830, 0xf9000005, 0xfeffbf22, 0x99900149, 0xa0a13230,
|
||||
0x299cd99f, 0x99980000, 0x0ab2b204, 0x0094f108, 0x360bf440, 0xbd0140fe, 0x0c0090b4, 0x4d7e0ab2,
|
||||
0xa433009c, 0x0ab2251f, 0x010c1b32, 0x009c127e, 0x171fa433, 0x90ff19c4, 0x99bc0299, 0x9009bc90,
|
||||
0x92f0997f, 0xfe29a00f, 0x99900149, 0xd99fbf30, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31,
|
||||
0x30f42825, 0x05dcdfd8, 0x62f90000, 0x49feffbf, 0x40999001, 0x9fa0b2b2, 0x00299cd9, 0x04999800,
|
||||
0xc3b2a6b2, 0x94f1080b, 0x0bf51000, 0xb4bd00e5, 0x900141fe, 0x1ab21c11, 0x009c4d7e, 0xad33ab32,
|
||||
0x0b00d11f, 0x0c1ab2ff, 0x9c127e01, 0x33ab3200, 0x00c01fad, 0x1ab2ff0b, 0x127ec43d, 0xab32009c,
|
||||
0xaf1fad33, 0x01145800, 0x29a094bd, 0x109039a0, 0x72157f04, 0x4da47d4c, 0xe4bd8000, 0x323e0101,
|
||||
0xc9c4009e, 0x200bf401, 0xfd660f7f, 0xbc0a1df4, 0x273ea41e, 0xfd66009e, 0xbc0d1bf4, 0xa9fd941e,
|
||||
0x9e273e05, 0x90df7200, 0xc57601ee, 0x02009001, 0xc473fd72, 0x6ebfd000, 0xc400d3f0, 0xffdfffa9,
|
||||
0xb6ff00ff, 0xeffd1094, 0x00008c04, 0x059efdff, 0xfd049cfd, 0x69a0059d, 0x4ee429bf, 0xafc7ffff,
|
||||
0x10ed94e8, 0xff0094f1, 0xfd059dfd, 0x2fa005f9, 0xffff59e4, 0xff00eeb9, 0x0bf4a4e9, 0xfd39bf15,
|
||||
0x9afd049c, 0xbf39a005, 0x0095f129, 0xfe29a001, 0x99900149, 0xd99fbf40, 0x000005dc, 0xba3299bf,
|
||||
0x0bf4f9a6, 0x3a317e07, 0x2865fb00, 0xdff030f4, 0x000005dc, 0xffbf62f9, 0x900149fe, 0xa1322899,
|
||||
0xb0329fa0, 0xd5b2c432, 0xb630e6b2, 0x120cf504, 0x299cd901, 0x9e980000, 0xffb9c404, 0xc4119990,
|
||||
0x080a1f9f, 0xb905efbb, 0x94f00099, 0x909fbc1f, 0xf9bbff0f, 0x34feff05, 0xe9013db3, 0xfe94bd00,
|
||||
0xff90014f, 0x0142fe20, 0x9001f9b5, 0xf9a01c22, 0x2bb2a4bd, 0x009c4d7e, 0xc91fad33, 0x322ab200,
|
||||
0x7e1b323c, 0x33009c12, 0x00ba1fad, 0x46020033, 0xf4020630, 0x0033100c, 0x0d331a00, 0x3e00a501,
|
||||
0x33009f60, 0x33410300, 0x0098040d, 0x009f963e, 0xf1ff19c4, 0xb8012690, 0x0011369e, 0x009f6c3e,
|
||||
0xf1ff19c4, 0xb8012690, 0x0011469e, 0xa53e100f, 0x19c4009f, 0x2690f1ff, 0xb8040f01, 0x0011569e,
|
||||
0x009fa53e, 0xf1ff19c4, 0x0f012690, 0x5a9eb802, 0xa53e0011, 0x19c4009f, 0x2690f1ff, 0x01004f01,
|
||||
0x115c9eb8, 0x03499400, 0x9cc4040a, 0xf4cfa6f8, 0xc9903218, 0xa6080b08, 0x060df49f, 0xbcb2fcbc,
|
||||
0x40fea0ec, 0x20009001, 0x707e0cb2, 0xa433008b, 0x09bf131f, 0x009859a0, 0x3e60a001, 0x0a009fe1,
|
||||
0x0149fe03, 0xbf289990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6, 0x3a317e07, 0x1065fb00, 0xdfe830f4,
|
||||
0x000005dc, 0xffbf52f9, 0x900149fe, 0xa3b22c99, 0x9cd99fa0, 0x98000029, 0xb2b20499, 0x94f1080a,
|
||||
0x0bf52000, 0x40fe00ca, 0x90a4bd01, 0x0bb21800, 0x009c4d7e, 0xb81fad33, 0x0b0ab200, 0x7ec43dff,
|
||||
0x33009c12, 0x00a91fad, 0x7f0141fe, 0x1c119000, 0x0b10dc4a, 0x7e1cb210, 0x33008b70, 0x00911fad,
|
||||
0x15b20b72, 0x04bdc4bd, 0xff04e001, 0x00a0e83e, 0xf401b9c4, 0xc6b0690b, 0x350cf407, 0x5c3c3dbf,
|
||||
0x1f0ec4f8, 0xb9030990, 0xf4f00099, 0x1f94f0ff, 0xbc909ebc, 0x9fff9549, 0x049ebbf4, 0xb904febb,
|
||||
0x9dfd0099, 0x059ffd04, 0xdc3e39a0, 0x2dbf00a0, 0xc4f85c3c, 0x09921f1e, 0x0099b91d, 0xf0fff4f0,
|
||||
0x9ebc1f94, 0x9549bc90, 0xbbf49fff, 0xfebb049e, 0x0099b904, 0xfd049dfd, 0x29a0059f, 0x7601cc90,
|
||||
0x009001b5, 0x04119004, 0x8800b473, 0x900149fe, 0x9fbf2c99, 0x0005dcd9, 0xa699bf00, 0x070bf4f9,
|
||||
0x003a317e, 0xf41855fb, 0xdcdfd430, 0xf9000005, 0xfeffbf22, 0x99900149, 0xfea23234, 0x9fa00141,
|
||||
0x4a0c1190, 0x280b2398, 0x707e1cb2, 0xa433008b, 0x10985d1f, 0xbc19bf01, 0x90a6f290, 0xb01008f4,
|
||||
0x9cf001f6, 0x0196f00b, 0x00a1563e, 0xf9a6e109, 0xf00b9cf0, 0x0b0a0196, 0x33009033, 0x0029b4d9,
|
||||
0x019c9800, 0x4ffe9bbf, 0x0cff9001, 0x4d90f0bc, 0x9235239c, 0x90240e08, 0x94f00109, 0x04fa901f,
|
||||
0x7e01f9b5, 0x7e002136, 0xfe008a84, 0x99900149, 0xd99fbf34, 0x000005dc, 0xf9a699bf, 0x7e070bf4,
|
||||
0xfb003a31, 0x30f42c25, 0x05dcdff8, 0x12f90000, 0x49feffbf, 0x0c999001, 0x9fa0a132, 0x00299cd9,
|
||||
0x049f9800, 0x0089080a, 0xf9fd0100, 0x2a0bf404, 0xbd0140fe, 0x080090a4, 0x4d7e0bb2, 0xa433009c,
|
||||
0x0ab2191f, 0xc43d1b32, 0x009c127e, 0x0b1fa433, 0x7e1f1ac4, 0xfe00a107, 0x99900149, 0xd99fbf0c,
|
||||
0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x30f40815, 0x05dcdff8, 0x12f90000, 0x49feffbf,
|
||||
0x0c999001, 0x9fa0a132, 0x00299cd9, 0x04999800, 0x94f1080a, 0x90738000, 0x40fe2e00, 0x90a4bd01,
|
||||
0x0bb20800, 0x009c4d7e, 0x1c1fa433, 0x1b320ab2, 0x127ec43d, 0xa433009c, 0x1ac40e1f, 0x20a5f01f,
|
||||
0x00a1077e, 0x900149fe, 0x9fbf0c99, 0x0005dcd9, 0xa699bf00, 0x070bf4f9, 0x003a317e, 0xf90815fb,
|
||||
0x06b99552, 0x94b6c4b2, 0xbcd5b203, 0xb0c430a9, 0xa2e03e3f, 0x9831bf00, 0x54b30132, 0x010a1800,
|
||||
0x0cb2b4bd, 0x0039cd7e, 0xfd052bfd, 0xc83e051a, 0x0cb200a2, 0xb4bd010a, 0x0039cd7e, 0xb900b9b9,
|
||||
0x29fd00aa, 0x041afd04, 0xb3014492, 0x900b0040, 0x04b30100, 0x31a0c840, 0xbd0132b5, 0x08339004,
|
||||
0xb50044b3, 0xd4bd51fb, 0x00a27f7e, 0x010d00f8, 0x00a27f7e, 0xbcc400f8, 0x06b5b63f, 0xbc03b4b6,
|
||||
0xab98a0ab, 0x7eaabf01, 0xf0003979, 0x00f801a4, 0xf4bdaeb2, 0xf0b3a43d, 0xef3c0a08, 0xa0a93c98,
|
||||
0xb301ff90, 0xf30080fe, 0x3907a2f0, 0x00f801aa, 0xe9c4ae3f, 0x1b0bf401, 0xff0ef4bd, 0x9098af3c,
|
||||
0x9e2601ff, 0x00c51bf5, 0xf410f4b3, 0x00a40d3e, 0xafbcf4bd, 0x09991890, 0x3301ff90, 0x00ae009d,
|
||||
0xf207f4b3, 0x0c06ad18, 0xf5dc2680, 0x33009e0c, 0x183800e4, 0x9d3301a9, 0x18009300, 0x9d3302a9,
|
||||
0x18008b00, 0x9d3303a9, 0x18008300, 0xa91804af, 0xfff4f005, 0xfd089476, 0x9473059f, 0xdc266f00,
|
||||
0x3e691bf4, 0x1800a402, 0xa91804af, 0xfff4f005, 0xb6ff94f0, 0x9ffd0894, 0x7099cd05, 0x4d009473,
|
||||
0x1201a918, 0x96304199, 0x400cf419, 0x3102a918, 0xf4004096, 0x9631361d, 0x1cf4005a, 0x03a9182f,
|
||||
0x00409631, 0x31251df4, 0xf4005a96, 0xd0331e1c, 0xefc41b00, 0x04f9c4ff, 0xc4151bf4, 0x94b30af9,
|
||||
0xa9180b02, 0x00903307, 0xf8060a08, 0xf8a4bd00, 0x0f12f900, 0xb2b1b202, 0x00a0b3a0, 0xf0a93f22,
|
||||
0x1bf40894, 0xa3107e17, 0x0010b300, 0x181a2006, 0x060f0809, 0x1bf4a926, 0xb2f4bd05, 0xb211fbfa,
|
||||
0xb3020aa9, 0xbf1200c0, 0xb6cdb29a, 0x804c07b4, 0xb7627e00, 0xf400f800, 0xdcdff830, 0xf9000005,
|
||||
0xfeffbf22, 0x99900149, 0xa0a0b210, 0xb3020a9f, 0xbf340000, 0x94943d0a, 0x41fe07b2, 0x902bb201,
|
||||
0x010c0f11, 0x1db21920, 0x00b7797e, 0x1700a4b3, 0x0abf193f, 0x1db22bb2, 0x0cfd94f0, 0x7e192001,
|
||||
0xfe00b762, 0x99900149, 0xd99fbf10, 0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x30f40825,
|
||||
0x05dcdff8, 0x42f90000, 0x49feffbf, 0x18999001, 0x9fa0a1b2, 0xc0b2b4b2, 0xa0b3d3b2, 0xc0b35600,
|
||||
0xcf185200, 0xfe94bd07, 0x22900142, 0x01ff1014, 0xcf3529a0, 0x7ecab207, 0xb200a310, 0x080a352b,
|
||||
0xb27e1ab2, 0xa4b300a7, 0x2bbf2c00, 0x1ab20cb2, 0x00a43f7e, 0x1e00a4b3, 0x4bb21ab2, 0x00a4577e,
|
||||
0x1200a4b3, 0x0e0030b3, 0x32a022bf, 0x00a5323e, 0x49fe020a, 0x18999001, 0xdcd99fbf, 0xbf000005,
|
||||
0xf4f9a699, 0x317e070b, 0x45fb003a, 0xb202f908, 0x00a0b3c0, 0x00c0b324, 0xb6aabf20, 0x804c07b4,
|
||||
0x7e0db200, 0xb300b779, 0xb21000a4, 0xa3307e0a, 0xa5773e00, 0xfb020a00, 0x00a0b301, 0x00c0b317,
|
||||
0xb2aabf13, 0x07b4b6cd, 0x797e100c, 0x00f800b7, 0x00f8020a, 0xb3b242f9, 0xa2b2c4b2, 0xa0b30200,
|
||||
0xea7e4200, 0x030000a5, 0xa0b3a1b2, 0x3bb23600, 0x1cb22ab2, 0x00a54d7e, 0xa4b3a0b2, 0x1ab21e00,
|
||||
0x117eb4bd, 0xa0b200a4, 0x1000a4b3, 0x0c0040b3, 0xf0061918, 0x49a0ff94, 0x1bb22ab2, 0x00a60c7e,
|
||||
0x41fb0ab2, 0x00f800f8, 0xaeb200f8, 0xb30eaa98, 0xbd0a00a0, 0xa6023ef4, 0x0fea9800, 0x0e00a0b3,
|
||||
0xff90010f, 0xbc94bd0e, 0x00f8f9e9, 0x1a00b0b3, 0xb30ea998, 0x980d0090, 0x94b30fa9, 0x01090c00,
|
||||
0xbc0e9990, 0x00f899ab, 0xa002b998, 0xb5ff09a9, 0xb99801a9, 0x04abb502, 0xb503acb5, 0x00f802a9,
|
||||
0xa0b222f9, 0xd2b2c132, 0xb0b3020a, 0x0cb85e00, 0xbd000140, 0x04c998d4, 0x440090b3, 0x08001433,
|
||||
0x3c0390b3, 0xb93fcf3f, 0x1bf4f926, 0x01cf1832, 0x2601b918, 0x271bf4f9, 0x1802ce18, 0xddbc02bf,
|
||||
0x909dbc90, 0xb80394b6, 0x00014099, 0x269009bc, 0x0b1bf4ef, 0xa4bd29a0, 0x00a6a83e, 0x9001dd90,
|
||||
0xd4b318cc, 0x040ab314, 0xabbf21fb, 0xf009acb2, 0x0bf4b9a6, 0x03aa980d, 0x7e01cbb5, 0xf800b65f,
|
||||
0xb232f900, 0xbdb2b2a1, 0x3ef00304, 0xbf00a6f0, 0x01009019, 0x93a61ab2, 0x0a090df4, 0xa6f73e03,
|
||||
0xf493a600, 0x020a091b, 0x00a6f73e, 0x00a6aa7e, 0x08f402a6, 0xfba4bddd, 0xf830f431, 0x0005dcdf,
|
||||
0xbf82f900, 0x0149feff, 0xb2289990, 0xb29fa0a3, 0x00a9b3b8, 0xb0b30084, 0x47fe7f00, 0x05a49801,
|
||||
0x14bd54bd, 0x779024bd, 0xa7613e24, 0x0c3a9800, 0x02bc94bd, 0xb279a0b0, 0xb65f7e7c, 0x0f79bf00,
|
||||
0xf49fa6ff, 0x643d090b, 0x00a74f3e, 0x90015590, 0x04a60100, 0x33d908f4, 0x90070060, 0x24bc0111,
|
||||
0x03399820, 0x18f429a6, 0xbd01060b, 0xa7523e04, 0xb24bb200, 0x16fc7e1a, 0xf45aa600, 0x1190060d,
|
||||
0x06399801, 0x19a6f43d, 0x0f050cf4, 0xbd8f2001, 0xa7973ea4, 0xfe020a00, 0x99900149, 0xd99fbf28,
|
||||
0x000005dc, 0xf9a699bf, 0x7e070bf4, 0xfb003a31, 0x30f40885, 0x05dcdff0, 0x82f90000, 0x49feffbf,
|
||||
0x30999001, 0xa00147fe, 0x08a9989f, 0xb1b0a6b2, 0xb0f10509, 0x843d0a91, 0x779090b2, 0x0369982c,
|
||||
0x7fa0f4bd, 0x08f409a6, 0x0804bd07, 0x0a90b401, 0x1bf409a6, 0x00803335, 0xa85a3e32, 0x0c6a9800,
|
||||
0xb24010bc, 0x7e4bb27c, 0xbf00b65f, 0xa6ff0f79, 0x0f1bf49f, 0x09012290, 0xf439a6f1, 0x43b2051b,
|
||||
0x3e011190, 0xbd00a82d, 0xbdf10314, 0x05699824, 0x08f419a6, 0x0020b3cb, 0xf429a61e, 0x60b50f18,
|
||||
0x09f0b408, 0x6b3ef3a0, 0xf10f00a8, 0x1bf45fa6, 0xbc05b205, 0xdd3e0009, 0x1a0a00a7, 0x59a6f109,
|
||||
0xb50d0bf4, 0x90b40865, 0xbd95a009, 0x0149fea4, 0xbf309990, 0x05dcd99f, 0x99bf0000, 0x0bf4f9a6,
|
||||
0x3a317e07, 0x1085fb00, 0xd9f830f4, 0x000005dc, 0x99bf82f9, 0x90014ffe, 0xa3b228ff, 0xb4b2f9a0,
|
||||
0xc033d0b2, 0xdab20e00, 0x140cb43d, 0x00b7907e, 0xbd0142fe, 0x24229014, 0xff07fe08, 0xfb05fc06,
|
||||
0x00a93a3e, 0xbd0c3a98, 0xb014bc94, 0x2cb229a0, 0x00b65f7e, 0xf00f29bf, 0x0df49fa6, 0xa6fd0f56,
|
||||
0x110cf49f, 0x18f496a6, 0xf495a630, 0x093e451b, 0x98a600a9, 0xa62f0bf4, 0x371bf497, 0x90010998,
|
||||
0x09b50199, 0xa9373e01, 0x04099800, 0xb5019990, 0x373e0409, 0x099800a9, 0x01999002, 0x3e0209b5,
|
||||
0x9800a937, 0x99900309, 0x0309b501, 0x00a9373e, 0x999009bf, 0x9009a001, 0x39980111, 0xf419a605,
|
||||
0x49fe8508, 0x28999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x85fb003a, 0xf830f408,
|
||||
0x0005dcdf, 0xb222f900, 0xb2ffbfa1, 0x03aa98b2, 0x49fe1bbf, 0x10999001, 0xa00140fe, 0x0c00909f,
|
||||
0x5f7e0cb2, 0x0cbf00b6, 0xb2031a98, 0xb6767e2b, 0x011b9800, 0xb9a6ff09, 0x98101bf4, 0x12b50419,
|
||||
0x0292b502, 0x00a9b13e, 0xb2031a98, 0xb6767e2c, 0x031a9800, 0xfd0c1bbf, 0x00b6767e, 0x900149fe,
|
||||
0x12a01099, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x25fb003a, 0xc830f408, 0x0005dcdf,
|
||||
0xbf82f900, 0xf830f4ff, 0x900149fe, 0x9fa06099, 0x18049992, 0xf4bd1cae, 0xa9989fa0, 0x0aa2b205,
|
||||
0x0b91b005, 0x1a00e933, 0x0c2b9802, 0xfe092c98, 0xf100014a, 0xfe44aa90, 0xa6b20144, 0x8b7e2001,
|
||||
0x05b200b6, 0x4490a3b2, 0xaa723e30, 0x08299800, 0x0bf439a6, 0xb22ab231, 0xb2010c3b, 0xa8887e4d,
|
||||
0x04499800, 0x1f0094b3, 0xb3034998, 0x98180094, 0x94b30249, 0x49bf3b00, 0x18f491a6, 0x3e30b209,
|
||||
0xb200aa65, 0x0bb0b419, 0x6ab291b2, 0x00b6a47e, 0x35a6a3b2, 0x0ab91bf4, 0xf503a603, 0xb301a30b,
|
||||
0xb20c0014, 0x3e743d03, 0xb200aa8f, 0x94010703, 0x54bd0738, 0x9b3e86b2, 0x2a9800ab, 0xbce4bd0c,
|
||||
0x4cfe1053, 0x16e1b001, 0xb258cc90, 0xb65f7e1b, 0x00adb300, 0x90b400f3, 0xa6f00f16, 0xd80cf59f,
|
||||
0xb294bd00, 0x1591b02a, 0x00a5ea7e, 0xa9b3a4b2, 0xbf00d600, 0x4c6bb22a, 0x4db20080, 0x00b7797e,
|
||||
0xadb3a0b2, 0xb200a700, 0xb21bb22a, 0x014dfe4c, 0x7e50dd90, 0xb200a4be, 0x00adb3a0, 0x2ab20090,
|
||||
0x0c014b90, 0x014dfe01, 0x7e54dd90, 0xb200a640, 0x00a4b3a0, 0x15b0b478, 0xfe0c2c98, 0xaa90014a,
|
||||
0xa6287e30, 0x0c90b400, 0x1bf491a6, 0x14b0b41e, 0x90014afe, 0x5d7e30aa, 0x90b400a9, 0x059f9815,
|
||||
0x2300f4b3, 0x00ab893e, 0x9ea6ef0e, 0x00090df4, 0xab893e03, 0x014afe00, 0x7e30aa90, 0x3e00a6aa,
|
||||
0x9800ab25, 0xe0b402f9, 0xf491a614, 0xfeb5061b, 0xa6f9bf02, 0x091bf491, 0x893efea0, 0xf99800ab,
|
||||
0xf491a601, 0xfeb5061b, 0xb24bb201, 0xa60c7e2a, 0x0004b300, 0x01559013, 0x98806690, 0x59a60529,
|
||||
0xfefa08f5, 0x46007033, 0xb2042f98, 0xb2e4bd8d, 0x00f1b02a, 0x70dc020b, 0xfe000000, 0x11900141,
|
||||
0x0111b05c, 0x00a5e47e, 0xbf042c98, 0x048bb22a, 0xb74b7efb, 0x981ebf00, 0xa0b2042c, 0x2ab2b4bd,
|
||||
0xe67e0db2, 0x04b300a5, 0xff040600, 0x013e04bd, 0x2a9800ac, 0xb003bc0c, 0x00904cb2, 0xb6767e01,
|
||||
0x0b90b400, 0x08f409a6, 0x032f98ec, 0xb59039bc, 0x9fa60929, 0xbd0808f4, 0x0929b594, 0x49fea4bd,
|
||||
0x60999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b, 0x30f4003a, 0x3885fb08, 0xd9cc30f4,
|
||||
0x000005dc, 0x99bf82f9, 0xfef830f4, 0xff90014f, 0xb0f9a05c, 0xc8b20be1, 0xa3b2d6b2, 0x8400b9b3,
|
||||
0x00e9b302, 0xaf18027f, 0x0141fe2c, 0x119094bd, 0x0019a054, 0x00f93303, 0xc43d026d, 0x407e1db2,
|
||||
0xa0b200a6, 0x5e00adb3, 0xbc17bf02, 0x7998f068, 0xf59fa601, 0x98024d08, 0x94b30479, 0x05000a01,
|
||||
0x00aee23e, 0x3e0069b3, 0x027f9802, 0xf9a6f009, 0x022a0bf5, 0xea7e3ab2, 0xa2b200a5, 0x1e00a9b3,
|
||||
0x0c3c9802, 0x40fe7bb2, 0x34009001, 0x287e0ab2, 0x0ab200a6, 0xcc0570b5, 0xc17e708b, 0xa0b200a6,
|
||||
0xe900adb3, 0x0d00b401, 0x01a6f001, 0x01ce0bf5, 0x01d00cf5, 0x804cb43d, 0x7e2ab200, 0xbf00b790,
|
||||
0x070b943a, 0xb200804c, 0xb7797e2d, 0x0ca1b000, 0xb600adb3, 0x05291801, 0x76042f18, 0xf4f00894,
|
||||
0xe59fffff, 0xe966ff09, 0x01980bf5, 0xffffe9e4, 0x08f589a6, 0xf4bd018e, 0x18902fbc, 0x9d330999,
|
||||
0x90018200, 0xf4b301ff, 0xfc3ef207, 0x8e3c00ae, 0xf59f26f2, 0xc4016d08, 0x94f0fffd, 0x529dbcff,
|
||||
0x0df456a6, 0x9065b205, 0xa43d10d9, 0x3db029bc, 0x3ee4bdc4, 0xb100ada7, 0xf5006fd6, 0xb401450c,
|
||||
0xbe3c0b10, 0xf81e3c98, 0x0bf4f926, 0xff94f017, 0xfd009939, 0x9033049f, 0x010a0600, 0x0ce9bf3c,
|
||||
0x01ee9001, 0xa601dd90, 0xce08f4e5, 0xed00c933, 0xf0293f00, 0x0bf40894, 0x00a93308, 0x94bd00d0,
|
||||
0x91b03ab2, 0x1391b014, 0x301291b0, 0x4bfe5b91, 0x5bbb9001, 0x00a6f97e, 0xadb3a0b2, 0x3400ef00,
|
||||
0x90335b90, 0x3ab21100, 0x00a9d97e, 0xadb3a0b2, 0xb400db00, 0x40b40d00, 0x014ffe11, 0xb250ff90,
|
||||
0x070d942e, 0x4101f1b0, 0x3ab20080, 0x4cb2010b, 0x7e0011b0, 0xb200a5e4, 0xb22cb20b, 0x014dfe3a,
|
||||
0x7e4cdd90, 0xb400a4be, 0xa0b214e0, 0x3ab21cb2, 0x0db2b4bd, 0x00a5e67e, 0x91000db3, 0x13b0b400,
|
||||
0x90014afe, 0x5d7e34aa, 0x3a9800a9, 0x0db0b40c, 0x90014cfe, 0x5f7e48cc, 0xa0b200b6, 0x6d00a4b3,
|
||||
0x011290b4, 0xf491a6f0, 0x4e98321b, 0x70efcd01, 0x0600f4b3, 0x2918700f, 0xff94f006, 0xbb909ebc,
|
||||
0x49b5029f, 0xae993e01, 0xb20bb200, 0x7e2cb23a, 0xb200a43f, 0x00a4b3a0, 0x0265bb34, 0x90014afe,
|
||||
0xaa7e34aa, 0x60b300a6, 0x90b42000, 0x8085bc0b, 0xb09095bc, 0xe53e0b91, 0x020000ac, 0x00aec93e,
|
||||
0xc93e0300, 0x00b400ae, 0xb23ab20c, 0xa60c7e2b, 0xb594bd00, 0xe23e0579, 0x030000ae, 0x00aee23e,
|
||||
0x49fe0200, 0x5c999001, 0xdcd99fbf, 0xbf000005, 0xa60ab299, 0x170bf4f9, 0x00af083e, 0x33062918,
|
||||
0xfe4f009d, 0x00aec03e, 0x003a317e, 0xfb0830f4, 0x30f43485, 0x05dcdfdc, 0x82f90000, 0x30f4ffbf,
|
||||
0x0149fef8, 0xa04c9990, 0x0bb1b09f, 0xd4b2c2b2, 0xa5b2e6b2, 0x1700b9b3, 0x00e9b301, 0x94bd0112,
|
||||
0x3d0141fe, 0x481190c4, 0x1db219a0, 0x00a6407e, 0xadb3a0b2, 0xbf00fb00, 0xf042bc19, 0xa6019998,
|
||||
0xea08f59f, 0x005ab200, 0xa5ea7e03, 0xb3a3b200, 0x00de00a9, 0x5c981bbf, 0x0140fe0c, 0xb2300090,
|
||||
0xa6287e0a, 0xcc0ab200, 0xc17e702b, 0xa8b200a6, 0xad00adb3, 0x7021cd00, 0x420147fe, 0x77900080,
|
||||
0xb0383e44, 0x0c00b400, 0x79a094bd, 0x09a6f009, 0x00091bf4, 0xb03f3e02, 0xa6f00900, 0x090df409,
|
||||
0x3f3e0300, 0xc0b400b0, 0x0704b60b, 0x0db2e4bd, 0xb4bd5ab2, 0xb00021b0, 0xe47e0171, 0x5abf00a5,
|
||||
0x2cb20bb2, 0x797e3db2, 0x7ebf00b7, 0x3bb2a0b2, 0x2cb25ab2, 0xe67e0db2, 0x04b300a5, 0x3ab24500,
|
||||
0x117eb4bd, 0xa0b200a4, 0x3700a4b3, 0x01bb7000, 0xf404a602, 0x40b2050d, 0xb2101b90, 0xb03bbc6a,
|
||||
0x997e0cb2, 0x4afe00b7, 0x0240bb01, 0xbc30aa90, 0xaa7e6060, 0x14bd00a6, 0x6d004db3, 0xb280b2ff,
|
||||
0x7e3bb25a, 0x3e00a60c, 0x0000b04d, 0x0149fe02, 0xbf4c9990, 0x05dcd99f, 0x99bf0000, 0xf9a60ab2,
|
||||
0x7e070bf4, 0xf4003a31, 0x85fb0830, 0xf830f424, 0x0005dcd9, 0xbf32f900, 0x014ffe99, 0xb214ff90,
|
||||
0xbdf9a0a1, 0xb2b2b294, 0x0140fec3, 0x9003204b, 0x09a01000, 0x9f7e0ab2, 0x09bf00b7, 0x4c0090b3,
|
||||
0x4800a4b3, 0x09bf91a0, 0xbf0192b5, 0x1000490f, 0xbf04f9b5, 0xb520090f, 0x09bf05f9, 0xbf0693b5,
|
||||
0x3501090f, 0x09bf1cf9, 0xbf2c9a35, 0xb5f0090f, 0x0fbf0af9, 0xb540f990, 0x0fbf0ef9, 0xb5c0f990,
|
||||
0x0abf0ff9, 0x00b0ea3e, 0x49fea4bd, 0x14999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699, 0x317e070b,
|
||||
0x35fb003a, 0xd030f408, 0x0005dcdf, 0xbf82f900, 0x0149feff, 0xb2509990, 0x059fa0a3, 0x00a9b302,
|
||||
0xb63004fb, 0x0b9cf000, 0xbd2ca935, 0x0ca9b594, 0x00a5ea7e, 0x3abfa0b2, 0x804cb4bd, 0x7e0db200,
|
||||
0xb200b779, 0x00adb3a5, 0x093f04b1, 0xa24a9d33, 0x01091804, 0x9a469d33, 0x02091804, 0x92469d33,
|
||||
0x03091804, 0x8a539d33, 0x040e1804, 0x18050918, 0x0d18060f, 0xffe4f007, 0xf0ff94f0, 0x94b6fff4,
|
||||
0x10f4b608, 0xb6059efd, 0xf9fd18d4, 0x05dffd05, 0x045e0bf5, 0xd6b00505, 0x5d0cf503, 0x013db504,
|
||||
0x0e01d4b3, 0xb5500049, 0xd83e0239, 0x0d1800b1, 0x09091808, 0x180a0f18, 0xd4f00b0e, 0xff94f0ff,
|
||||
0xb6fff4f0, 0xf4b60894, 0x059dfd10, 0xfd18e4b6, 0xeffd05f9, 0x023eb505, 0x0bb23ab2, 0x00a60c7e,
|
||||
0x09023a98, 0xf4a9a6ff, 0x04bd091b, 0x00b5ee3e, 0x9007a5b6, 0x3ab5303b, 0xb6d27e03, 0xb3a5b200,
|
||||
0x03f500ad, 0x09033b98, 0x343a90c0, 0xfd3fbb90, 0xb5b604b9, 0xb79f7e03, 0xb3a5b200, 0x03d900ad,
|
||||
0xfe0147fe, 0x77900148, 0x9044bd40, 0x88900179, 0x0991b03c, 0x00b3483e, 0x8ea0e4bd, 0x0f0044b3,
|
||||
0xbd0c3a98, 0x3efe0cb4, 0xb200b26b, 0xb24bb23a, 0xa5797e7c, 0xb3a5b200, 0x039d00ad, 0x94f0793f,
|
||||
0x120bf401, 0xb20c3a98, 0x7eff0c4b, 0x3e00b676, 0xb200b345, 0xa3307e7a, 0x00a0b300, 0x0c3a980f,
|
||||
0xfd0c4bb2, 0x00b26b3e, 0x94f0793f, 0x0e1bf402, 0xb20c3a98, 0x3efd0c4b, 0xb400b33a, 0x3ab209b0,
|
||||
0x8db2010c, 0x00a6407e, 0x5d00a0b3, 0x3fb2793f, 0x99c724bd, 0x01999002, 0x980a91b0, 0x54b354f5,
|
||||
0xb0b43900, 0x0022bc09, 0x02bc030c, 0x0304b600, 0x014001b8, 0x1031bc00, 0x997e1ab2, 0x30bc00b7,
|
||||
0x4309b800, 0x95200001, 0xb45302b5, 0x0fb50af0, 0x3e81a054, 0x9000b305, 0xff900122, 0x1424b318,
|
||||
0xb6323ebe, 0x3f8ebf00, 0x027f5879, 0x98077d18, 0x3a9803ee, 0x0299c70d, 0xcc00f3f0, 0x96cb70ff,
|
||||
0xcb4bb21f, 0x010cd8e6, 0xebf0d6cb, 0x7e01e0f6, 0x9800a2e6, 0x4bb20c3a, 0x767e6cb2, 0xa5b200b6,
|
||||
0xb400adb3, 0x01449002, 0xa6033b98, 0xeb08f54b, 0xbc94bdfe, 0x89a0b0bb, 0xb57e8ab2, 0xa5b200b7,
|
||||
0x9400adb3, 0xbd37b202, 0x547f9884, 0xbc9088bc, 0x94b69098, 0x4099b803, 0x39bc0001, 0x0b91b090,
|
||||
0x5300f9b3, 0x033c9802, 0x3d0fa0b4, 0xbc24bdb4, 0x44bdc0cc, 0x00b7907e, 0x3e0f60b4, 0x9800b463,
|
||||
0x2bb20d3a, 0x7e0c41b0, 0x3300a2f6, 0x00b500a9, 0xfe0c3a98, 0x2bb2014c, 0x7e38cc90, 0xb300b65f,
|
||||
0x020c00ad, 0xb40be0b4, 0xef980e90, 0xd899c703, 0x1bf59fa6, 0x3a98008e, 0x0c2bb20d, 0xa2ee7e01,
|
||||
0x014cfe00, 0x2bb23ab2, 0x7e30cc90, 0xb300a594, 0x981306a4, 0x2bb20c3a, 0x767efd0c, 0x603e00b6,
|
||||
0xadb300b4, 0x7401cb00, 0x93f01c90, 0x9099bc00, 0x7f0069bc, 0xff19e401, 0x091bf4ff, 0x603e0260,
|
||||
0x3a9800b4, 0x014cfe0c, 0xffff1be4, 0x7e34cc90, 0xb300b65f, 0x019800ad, 0x343af034, 0xf9263690,
|
||||
0x60100df4, 0xff1be402, 0x0c3a98ff, 0x00b4553e, 0xb20c3a98, 0x7efd0c2b, 0xb300b676, 0x017000ad,
|
||||
0x98012290, 0x2aa6033a, 0xff3708f5, 0x6eb264b2, 0xd43db43d, 0xc4bdf4bd, 0x00b4973e, 0x9473e97f,
|
||||
0x010d0a00, 0x00b4913e, 0x0600d033, 0xcc90010b, 0x01ff9001, 0xa602ee90, 0xe308f4fa, 0x0b00c4b3,
|
||||
0x3e547cb5, 0x3300b5d3, 0x00a600b9, 0xb0013998, 0x0cf40296, 0xb2030930, 0x5479b56d, 0xf4bde4bd,
|
||||
0x00b4d63e, 0x9073d97f, 0x697c0a00, 0x01ee90e9, 0x9001ff90, 0x399802dd, 0xf4f9a603, 0x4d3ee908,
|
||||
0x94bd00b5, 0x79b5f101, 0xb224bd54, 0xb5273e1b, 0xe4407f00, 0xf4ffff09, 0xf10f260b, 0x1bf4bfa6,
|
||||
0xff0be40b, 0xb51f3eff, 0x0c3a9800, 0xffff0ce4, 0x00b6767e, 0xb900adb3, 0xff0be400, 0x9019b2ff,
|
||||
0x44900122, 0x9891b202, 0x29a60339, 0x09c508f4, 0xf5b9a6f1, 0x9800a00b, 0x3c980c3a, 0xb6767e0a,
|
||||
0x00adb300, 0x31b5008c, 0xb5d33e0a, 0xbd6f7f00, 0x01c19294, 0xf05179b5, 0x04bd00f3, 0x3e527fb5,
|
||||
0x7f00b58b, 0x014c584b, 0x900c3a98, 0xb3f00100, 0x00c3f000, 0x7e024490, 0xb300b676, 0xb45200a4,
|
||||
0xe9980be0, 0x70999001, 0xa601e9b5, 0xd608f401, 0x9808607c, 0xf00c0c3a, 0xffff0be4, 0x00b6767e,
|
||||
0x2d00a4b3, 0xe4014cfe, 0xb2ffff0b, 0x40cc903a, 0x00a5797e, 0x1900a4b3, 0x98469034, 0x94f0517f,
|
||||
0xf0f9bcff, 0x3e517fb5, 0x0a00b5d3, 0x3ea5b203, 0x9000b5de, 0x77900188, 0x148db318, 0x49fefd90,
|
||||
0x3c999001, 0x497e9abf, 0xf43e00b7, 0x030500b5, 0x00b5f63e, 0x0bb204bd, 0x0c7e3ab2, 0x50b300a6,
|
||||
0x3a981a00, 0x7e04bd0c, 0x9800b6c8, 0x30b50d3a, 0xb7497e0c, 0x0d30b500, 0x900149fe, 0x9fbf5099,
|
||||
0x0005dcd9, 0xb299bf00, 0xf4f9a65a, 0x383e110b, 0x010500b6, 0x00b5f43e, 0x003a317e, 0xf93085fb,
|
||||
0x7ea0b202, 0x9800a5e8, 0xc87e0c0a, 0x0a9800b6, 0xb7497e0d, 0x7e0ab200, 0xbd00b749, 0xbf01fba4,
|
||||
0x0aafb2a9, 0xf4b9a602, 0xb9900d18, 0x98f9bc01, 0xc9a0a4bd, 0xa9bf00f8, 0x020aafb2, 0x18f4b9a6,
|
||||
0x01b9900b, 0xfcbca4bd, 0xbf00f899, 0xb2afb2b9, 0xf4c9a6ca, 0xf10a0708, 0xfbb500f8, 0xb5fca002,
|
||||
0x00f801fc, 0xaf98a9bf, 0x90b9bc02, 0xfbbfa9a0, 0x08f49ba6, 0x029bbb08, 0xa998a9a0, 0xa6aabf01,
|
||||
0x051bf4a9, 0x00f8f10a, 0x0800a0b3, 0x00b7497e, 0x30f400f8, 0x05dcdff8, 0x32f90000, 0x49feffbf,
|
||||
0x14999001, 0x9fa0a0b2, 0xa0b3b3b2, 0xfd024200, 0x0cf4a2a6, 0x01ab903a, 0xb60141fe, 0x119002b4,
|
||||
0x7e1ab210, 0xb300b7b5, 0xbf2700a4, 0xb21db219, 0xa0e4bd2c, 0x90dfbf90, 0x9eb201e9, 0xa699fcbc,
|
||||
0xf408f490, 0x3da0ddbf, 0x00b72e3e, 0x49fe020a, 0x14999001, 0xdcd99fbf, 0xbf000005, 0xf4f9a699,
|
||||
0x317e070b, 0x35fb003a, 0xda00f808, 0x00002944, 0x0041c77e, 0xf000a630, 0xa6f00bac, 0x01aab901,
|
||||
0x44da00f8, 0x7e000029, 0x30004142, 0xacf000a6, 0x01a6f00b, 0xf801aab9, 0x2944da00, 0xd77e0000,
|
||||
0xa6300042, 0x0bacf000, 0xb901a6f0, 0x00f801aa, 0x7effb4f0, 0xf8000b94, 0x0b7e7e00, 0xf900f800,
|
||||
0x3da0b202, 0x384c7ea4, 0x00a6b000, 0xa00b9cf0, 0xfb9ab20a, 0xb202f901, 0x7ea43da0, 0xb000382a,
|
||||
0x9cf000a6, 0xb20aa00b, 0xf401fb9a, 0xdcdfe430, 0xf9000005, 0xfeffbf82, 0x45fe0149, 0x3c999001,
|
||||
0xa00147fe, 0x2455909f, 0xd9347790, 0x0000141c, 0x4bfe9abf, 0x90080c01, 0xff0d2cbb, 0x0000c17e,
|
||||
0xeb00a433, 0x3f0c30b4, 0x0c943339, 0x043118e2, 0x0f001033, 0xb0011933, 0x3e043d00, 0x9800b971,
|
||||
0x2cd9023f, 0x98000014, 0x34580431, 0x3f5fa00a, 0x0339989f, 0xb5183690, 0xff090159, 0xf43379a0,
|
||||
0xf77e1800, 0xa0320032, 0x2900ad33, 0xdf010901, 0x0000142c, 0x1272f920, 0xbd0043f0, 0xb8b13e14,
|
||||
0x0241bc00, 0x010006b1, 0x40060df4, 0x947e0100, 0x24d9000b, 0xbf000014, 0xff2ce49a, 0xb26bb2ff,
|
||||
0x1300de0d, 0x127e0000, 0x7aa000af, 0xd400adb3, 0x985bbf00, 0x1d90015c, 0x7c0eb204, 0x10bc2020,
|
||||
0x1300da10, 0x367e0000, 0xa0320021, 0xc500ad33, 0x4cb4bd00, 0x00da0100, 0xa6000013, 0xa408f414,
|
||||
0x00b9603e, 0xd9023f98, 0x0000142c, 0x58043498, 0x5fa00a32, 0x39989f3f, 0x18389003, 0x090159b5,
|
||||
0x3379a0ff, 0x7e1600f4, 0x320032f7, 0x00ad33a0, 0x2cdf0084, 0x20000014, 0xff26e4f1, 0x3e24bdff,
|
||||
0xbc00b951, 0x16b11262, 0x0df40100, 0x01004106, 0x000b947e, 0x5c985bbf, 0x042d9001, 0x00da1eb2,
|
||||
0x7e000013, 0xe40020d0, 0xbcffff4c, 0xa0322021, 0x1db28bb2, 0x001300de, 0x40417c00, 0x3500a433,
|
||||
0x001424d9, 0x7e9abf00, 0xa000ac3c, 0x00a4b37a, 0x4cb4bd13, 0x00da0100, 0xa6000013, 0xa608f426,
|
||||
0x5c985bbf, 0xbd7ab201, 0x7e040ed4, 0x32002136, 0x2db034a0, 0x817e3ab2, 0x0d33000f, 0x30fe7100,
|
||||
0x020f3a01, 0x1838f130, 0x04090333, 0x30014afe, 0x31303991, 0x90b4bd3b, 0x717e38aa, 0xeb3e000f,
|
||||
0x02f900b7, 0x002930d9, 0xbfa0b200, 0x7e640b9a, 0x090000de, 0x00a43310, 0xa6008961, 0x009fcf02,
|
||||
0x1000f5f1, 0x8a009ff6, 0x4b02a600, 0xc4bd1000, 0xbd27104d, 0x198b7ee4, 0x00a43300, 0x2930d915,
|
||||
0x9abf0000, 0x00009b7e, 0x163e0409, 0x0ab200ba, 0x7e03e84b, 0x890016fc, 0xb802a400, 0x000200aa,
|
||||
0x920aa5b6, 0x9af601aa, 0x01114f00, 0x020099b8, 0x009ff600, 0x9a32943d, 0x000001fb, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
@ -2269,8 +2269,8 @@ const NvU32 soe_ucode_data_lr10_prd[] = {
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0xb32dc4cc, 0x58018cca, 0x7c52cad0, 0x4a5277fe, 0xb22438cf, 0xcfd90bc8, 0xf23ebc55, 0x2e5c0e40,
|
||||
0x705ea2e7, 0x0577e70f, 0xcf75f41f, 0xfe6e071a, 0x0d4a5d7d, 0x9c31ffb3, 0x95bc604f, 0x40cc834d,
|
||||
0xb32dc4cc, 0x58018cca, 0x7c52cad0, 0x4a5277fe, 0x59305452, 0xfe64d88a, 0xe474c23b, 0xfee62bd9,
|
||||
0x705ea2e7, 0x0577e70f, 0xcf75f41f, 0xfe6e071a, 0xd0954f7e, 0x7caea789, 0x40b32eb9, 0x80368ac3,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -124,9 +124,27 @@ nvswitch_inforom_bbx_get_sxid
|
||||
status = device->hal.nvswitch_bbx_get_sxid(device, params);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "nvswitch_inforom_bbx_load failed, status=%d\n", status);
|
||||
NVSWITCH_PRINT(device, ERROR, "nvswitch_bbx_get_sxid failed, status=%d\n", status);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
nvswitch_inforom_bbx_get_data
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU8 dataType,
|
||||
void *params
|
||||
)
|
||||
{
|
||||
NvlStatus status;
|
||||
|
||||
status = device->hal.nvswitch_bbx_get_data(device, dataType, params);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: (type=%d) failed, status=%d\n", __FUNCTION__, dataType, status);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -32,7 +32,188 @@ nvswitch_inforom_nvlink_flush
|
||||
struct nvswitch_device *device
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
NvlStatus status = NVL_SUCCESS;
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
PINFOROM_NVLINK_STATE pNvlinkState;
|
||||
|
||||
if (pInforom == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
pNvlinkState = pInforom->pNvlinkState;
|
||||
|
||||
if (pNvlinkState != NULL && pNvlinkState->bDirty)
|
||||
{
|
||||
status = nvswitch_inforom_write_object(device, "NVL",
|
||||
pNvlinkState->pFmt, pNvlinkState->pNvl,
|
||||
pNvlinkState->pPackedObject);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"Failed to flush NVL object to InfoROM, rc: %d\n", status);
|
||||
}
|
||||
else
|
||||
{
|
||||
pNvlinkState->bDirty = NV_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static void
|
||||
_inforom_nvlink_get_correctable_error_counts
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU32 linkId,
|
||||
INFOROM_NVLINK_CORRECTABLE_ERROR_COUNTS *pErrorCounts
|
||||
)
|
||||
{
|
||||
NvlStatus status;
|
||||
NvU32 lane, idx;
|
||||
NVSWITCH_NVLINK_GET_COUNTERS_PARAMS p = { 0 };
|
||||
|
||||
ct_assert(NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE__SIZE <=
|
||||
INFOROM_NVL_OBJECT_MAX_SUBLINK_WIDTH);
|
||||
|
||||
nvswitch_os_memset(pErrorCounts, 0, sizeof(*pErrorCounts));
|
||||
|
||||
p.linkId = linkId;
|
||||
p.counterMask = NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_FLIT
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_TX_ERR_REPLAY
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_TX_ERR_RECOVERY
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_REPLAY
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE_L0
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE_L1
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE_L2
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE_L3
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE_L4
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE_L5
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE_L6
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE_L7
|
||||
| NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE_L7;
|
||||
|
||||
status = device->hal.nvswitch_ctrl_get_counters(device, &p);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
pErrorCounts->flitCrc =
|
||||
p.nvlinkCounters[BIT_IDX_32(NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_FLIT)];
|
||||
|
||||
pErrorCounts->txLinkReplay =
|
||||
p.nvlinkCounters[BIT_IDX_32(NVSWITCH_NVLINK_COUNTER_DL_TX_ERR_REPLAY)];
|
||||
|
||||
pErrorCounts->rxLinkReplay =
|
||||
p.nvlinkCounters[BIT_IDX_32(NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_REPLAY)];
|
||||
|
||||
pErrorCounts->linkRecovery =
|
||||
p.nvlinkCounters[BIT_IDX_32(NVSWITCH_NVLINK_COUNTER_DL_TX_ERR_RECOVERY)];
|
||||
|
||||
for (lane = 0; lane < NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE__SIZE; lane++)
|
||||
{
|
||||
idx = BIT_IDX_32(NVSWITCH_NVLINK_COUNTER_DL_RX_ERR_CRC_LANE_L(lane));
|
||||
pErrorCounts->laneCrc[lane] = p.nvlinkCounters[idx];
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_inforom_nvlink_update_correctable_error_rates
|
||||
(
|
||||
nvswitch_device *device,
|
||||
struct inforom *pInforom
|
||||
|
||||
)
|
||||
{
|
||||
PINFOROM_NVLINK_STATE pNvlinkState = pInforom->pNvlinkState;
|
||||
NvU64 enabledLinkMask;
|
||||
NvU32 linkId, publicId, localLinkIdx;
|
||||
NvBool bDirty = NV_FALSE;
|
||||
NvBool bDirtyTemp;
|
||||
INFOROM_NVLINK_CORRECTABLE_ERROR_COUNTS errorCounts = { 0 };
|
||||
|
||||
if (pNvlinkState == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
enabledLinkMask = nvswitch_get_enabled_link_mask(device);
|
||||
|
||||
FOR_EACH_INDEX_IN_MASK(64, linkId, enabledLinkMask)
|
||||
{
|
||||
if (device->hal.nvswitch_get_link_public_id(device, linkId, &publicId) != NVL_SUCCESS)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (device->hal.nvswitch_get_link_local_idx(device, linkId, &localLinkIdx) != NVL_SUCCESS)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
_inforom_nvlink_get_correctable_error_counts(device, linkId, &errorCounts);
|
||||
|
||||
if (device->hal.nvswitch_inforom_nvl_update_link_correctable_error_info(device,
|
||||
pNvlinkState->pNvl, &pNvlinkState->correctableErrorRateState, linkId,
|
||||
publicId, localLinkIdx, &errorCounts, &bDirtyTemp) != NVL_SUCCESS)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
bDirty |= bDirtyTemp;
|
||||
}
|
||||
FOR_EACH_INDEX_IN_MASK_END;
|
||||
|
||||
pNvlinkState->bDirty |= bDirty;
|
||||
}
|
||||
|
||||
static void _nvswitch_nvlink_1hz_callback
|
||||
(
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
|
||||
if ((pInforom == NULL) || (pInforom->pNvlinkState == NULL) ||
|
||||
pInforom->pNvlinkState->bCallbackPending)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
pInforom->pNvlinkState->bCallbackPending = NV_TRUE;
|
||||
_inforom_nvlink_update_correctable_error_rates(device, pInforom);
|
||||
pInforom->pNvlinkState->bCallbackPending = NV_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
_inforom_nvlink_start_correctable_error_recording
|
||||
(
|
||||
nvswitch_device *device,
|
||||
struct inforom *pInforom
|
||||
)
|
||||
{
|
||||
PINFOROM_NVLINK_STATE pNvlinkState = pInforom->pNvlinkState;
|
||||
|
||||
if (pNvlinkState == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (pNvlinkState->bDisableCorrectableErrorLogging)
|
||||
{
|
||||
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
"%s: Correctable error recording disabled by regkey or unsupported\n",
|
||||
__FUNCTION__);
|
||||
return;
|
||||
}
|
||||
|
||||
pNvlinkState->bCallbackPending = NV_FALSE;
|
||||
|
||||
nvswitch_task_create(device, &_nvswitch_nvlink_1hz_callback,
|
||||
NVSWITCH_INTERVAL_1SEC_IN_NS, 0);
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
@ -41,7 +222,82 @@ nvswitch_inforom_nvlink_load
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
NvlStatus status;
|
||||
NvU8 version = 0;
|
||||
NvU8 subversion = 0;
|
||||
INFOROM_NVLINK_STATE *pNvlinkState = NULL;
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
|
||||
if (pInforom == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
status = nvswitch_inforom_get_object_version_info(device, "NVL", &version,
|
||||
&subversion);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, WARN, "no NVL object found, rc:%d\n", status);
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
if (!INFOROM_OBJECT_SUBVERSION_SUPPORTS_NVSWITCH(subversion))
|
||||
{
|
||||
NVSWITCH_PRINT(device, WARN, "NVL v%u.%u not supported\n",
|
||||
version, subversion);
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
NVSWITCH_PRINT(device, INFO, "NVL v%u.%u found\n", version, subversion);
|
||||
|
||||
pNvlinkState = nvswitch_os_malloc(sizeof(INFOROM_NVLINK_STATE));
|
||||
if (pNvlinkState == NULL)
|
||||
{
|
||||
return -NVL_NO_MEM;
|
||||
}
|
||||
nvswitch_os_memset(pNvlinkState, 0, sizeof(INFOROM_NVLINK_STATE));
|
||||
|
||||
pNvlinkState->bDirty = NV_FALSE;
|
||||
pNvlinkState->bDisableFatalErrorLogging = NV_FALSE;
|
||||
pNvlinkState->bDisableCorrectableErrorLogging = NV_TRUE;
|
||||
|
||||
status = device->hal.nvswitch_inforom_nvl_setup_nvlink_state(device, pNvlinkState, version);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "Failed to set up NVL object, rc:%d\n", status);
|
||||
goto nvswitch_inforom_nvlink_version_fail;
|
||||
}
|
||||
|
||||
status = nvswitch_inforom_read_object(device, "NVL", pNvlinkState->pFmt,
|
||||
pNvlinkState->pPackedObject,
|
||||
pNvlinkState->pNvl);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "Failed to read NVL object, rc:%d\n", status);
|
||||
goto nvswitch_inforom_read_fail;
|
||||
}
|
||||
|
||||
status = nvswitch_inforom_add_object(pInforom, &pNvlinkState->pNvl->header);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "Failed to cache NVL object header, rc:%d\n",
|
||||
status);
|
||||
goto nvswitch_inforom_read_fail;
|
||||
}
|
||||
|
||||
pInforom->pNvlinkState = pNvlinkState;
|
||||
|
||||
_inforom_nvlink_start_correctable_error_recording(device, pInforom);
|
||||
|
||||
return NVL_SUCCESS;
|
||||
|
||||
nvswitch_inforom_read_fail:
|
||||
nvswitch_os_free(pNvlinkState->pPackedObject);
|
||||
nvswitch_os_free(pNvlinkState->pNvl);
|
||||
nvswitch_inforom_nvlink_version_fail:
|
||||
nvswitch_os_free(pNvlinkState);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
void
|
||||
@ -50,30 +306,29 @@ nvswitch_inforom_nvlink_unload
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
return;
|
||||
}
|
||||
INFOROM_NVLINK_STATE *pNvlinkState;
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
|
||||
NvlStatus
|
||||
nvswitch_inforom_nvlink_get_minion_data
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU8 linkId,
|
||||
NvU32 *seedData
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
if (pInforom == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
nvswitch_inforom_nvlink_set_minion_data
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU8 linkId,
|
||||
NvU32 *seedData,
|
||||
NvU32 size
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
pNvlinkState = pInforom->pNvlinkState;
|
||||
if (pNvlinkState == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (nvswitch_inforom_nvlink_flush(device) != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "Failed to flush NVL object on object unload\n");
|
||||
}
|
||||
|
||||
nvswitch_os_free(pNvlinkState->pPackedObject);
|
||||
nvswitch_os_free(pNvlinkState->pNvl);
|
||||
nvswitch_os_free(pNvlinkState);
|
||||
pInforom->pNvlinkState = NULL;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
@ -83,7 +338,35 @@ nvswitch_inforom_nvlink_log_error_event
|
||||
void *error_event
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
NvlStatus status;
|
||||
NvBool bDirty = NV_FALSE;
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
INFOROM_NVLINK_STATE *pNvlinkState;
|
||||
|
||||
if (pInforom == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
pNvlinkState = pInforom->pNvlinkState;
|
||||
if (pNvlinkState == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
status = device->hal.nvswitch_inforom_nvl_log_error_event(device,
|
||||
pNvlinkState->pNvl,
|
||||
(INFOROM_NVLINK_ERROR_EVENT *)error_event,
|
||||
&bDirty);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "Failed to log error to inforom, rc:%d\n",
|
||||
status);
|
||||
}
|
||||
|
||||
pNvlinkState->bDirty |= bDirty;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
@ -93,7 +376,14 @@ nvswitch_inforom_nvlink_get_max_correctable_error_rate
|
||||
NVSWITCH_GET_NVLINK_MAX_CORRECTABLE_ERROR_RATES_PARAMS *params
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
|
||||
if ((pInforom == NULL) || (pInforom->pNvlinkState == NULL))
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
return device->hal.nvswitch_inforom_nvl_get_max_correctable_error_rate(device, params);
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
@ -103,5 +393,67 @@ nvswitch_inforom_nvlink_get_errors
|
||||
NVSWITCH_GET_NVLINK_ERROR_COUNTS_PARAMS *params
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
|
||||
if ((pInforom == NULL) || (pInforom->pNvlinkState == NULL))
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
return device->hal.nvswitch_inforom_nvl_get_errors(device, params);
|
||||
}
|
||||
|
||||
NvlStatus nvswitch_inforom_nvlink_setL1Threshold
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU32 word1,
|
||||
NvU32 word2
|
||||
)
|
||||
{
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
INFOROM_NVLINK_STATE *pNvlinkState;
|
||||
|
||||
if (pInforom == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
pNvlinkState = pInforom->pNvlinkState;
|
||||
if (pNvlinkState == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
return device->hal.nvswitch_inforom_nvl_setL1Threshold(device,
|
||||
pNvlinkState->pNvl,
|
||||
word1,
|
||||
word2);
|
||||
}
|
||||
|
||||
NvlStatus nvswitch_inforom_nvlink_getL1Threshold
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU32 *word1,
|
||||
NvU32 *word2
|
||||
)
|
||||
{
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
INFOROM_NVLINK_STATE *pNvlinkState;
|
||||
|
||||
if (pInforom == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
pNvlinkState = pInforom->pNvlinkState;
|
||||
if (pNvlinkState == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
return device->hal.nvswitch_inforom_nvl_getL1Threshold(device,
|
||||
pNvlinkState->pNvl,
|
||||
word1,
|
||||
word2);
|
||||
}
|
||||
|
||||
|
619
src/common/nvswitch/kernel/inforom/inforom_nvl_v3_nvswitch.c
Normal file
619
src/common/nvswitch/kernel/inforom/inforom_nvl_v3_nvswitch.c
Normal file
@ -0,0 +1,619 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "common_nvswitch.h"
|
||||
#include "inforom/inforom_nvswitch.h"
|
||||
#include "inforom/inforom_nvl_v3_nvswitch.h"
|
||||
#include "lr10/lr10.h"
|
||||
|
||||
NvlStatus inforom_nvl_v3_map_error
|
||||
(
|
||||
INFOROM_NVLINK_ERROR_TYPES error,
|
||||
NvU8 *pHeader,
|
||||
NvU16 *pMetadata,
|
||||
NvU8 *pErrorSubtype,
|
||||
INFOROM_NVL_ERROR_BLOCK_TYPE *pBlockType
|
||||
)
|
||||
{
|
||||
static const struct
|
||||
{ NvU8 header;
|
||||
NvU16 metadata;
|
||||
NvU8 errorSubtype;
|
||||
INFOROM_NVL_ERROR_BLOCK_TYPE blockType;
|
||||
} lut[] =
|
||||
{
|
||||
LUT_ELEMENT(DL, _RX, _FAULT_DL_PROTOCOL_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(DL, _RX, _FAULT_SUBLINK_CHANGE_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(DL, _RX, _FLIT_CRC_CORR, _ACCUM, _CORRECTABLE),
|
||||
LUT_ELEMENT(DL, _RX, _LANE0_CRC_CORR, _ACCUM, _CORRECTABLE),
|
||||
LUT_ELEMENT(DL, _RX, _LANE1_CRC_CORR, _ACCUM, _CORRECTABLE),
|
||||
LUT_ELEMENT(DL, _RX, _LANE2_CRC_CORR, _ACCUM, _CORRECTABLE),
|
||||
LUT_ELEMENT(DL, _RX, _LANE3_CRC_CORR, _ACCUM, _CORRECTABLE),
|
||||
LUT_ELEMENT(DL, _RX, _LINK_REPLAY_EVENTS_CORR, _ACCUM, _CORRECTABLE),
|
||||
LUT_ELEMENT(DL, _TX, _FAULT_RAM_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(DL, _TX, _FAULT_INTERFACE_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(DL, _TX, _FAULT_SUBLINK_CHANGE_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(DL, _TX, _LINK_REPLAY_EVENTS_CORR, _ACCUM, _CORRECTABLE),
|
||||
LUT_ELEMENT(DL, _NA, _LTSSM_FAULT_UP_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(DL, _NA, _LTSSM_FAULT_DOWN_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(DL, _NA, _LINK_RECOVERY_EVENTS_CORR, _ACCUM, _CORRECTABLE),
|
||||
LUT_ELEMENT(TLC, _RX, _DL_HDR_PARITY_ERR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _DL_DATA_PARITY_ERR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _DL_CTRL_PARITY_ERR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _INVALID_AE_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _INVALID_BE_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _INVALID_ADDR_ALIGN_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _PKTLEN_ERR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _RSVD_PACKET_STATUS_ERR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _RSVD_CACHE_ATTR_PROBE_REQ_ERR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _RSVD_CACHE_ATTR_PROBE_RSP_ERR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _DATLEN_GT_RMW_REQ_MAX_ERR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _DATLEN_LT_ATR_RSP_MIN_ERR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _INVALID_CR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _INVALID_COLLAPSED_RESPONSE_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _HDR_OVERFLOW_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _DATA_OVERFLOW_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _STOMP_DETECTED_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _RSVD_CMD_ENC_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _RSVD_DAT_LEN_ENC_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _INVALID_PO_FOR_CACHE_ATTR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _RSP_STATUS_HW_ERR_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _RSP_STATUS_UR_ERR_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _RSP_STATUS_PRIV_ERR_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _POISON_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _AN1_HEARTBEAT_TIMEOUT_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _ILLEGAL_PRI_WRITE_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _DL_CREDIT_PARITY_ERR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _NCISOC_HDR_ECC_DBE_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _NCISOC_PARITY_ERR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _ILLEGAL_PRI_WRITE_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _AN1_TIMEOUT_VC0_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _AN1_TIMEOUT_VC1_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _AN1_TIMEOUT_VC2_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _AN1_TIMEOUT_VC3_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _AN1_TIMEOUT_VC4_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _AN1_TIMEOUT_VC5_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _AN1_TIMEOUT_VC6_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _AN1_TIMEOUT_VC7_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _POISON_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _RSP_STATUS_HW_ERR_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _RSP_STATUS_UR_ERR_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _RSP_STATUS_PRIV_ERR_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _SLEEP_WHILE_ACTIVE_LINK_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _RSTSEQ_PHYCTL_TIMEOUT_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _RSTSEQ_CLKCTL_TIMEOUT_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _CLKCTL_ILLEGAL_REQUEST_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _RSTSEQ_PLL_TIMEOUT_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _RSTSEQ_PHYARB_TIMEOUT_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _ILLEGAL_LINK_STATE_REQUEST_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _FAILED_MINION_REQUEST_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _RESERVED_REQUEST_VALUE_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _LINK_STATE_WRITE_WHILE_BUSY_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _WRITE_TO_LOCKED_SYSTEM_REG_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(NVLIPT, _NA, _LINK_STATE_REQUEST_TIMEOUT_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
// TODO 3014908 log these in the NVL object until we have ECC object support
|
||||
LUT_ELEMENT(TLC, _RX, _HDR_RAM_ECC_DBE_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _DAT0_RAM_ECC_DBE_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _RX, _DAT1_RAM_ECC_DBE_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _CREQ_DAT_RAM_ECC_DBE_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _RSP_DAT_RAM_ECC_DBE_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _COM_DAT_RAM_ECC_DBE_NONFATAL, _COUNT, _UNCORRECTABLE_NONFATAL),
|
||||
LUT_ELEMENT(TLC, _TX, _RSP1_DAT_RAM_ECC_DBE_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(DL, _NA, _PHY_A_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(DL, _RX, _CRC_COUNTER_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(DL, _TX, _PL_ERROR_FATAL, _COUNT, _UNCORRECTABLE_FATAL),
|
||||
LUT_ELEMENT(DL, _RX, _PL_ERROR_FATAL, _COUNT, _UNCORRECTABLE_FATAL)
|
||||
};
|
||||
|
||||
ct_assert(INFOROM_NVLINK_DL_RX_FAULT_DL_PROTOCOL_FATAL == 0);
|
||||
ct_assert(INFOROM_NVLINK_DL_RX_FAULT_SUBLINK_CHANGE_FATAL == 1);
|
||||
ct_assert(INFOROM_NVLINK_DL_RX_FLIT_CRC_CORR == 2);
|
||||
ct_assert(INFOROM_NVLINK_DL_RX_LANE0_CRC_CORR == 3);
|
||||
ct_assert(INFOROM_NVLINK_DL_RX_LANE1_CRC_CORR == 4);
|
||||
ct_assert(INFOROM_NVLINK_DL_RX_LANE2_CRC_CORR == 5);
|
||||
ct_assert(INFOROM_NVLINK_DL_RX_LANE3_CRC_CORR == 6);
|
||||
ct_assert(INFOROM_NVLINK_DL_RX_LINK_REPLAY_EVENTS_CORR == 7);
|
||||
ct_assert(INFOROM_NVLINK_DL_TX_FAULT_RAM_FATAL == 8);
|
||||
ct_assert(INFOROM_NVLINK_DL_TX_FAULT_INTERFACE_FATAL == 9);
|
||||
ct_assert(INFOROM_NVLINK_DL_TX_FAULT_SUBLINK_CHANGE_FATAL == 10);
|
||||
ct_assert(INFOROM_NVLINK_DL_TX_LINK_REPLAY_EVENTS_CORR == 11);
|
||||
ct_assert(INFOROM_NVLINK_DL_LTSSM_FAULT_UP_FATAL == 12);
|
||||
ct_assert(INFOROM_NVLINK_DL_LTSSM_FAULT_DOWN_FATAL == 13);
|
||||
ct_assert(INFOROM_NVLINK_DL_LINK_RECOVERY_EVENTS_CORR == 14);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_DL_HDR_PARITY_ERR_FATAL == 15);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_DL_DATA_PARITY_ERR_FATAL == 16);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_DL_CTRL_PARITY_ERR_FATAL == 17);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_INVALID_AE_FATAL == 18);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_INVALID_BE_FATAL == 19);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_INVALID_ADDR_ALIGN_FATAL == 20);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_PKTLEN_ERR_FATAL == 21);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_RSVD_PACKET_STATUS_ERR_FATAL == 22);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_RSVD_CACHE_ATTR_PROBE_REQ_ERR_FATAL == 23);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_RSVD_CACHE_ATTR_PROBE_RSP_ERR_FATAL == 24);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_DATLEN_GT_RMW_REQ_MAX_ERR_FATAL == 25);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_DATLEN_LT_ATR_RSP_MIN_ERR_FATAL == 26);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_INVALID_CR_FATAL == 27);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_INVALID_COLLAPSED_RESPONSE_FATAL == 28);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_HDR_OVERFLOW_FATAL == 29);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_DATA_OVERFLOW_FATAL == 30);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_STOMP_DETECTED_FATAL == 31);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_RSVD_CMD_ENC_FATAL == 32);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_RSVD_DAT_LEN_ENC_FATAL == 33);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_INVALID_PO_FOR_CACHE_ATTR_FATAL == 34);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_RSP_STATUS_HW_ERR_NONFATAL == 35);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_RSP_STATUS_UR_ERR_NONFATAL == 36);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_RSP_STATUS_PRIV_ERR_NONFATAL == 37);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_POISON_NONFATAL == 38);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_AN1_HEARTBEAT_TIMEOUT_NONFATAL == 39);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_ILLEGAL_PRI_WRITE_NONFATAL == 40);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_DL_CREDIT_PARITY_ERR_FATAL == 41);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_NCISOC_HDR_ECC_DBE_FATAL == 42);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_NCISOC_PARITY_ERR_FATAL == 43);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_ILLEGAL_PRI_WRITE_NONFATAL == 44);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC0_NONFATAL == 45);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC1_NONFATAL == 46);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC2_NONFATAL == 47);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC3_NONFATAL == 48);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC4_NONFATAL == 49);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC5_NONFATAL == 50);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC6_NONFATAL == 51);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC7_NONFATAL == 52);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_POISON_NONFATAL == 53);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_RSP_STATUS_HW_ERR_NONFATAL == 54);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_RSP_STATUS_UR_ERR_NONFATAL == 55);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_RSP_STATUS_PRIV_ERR_NONFATAL == 56);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_SLEEP_WHILE_ACTIVE_LINK_FATAL == 57);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_RSTSEQ_PHYCTL_TIMEOUT_FATAL == 58);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_RSTSEQ_CLKCTL_TIMEOUT_FATAL == 59);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_CLKCTL_ILLEGAL_REQUEST_FATAL == 60);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_RSTSEQ_PLL_TIMEOUT_FATAL == 61);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_RSTSEQ_PHYARB_TIMEOUT_FATAL == 62);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_ILLEGAL_LINK_STATE_REQUEST_NONFATAL == 63);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_FAILED_MINION_REQUEST_NONFATAL == 64);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_RESERVED_REQUEST_VALUE_NONFATAL == 65);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_LINK_STATE_WRITE_WHILE_BUSY_NONFATAL == 66);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_WRITE_TO_LOCKED_SYSTEM_REG_NONFATAL == 67);
|
||||
ct_assert(INFOROM_NVLINK_NVLIPT_LINK_STATE_REQUEST_TIMEOUT_NONFATAL == 68);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_HDR_RAM_ECC_DBE_FATAL == 69);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_DAT0_RAM_ECC_DBE_FATAL == 70);
|
||||
ct_assert(INFOROM_NVLINK_TLC_RX_DAT1_RAM_ECC_DBE_FATAL == 71);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_CREQ_DAT_RAM_ECC_DBE_NONFATAL == 72);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_RSP_DAT_RAM_ECC_DBE_NONFATAL == 73);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_COM_DAT_RAM_ECC_DBE_NONFATAL == 74);
|
||||
ct_assert(INFOROM_NVLINK_TLC_TX_RSP1_DAT_RAM_ECC_DBE_FATAL == 75);
|
||||
ct_assert(INFOROM_NVLINK_DL_PHY_A_FATAL == 76);
|
||||
ct_assert(INFOROM_NVLINK_DL_RX_CRC_COUNTER_FATAL == 77);
|
||||
ct_assert(INFOROM_NVLINK_DL_TX_PL_ERROR_FATAL == 78);
|
||||
ct_assert(INFOROM_NVLINK_DL_RX_PL_ERROR_FATAL == 79);
|
||||
|
||||
ct_assert(NV_ARRAY_ELEMENTS(lut) == INFOROM_NVLINK_MAX_ERROR_TYPE);
|
||||
|
||||
if (error >= NV_ARRAY_ELEMENTS(lut))
|
||||
{
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
*pHeader = lut[error].header;
|
||||
*pMetadata = lut[error].metadata;
|
||||
*pErrorSubtype = lut[error].errorSubtype;
|
||||
*pBlockType = lut[error].blockType;
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
inforom_nvl_v3_encode_nvlipt_error_subtype
|
||||
(
|
||||
NvU8 localLinkIdx,
|
||||
NvU8 *pSubtype
|
||||
)
|
||||
{
|
||||
static const NvBool linkIdxValidLut[] =
|
||||
{
|
||||
NV_TRUE,
|
||||
NV_TRUE,
|
||||
NV_TRUE,
|
||||
NV_FALSE,
|
||||
NV_FALSE,
|
||||
NV_FALSE,
|
||||
NV_TRUE,
|
||||
NV_TRUE,
|
||||
NV_TRUE,
|
||||
NV_TRUE,
|
||||
NV_TRUE,
|
||||
NV_TRUE
|
||||
};
|
||||
|
||||
ct_assert(NVLIPT_NA_SLEEP_WHILE_ACTIVE_LINK_FATAL_COUNT == 0);
|
||||
ct_assert(NVLIPT_NA_RSTSEQ_PHYCTL_TIMEOUT_FATAL_COUNT == 1);
|
||||
ct_assert(NVLIPT_NA_RSTSEQ_CLKCTL_TIMEOUT_FATAL_COUNT == 2);
|
||||
ct_assert(NVLIPT_NA_CLKCTL_ILLEGAL_REQUEST_FATAL_COUNT == 3);
|
||||
ct_assert(NVLIPT_NA_RSTSEQ_PLL_TIMEOUT_FATAL_COUNT == 4);
|
||||
ct_assert(NVLIPT_NA_RSTSEQ_PHYARB_TIMEOUT_FATAL_COUNT == 5);
|
||||
ct_assert(NVLIPT_NA_ILLEGAL_LINK_STATE_REQUEST_NONFATAL_COUNT == 6);
|
||||
ct_assert(NVLIPT_NA_FAILED_MINION_REQUEST_NONFATAL_COUNT == 7);
|
||||
ct_assert(NVLIPT_NA_RESERVED_REQUEST_VALUE_NONFATAL_COUNT == 8);
|
||||
ct_assert(NVLIPT_NA_LINK_STATE_WRITE_WHILE_BUSY_NONFATAL_COUNT == 9);
|
||||
ct_assert(NVLIPT_NA_WRITE_TO_LOCKED_SYSTEM_REG_NONFATAL_COUNT == 10);
|
||||
ct_assert(NVLIPT_NA_LINK_STATE_REQUEST_TIMEOUT_NONFATAL_COUNT == 11);
|
||||
|
||||
if ((localLinkIdx >= NV_INFOROM_NVL_OBJECT_V3_NVLIPT_ERROR_LINK_ID_COMMON) ||
|
||||
(*pSubtype >= NV_ARRAY_ELEMENTS(linkIdxValidLut)))
|
||||
{
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
if (linkIdxValidLut[*pSubtype])
|
||||
{
|
||||
*pSubtype = FLD_SET_DRF_NUM(_INFOROM_NVL_OBJECT_V3, _NVLIPT_ERROR,
|
||||
_LINK_ID, localLinkIdx, *pSubtype);
|
||||
}
|
||||
else
|
||||
{
|
||||
*pSubtype = FLD_SET_DRF(_INFOROM_NVL_OBJECT_V3, _NVLIPT_ERROR, _LINK_ID,
|
||||
_COMMON, *pSubtype);
|
||||
}
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvBool
|
||||
inforom_nvl_v3_should_replace_error_rate_entry
|
||||
(
|
||||
INFOROM_NVL_OBJECT_V3_CORRECTABLE_ERROR_RATE *pErrorRate,
|
||||
NvU32 flitCrcRate,
|
||||
NvU32 *pLaneCrcRates
|
||||
)
|
||||
{
|
||||
NvU32 i;
|
||||
NvU64 currentLaneCrcRateSum = 0;
|
||||
NvU64 maxLaneCrcRateSum = 0;
|
||||
|
||||
for (i = 0; i < NV_ARRAY_ELEMENTS(pErrorRate->laneCrcErrorsPerMinute); i++)
|
||||
{
|
||||
currentLaneCrcRateSum += pLaneCrcRates[i];
|
||||
maxLaneCrcRateSum += pErrorRate->laneCrcErrorsPerMinute[i];
|
||||
}
|
||||
|
||||
return (flitCrcRate > pErrorRate->flitCrcErrorsPerMinute) ||
|
||||
(currentLaneCrcRateSum > maxLaneCrcRateSum);
|
||||
}
|
||||
|
||||
void
|
||||
inforom_nvl_v3_seconds_to_day_and_month
|
||||
(
|
||||
NvU32 sec,
|
||||
NvU32 *pDay,
|
||||
NvU32 *pMonth
|
||||
)
|
||||
{
|
||||
*pDay = sec / (60 * 60 * 24);
|
||||
*pMonth = *pDay / 30;
|
||||
}
|
||||
|
||||
void
|
||||
inforom_nvl_v3_update_error_rate_entry
|
||||
(
|
||||
INFOROM_NVL_OBJECT_V3_CORRECTABLE_ERROR_RATE *pErrorRate,
|
||||
NvU32 newSec,
|
||||
NvU32 newFlitCrcRate,
|
||||
NvU32 *pNewLaneCrcRates
|
||||
)
|
||||
{
|
||||
pErrorRate->lastUpdated = newSec;
|
||||
pErrorRate->flitCrcErrorsPerMinute = newFlitCrcRate;
|
||||
nvswitch_os_memcpy(pErrorRate->laneCrcErrorsPerMinute, pNewLaneCrcRates,
|
||||
sizeof(pErrorRate->laneCrcErrorsPerMinute));
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
inforom_nvl_v3_map_error_to_userspace_error
|
||||
(
|
||||
nvswitch_device *device,
|
||||
INFOROM_NVL_OBJECT_V3_ERROR_ENTRY *pErrorLog,
|
||||
NVSWITCH_NVLINK_ERROR_ENTRY *pNvlError
|
||||
)
|
||||
{
|
||||
static const NvU32 DL_RX_ERRORS[] =
|
||||
{
|
||||
NVSWITCH_NVLINK_ERR_DL_RX_FAULT_DL_PROTOCOL_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_DL_RX_FAULT_SUBLINK_CHANGE_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_DL_RX_FLIT_CRC_CORR,
|
||||
NVSWITCH_NVLINK_ERR_DL_RX_LANE0_CRC_CORR,
|
||||
NVSWITCH_NVLINK_ERR_DL_RX_LANE1_CRC_CORR,
|
||||
NVSWITCH_NVLINK_ERR_DL_RX_LANE2_CRC_CORR,
|
||||
NVSWITCH_NVLINK_ERR_DL_RX_LANE3_CRC_CORR,
|
||||
NVSWITCH_NVLINK_ERR_DL_RX_LINK_REPLAY_EVENTS_CORR
|
||||
};
|
||||
|
||||
static const NvU32 DL_TX_ERRORS[] =
|
||||
{
|
||||
NVSWITCH_NVLINK_ERR_DL_TX_FAULT_RAM_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_DL_TX_FAULT_INTERFACE_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_DL_TX_FAULT_SUBLINK_CHANGE_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_DL_TX_LINK_REPLAY_EVENTS_CORR
|
||||
};
|
||||
|
||||
static const NvU32 DL_NA_ERRORS[] =
|
||||
{
|
||||
NVSWITCH_NVLINK_ERR_DL_LTSSM_FAULT_UP_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_DL_LTSSM_FAULT_DOWN_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_DL_LINK_RECOVERY_EVENTS_CORR
|
||||
};
|
||||
|
||||
static const NvU32 TLC_RX_ERRORS[] =
|
||||
{
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_DL_HDR_PARITY_ERR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_DL_DATA_PARITY_ERR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_DL_CTRL_PARITY_ERR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_INVALID_AE_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_INVALID_BE_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_INVALID_ADDR_ALIGN_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_PKTLEN_ERR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_RSVD_PACKET_STATUS_ERR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_RSVD_CACHE_ATTR_PROBE_REQ_ERR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_RSVD_CACHE_ATTR_PROBE_RSP_ERR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_DATLEN_GT_RMW_REQ_MAX_ERR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_DATLEN_LT_ATR_RSP_MIN_ERR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_INVALID_CR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_INVALID_COLLAPSED_RESPONSE_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_HDR_OVERFLOW_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_DATA_OVERFLOW_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_STOMP_DETECTED_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_RSVD_CMD_ENC_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_RSVD_DAT_LEN_ENC_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_INVALID_PO_FOR_CACHE_ATTR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_RSP_STATUS_HW_ERR_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_RSP_STATUS_UR_ERR_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_RSP_STATUS_PRIV_ERR_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_POISON_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_AN1_HEARTBEAT_TIMEOUT_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_ILLEGAL_PRI_WRITE_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_HDR_RAM_ECC_DBE_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_DAT0_RAM_ECC_DBE_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_RX_DAT1_RAM_ECC_DBE_FATAL
|
||||
};
|
||||
|
||||
static const NvU32 TLC_TX_ERRORS[] =
|
||||
{
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_DL_CREDIT_PARITY_ERR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_NCISOC_HDR_ECC_DBE_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_NCISOC_PARITY_ERR_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_ILLEGAL_PRI_WRITE_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_AN1_TIMEOUT_VC0_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_AN1_TIMEOUT_VC1_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_AN1_TIMEOUT_VC2_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_AN1_TIMEOUT_VC3_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_AN1_TIMEOUT_VC4_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_AN1_TIMEOUT_VC5_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_AN1_TIMEOUT_VC6_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_AN1_TIMEOUT_VC7_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_POISON_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_RSP_STATUS_HW_ERR_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_RSP_STATUS_UR_ERR_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_RSP_STATUS_PRIV_ERR_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_CREQ_DAT_RAM_ECC_DBE_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_RSP_DAT_RAM_ECC_DBE_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_COM_DAT_RAM_ECC_DBE_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_TLC_TX_RSP1_DAT_RAM_ECC_DBE_FATAL
|
||||
};
|
||||
|
||||
static const NvU32 LIPT_ERRORS[] =
|
||||
{
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_SLEEP_WHILE_ACTIVE_LINK_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_RSTSEQ_PHYCTL_TIMEOUT_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_RSTSEQ_CLKCTL_TIMEOUT_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_CLKCTL_ILLEGAL_REQUEST_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_RSTSEQ_PLL_TIMEOUT_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_RSTSEQ_PHYARB_TIMEOUT_FATAL,
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_ILLEGAL_LINK_STATE_REQUEST_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_FAILED_MINION_REQUEST_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_RESERVED_REQUEST_VALUE_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_LINK_STATE_WRITE_WHILE_BUSY_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_WRITE_TO_LOCKED_SYSTEM_REG_NONFATAL,
|
||||
NVSWITCH_NVLINK_ERR_NVLIPT_LINK_STATE_REQUEST_TIMEOUT_NONFATAL
|
||||
};
|
||||
|
||||
NvU32 subType = 0;
|
||||
NvU8 nvliptInstance = 0, localLinkIdx = 0;
|
||||
NvU8 numLinksPerNvlipt = device->hal.nvswitch_get_num_links_per_nvlipt(device);;
|
||||
|
||||
if ((pErrorLog == NULL) || (pNvlError == NULL))
|
||||
{
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
subType = DRF_VAL(_INFOROM_NVL_OBJECT_V3, _NVLIPT_ERROR, _SUBTYPE, pErrorLog->errorSubtype);
|
||||
nvliptInstance = DRF_VAL(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _NVLIPT_INSTANCE_ID, pErrorLog->metadata);
|
||||
pNvlError->timeStamp = pErrorLog->data.event.lastError;
|
||||
|
||||
if (pErrorLog->header == INFOROM_NVL_ERROR_TYPE_COUNT)
|
||||
{
|
||||
pNvlError->count = (NvU64)pErrorLog->data.event.totalCount;
|
||||
}
|
||||
else if (pErrorLog->header == INFOROM_NVL_ERROR_TYPE_ACCUM)
|
||||
{
|
||||
pNvlError->count = pErrorLog->data.accum.totalCount.hi;
|
||||
pNvlError->count = (pNvlError->count << 32) | pErrorLog->data.accum.totalCount.lo;
|
||||
}
|
||||
else
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
if (FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _DL0, pErrorLog->metadata) ||
|
||||
FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _DL1, pErrorLog->metadata) ||
|
||||
FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _DL2, pErrorLog->metadata) ||
|
||||
FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _DL3, pErrorLog->metadata) ||
|
||||
FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _DL4, pErrorLog->metadata) ||
|
||||
FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _DL5, pErrorLog->metadata))
|
||||
{
|
||||
localLinkIdx = DRF_VAL(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, pErrorLog->metadata);
|
||||
pNvlError->instance = nvliptInstance * numLinksPerNvlipt + localLinkIdx;
|
||||
|
||||
if (FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _DIRECTION, _NA, pErrorLog->metadata) &&
|
||||
(subType < (sizeof(DL_NA_ERRORS) / sizeof(DL_NA_ERRORS[0]))))
|
||||
{
|
||||
pNvlError->error = DL_NA_ERRORS[subType];
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
else if (FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _DIRECTION, _RX, pErrorLog->metadata) &&
|
||||
(subType < (sizeof(DL_RX_ERRORS) / sizeof(DL_RX_ERRORS[0]))))
|
||||
{
|
||||
pNvlError->error = DL_RX_ERRORS[subType];
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
else if (FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _DIRECTION, _TX, pErrorLog->metadata) &&
|
||||
(subType < (sizeof(DL_TX_ERRORS) / sizeof(DL_TX_ERRORS[0]))))
|
||||
{
|
||||
pNvlError->error = DL_TX_ERRORS[subType];
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
else if (FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _TLC0, pErrorLog->metadata) ||
|
||||
FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _TLC1, pErrorLog->metadata) ||
|
||||
FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _TLC2, pErrorLog->metadata) ||
|
||||
FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _TLC3, pErrorLog->metadata) ||
|
||||
FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _TLC4, pErrorLog->metadata) ||
|
||||
FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _TLC5, pErrorLog->metadata))
|
||||
{
|
||||
localLinkIdx = DRF_VAL(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, pErrorLog->metadata)
|
||||
- NV_INFOROM_NVL_OBJECT_V3_ERROR_METADATA_BLOCK_ID_TLC0;
|
||||
pNvlError->instance = nvliptInstance * numLinksPerNvlipt + localLinkIdx;
|
||||
|
||||
if (FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _DIRECTION, _RX, pErrorLog->metadata) &&
|
||||
(subType < (sizeof(TLC_RX_ERRORS) / sizeof(TLC_RX_ERRORS[0]))))
|
||||
{
|
||||
pNvlError->error = TLC_RX_ERRORS[subType];
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
else if (FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _DIRECTION, _TX, pErrorLog->metadata) &&
|
||||
(subType < (sizeof(TLC_TX_ERRORS) / sizeof(TLC_TX_ERRORS[0]))))
|
||||
{
|
||||
pNvlError->error = TLC_TX_ERRORS[subType];
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
}
|
||||
else if (FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID, _NVLIPT, pErrorLog->metadata))
|
||||
{
|
||||
if (subType < (sizeof(LIPT_ERRORS) / sizeof(LIPT_ERRORS[0])))
|
||||
{
|
||||
if (FLD_TEST_DRF(_INFOROM_NVL_OBJECT_V3, _NVLIPT_ERROR, _LINK_ID, _COMMON, pErrorLog->errorSubtype))
|
||||
{
|
||||
localLinkIdx = 0; //common nvlipt error
|
||||
}
|
||||
else
|
||||
{
|
||||
localLinkIdx = DRF_VAL(_INFOROM_NVL_OBJECT_V3, _NVLIPT_ERROR, _LINK_ID, pErrorLog->errorSubtype);
|
||||
}
|
||||
|
||||
pNvlError->instance = nvliptInstance * numLinksPerNvlipt + localLinkIdx;
|
||||
pNvlError->error = LIPT_ERRORS[subType];
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
void
|
||||
inforom_nvl_v3_update_correctable_error_rates
|
||||
(
|
||||
INFOROM_NVL_CORRECTABLE_ERROR_RATE_STATE_V3S *pState,
|
||||
NvU8 link,
|
||||
INFOROM_NVLINK_CORRECTABLE_ERROR_COUNTS *pCounts
|
||||
)
|
||||
{
|
||||
NvU32 i;
|
||||
NvU32 tempFlitCrc, tempRxLinkReplay, tempTxLinkReplay, tempLinkRecovery;
|
||||
NvU32 tempLaneCrc[4];
|
||||
|
||||
//
|
||||
// If the registers have decreased from last reported, then
|
||||
// they must have been reset or have overflowed. Set the last
|
||||
// register value to 0.
|
||||
//
|
||||
if (pCounts->flitCrc < pState->lastRead[link].flitCrc)
|
||||
{
|
||||
pState->lastRead[link].flitCrc = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < NV_ARRAY_ELEMENTS(pState->lastRead[link].laneCrc); i++)
|
||||
{
|
||||
if (pCounts->laneCrc[i] < pState->lastRead[link].laneCrc[i])
|
||||
{
|
||||
pState->lastRead[link].laneCrc[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Get number of new errors since the last register read
|
||||
tempFlitCrc = pCounts->flitCrc;
|
||||
pCounts->flitCrc -= pState->lastRead[link].flitCrc;
|
||||
|
||||
// Update errors per minute with error delta
|
||||
m_inforom_nvl_get_new_errors_per_minute(pCounts->flitCrc,
|
||||
&pState->errorsPerMinute[link].flitCrc);
|
||||
|
||||
// Save the current register value for the next callback
|
||||
pState->lastRead[link].flitCrc = tempFlitCrc;
|
||||
|
||||
for (i = 0; i < NV_ARRAY_ELEMENTS(pState->lastRead[link].laneCrc); i++)
|
||||
{
|
||||
tempLaneCrc[i] = pCounts->laneCrc[i];
|
||||
pCounts->laneCrc[i] -= pState->lastRead[link].laneCrc[i];
|
||||
m_inforom_nvl_get_new_errors_per_minute(pCounts->laneCrc[i],
|
||||
&pState->errorsPerMinute[link].laneCrc[i]);
|
||||
|
||||
pState->lastRead[link].laneCrc[i] = tempLaneCrc[i];
|
||||
}
|
||||
|
||||
//
|
||||
// We don't track rates for the following errors. We just need to stash
|
||||
// the current register value and update pCounts with the delta since
|
||||
// the last register read.
|
||||
//
|
||||
if (pCounts->rxLinkReplay < pState->lastRead[link].rxLinkReplay)
|
||||
{
|
||||
pState->lastRead[link].rxLinkReplay = 0;
|
||||
}
|
||||
tempRxLinkReplay = pCounts->rxLinkReplay;
|
||||
pCounts->rxLinkReplay -= pState->lastRead[link].rxLinkReplay;
|
||||
pState->lastRead[link].rxLinkReplay = tempRxLinkReplay;
|
||||
|
||||
if (pCounts->txLinkReplay < pState->lastRead[link].txLinkReplay)
|
||||
{
|
||||
pState->lastRead[link].txLinkReplay = 0;
|
||||
}
|
||||
tempTxLinkReplay = pCounts->txLinkReplay;
|
||||
pCounts->txLinkReplay -= pState->lastRead[link].txLinkReplay;
|
||||
pState->lastRead[link].txLinkReplay = tempTxLinkReplay;
|
||||
|
||||
if (pCounts->linkRecovery < pState->lastRead[link].linkRecovery)
|
||||
{
|
||||
pState->lastRead[link].linkRecovery = 0;
|
||||
}
|
||||
tempLinkRecovery = pCounts->linkRecovery;
|
||||
pCounts->linkRecovery -= pState->lastRead[link].linkRecovery;
|
||||
pState->lastRead[link].linkRecovery = tempLinkRecovery;
|
||||
}
|
||||
|
108
src/common/nvswitch/kernel/inforom/inforom_nvl_v4_nvswitch.c
Normal file
108
src/common/nvswitch/kernel/inforom/inforom_nvl_v4_nvswitch.c
Normal file
@ -0,0 +1,108 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "common_nvswitch.h"
|
||||
#include "inforom/inforom_nvswitch.h"
|
||||
#include "inforom/inforom_nvl_v4_nvswitch.h"
|
||||
#include "ls10/ls10.h"
|
||||
|
||||
void
|
||||
inforom_nvl_v4_update_correctable_error_rates
|
||||
(
|
||||
INFOROM_NVL_CORRECTABLE_ERROR_RATE_STATE_V4S *pState,
|
||||
NvU8 link,
|
||||
INFOROM_NVLINK_CORRECTABLE_ERROR_COUNTS *pCounts
|
||||
)
|
||||
{
|
||||
NvU32 i;
|
||||
NvU32 tempFlitCrc, tempRxLinkReplay, tempTxLinkReplay, tempLinkRecovery;
|
||||
NvU32 tempLaneCrc[4];
|
||||
|
||||
//
|
||||
// If the registers have decreased from last reported, then
|
||||
// they must have been reset or have overflowed. Set the last
|
||||
// register value to 0.
|
||||
//
|
||||
if (pCounts->flitCrc < pState->lastRead[link].flitCrc)
|
||||
{
|
||||
pState->lastRead[link].flitCrc = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < NV_ARRAY_ELEMENTS(pState->lastRead[link].laneCrc); i++)
|
||||
{
|
||||
if (pCounts->laneCrc[i] < pState->lastRead[link].laneCrc[i])
|
||||
{
|
||||
pState->lastRead[link].laneCrc[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Get number of new errors since the last register read
|
||||
tempFlitCrc = pCounts->flitCrc;
|
||||
pCounts->flitCrc -= pState->lastRead[link].flitCrc;
|
||||
|
||||
// Update errors per minute with error delta
|
||||
m_inforom_nvl_get_new_errors_per_minute(pCounts->flitCrc,
|
||||
&pState->errorsPerMinute[link].flitCrc);
|
||||
|
||||
// Save the current register value for the next callback
|
||||
pState->lastRead[link].flitCrc = tempFlitCrc;
|
||||
|
||||
for (i = 0; i < NV_ARRAY_ELEMENTS(pState->lastRead[link].laneCrc); i++)
|
||||
{
|
||||
tempLaneCrc[i] = pCounts->laneCrc[i];
|
||||
pCounts->laneCrc[i] -= pState->lastRead[link].laneCrc[i];
|
||||
m_inforom_nvl_get_new_errors_per_minute(pCounts->laneCrc[i],
|
||||
&pState->errorsPerMinute[link].laneCrc[i]);
|
||||
|
||||
pState->lastRead[link].laneCrc[i] = tempLaneCrc[i];
|
||||
}
|
||||
|
||||
//
|
||||
// We don't track rates for the following errors. We just need to stash
|
||||
// the current register value and update pCounts with the delta since
|
||||
// the last register read.
|
||||
//
|
||||
if (pCounts->rxLinkReplay < pState->lastRead[link].rxLinkReplay)
|
||||
{
|
||||
pState->lastRead[link].rxLinkReplay = 0;
|
||||
}
|
||||
tempRxLinkReplay = pCounts->rxLinkReplay;
|
||||
pCounts->rxLinkReplay -= pState->lastRead[link].rxLinkReplay;
|
||||
pState->lastRead[link].rxLinkReplay = tempRxLinkReplay;
|
||||
|
||||
if (pCounts->txLinkReplay < pState->lastRead[link].txLinkReplay)
|
||||
{
|
||||
pState->lastRead[link].txLinkReplay = 0;
|
||||
}
|
||||
tempTxLinkReplay = pCounts->txLinkReplay;
|
||||
pCounts->txLinkReplay -= pState->lastRead[link].txLinkReplay;
|
||||
pState->lastRead[link].txLinkReplay = tempTxLinkReplay;
|
||||
|
||||
if (pCounts->linkRecovery < pState->lastRead[link].linkRecovery)
|
||||
{
|
||||
pState->lastRead[link].linkRecovery = 0;
|
||||
}
|
||||
tempLinkRecovery = pCounts->linkRecovery;
|
||||
pCounts->linkRecovery -= pState->lastRead[link].linkRecovery;
|
||||
pState->lastRead[link].linkRecovery = tempLinkRecovery;
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2020 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -31,12 +31,15 @@
|
||||
#include "nvswitch/lr10/dev_pmgr.h"
|
||||
#include "nvVer.h"
|
||||
#include "regkey_nvswitch.h"
|
||||
#include "inforom/inforom_nvl_v3_nvswitch.h"
|
||||
#include "soe/soeififr.h"
|
||||
|
||||
//
|
||||
// TODO: Split individual object hals to their own respective files
|
||||
//
|
||||
static void _oms_parse(nvswitch_device *device, INFOROM_OMS_STATE *pOmsState);
|
||||
static void _oms_refresh(nvswitch_device *device, INFOROM_OMS_STATE *pOmsState);
|
||||
|
||||
NvlStatus
|
||||
nvswitch_inforom_nvl_log_error_event_lr10
|
||||
(
|
||||
@ -46,7 +49,147 @@ nvswitch_inforom_nvl_log_error_event_lr10
|
||||
NvBool *bDirty
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
NvlStatus status;
|
||||
INFOROM_NVL_OBJECT_V3S *pNvlObject = &((PINFOROM_NVL_OBJECT)pNvlGeneric)->v3s;
|
||||
INFOROM_NVLINK_ERROR_EVENT *pErrorEvent = (INFOROM_NVLINK_ERROR_EVENT *)pNvlErrorEvent;
|
||||
INFOROM_NVL_OBJECT_V3_ERROR_ENTRY *pErrorEntry;
|
||||
NvU32 i;
|
||||
NvU32 sec;
|
||||
NvU8 header = 0;
|
||||
NvU16 metadata = 0;
|
||||
NvU8 errorSubtype;
|
||||
NvU64 accumTotalCount;
|
||||
INFOROM_NVL_ERROR_BLOCK_TYPE blockType;
|
||||
|
||||
if (pErrorEvent->nvliptInstance > INFOROM_NVL_OBJECT_V3_NVLIPT_INSTANCE_MAX)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"object cannot log data for more than %u NVLIPTs (NVLIPT = %u requested)\n",
|
||||
INFOROM_NVL_OBJECT_V3_NVLIPT_INSTANCE_MAX, pErrorEvent->nvliptInstance);
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
if (pErrorEvent->localLinkIdx > INFOROM_NVL_OBJECT_V3_BLOCK_ID_MAX)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"object cannot log data for more than %u internal links (internal link = %u requested)\n",
|
||||
INFOROM_NVL_OBJECT_V3_BLOCK_ID_MAX, pErrorEvent->localLinkIdx);
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
sec = (NvU32) (nvswitch_os_get_platform_time_epoch() / NVSWITCH_INTERVAL_1SEC_IN_NS);
|
||||
|
||||
status = inforom_nvl_v3_map_error(pErrorEvent->error, &header, &metadata,
|
||||
&errorSubtype, &blockType);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
metadata = FLD_SET_DRF_NUM(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA,
|
||||
_NVLIPT_INSTANCE_ID, pErrorEvent->nvliptInstance, metadata);
|
||||
if (blockType == INFOROM_NVL_ERROR_BLOCK_TYPE_DL)
|
||||
{
|
||||
metadata = FLD_SET_DRF_NUM(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID,
|
||||
NV_INFOROM_NVL_OBJECT_V3_ERROR_METADATA_BLOCK_ID_DL(pErrorEvent->localLinkIdx),
|
||||
metadata);
|
||||
}
|
||||
else if (blockType == INFOROM_NVL_ERROR_BLOCK_TYPE_TLC)
|
||||
{
|
||||
metadata = FLD_SET_DRF_NUM(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID,
|
||||
NV_INFOROM_NVL_OBJECT_V3_ERROR_METADATA_BLOCK_ID_TLC(pErrorEvent->localLinkIdx),
|
||||
metadata);
|
||||
}
|
||||
else if (blockType == INFOROM_NVL_ERROR_BLOCK_TYPE_NVLIPT)
|
||||
{
|
||||
metadata = FLD_SET_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA,
|
||||
_BLOCK_ID, _NVLIPT, metadata);
|
||||
status = inforom_nvl_v3_encode_nvlipt_error_subtype(pErrorEvent->localLinkIdx,
|
||||
&errorSubtype);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < INFOROM_NVL_OBJECT_V3S_NUM_ERROR_ENTRIES; i++)
|
||||
{
|
||||
pErrorEntry = &pNvlObject->errorLog[i];
|
||||
|
||||
if ((pErrorEntry->header == INFOROM_NVL_ERROR_TYPE_INVALID) ||
|
||||
((pErrorEntry->metadata == metadata) &&
|
||||
(pErrorEntry->errorSubtype == errorSubtype)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i >= INFOROM_NVL_OBJECT_V3S_NUM_ERROR_ENTRIES)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: NVL error log is full -- unable to log error\n",
|
||||
__FUNCTION__);
|
||||
return -NVL_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
if (pErrorEntry->header == INFOROM_NVL_ERROR_TYPE_INVALID)
|
||||
{
|
||||
pErrorEntry->header = header;
|
||||
pErrorEntry->metadata = metadata;
|
||||
pErrorEntry->errorSubtype = errorSubtype;
|
||||
}
|
||||
|
||||
if (pErrorEntry->header == INFOROM_NVL_ERROR_TYPE_ACCUM)
|
||||
{
|
||||
accumTotalCount = NvU64_ALIGN32_VAL(&pErrorEntry->data.accum.totalCount);
|
||||
if (accumTotalCount != NV_U64_MAX)
|
||||
{
|
||||
if (pErrorEvent->count > NV_U64_MAX - accumTotalCount)
|
||||
{
|
||||
accumTotalCount = NV_U64_MAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
accumTotalCount += pErrorEvent->count;
|
||||
}
|
||||
|
||||
NvU64_ALIGN32_PACK(&pErrorEntry->data.accum.totalCount, &accumTotalCount);
|
||||
if (sec < pErrorEntry->data.accum.lastUpdated)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: System clock reporting earlier time than error timestamp\n",
|
||||
__FUNCTION__);
|
||||
}
|
||||
pErrorEntry->data.accum.lastUpdated = sec;
|
||||
*bDirty = NV_TRUE;
|
||||
}
|
||||
}
|
||||
else if (pErrorEntry->header == INFOROM_NVL_ERROR_TYPE_COUNT)
|
||||
{
|
||||
if (pErrorEntry->data.event.totalCount != NV_U32_MAX)
|
||||
{
|
||||
pErrorEntry->data.event.totalCount++;
|
||||
if (sec < pErrorEntry->data.event.lastError)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: System clock reporting earlier time than error timestamp\n",
|
||||
__FUNCTION__);
|
||||
}
|
||||
else
|
||||
{
|
||||
pErrorEntry->data.event.avgEventDelta =
|
||||
(pErrorEntry->data.event.avgEventDelta + sec -
|
||||
pErrorEntry->data.event.lastError) >> 1;
|
||||
}
|
||||
pErrorEntry->data.event.lastError = sec;
|
||||
*bDirty = NV_TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return -NVL_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
@ -56,7 +199,37 @@ nvswitch_inforom_nvl_get_max_correctable_error_rate_lr10
|
||||
NVSWITCH_GET_NVLINK_MAX_CORRECTABLE_ERROR_RATES_PARAMS *params
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
INFOROM_NVLINK_STATE *pNvlinkState;
|
||||
NvU8 linkID = params->linkId;
|
||||
|
||||
if (linkID >= NVSWITCH_NUM_LINKS_LR10)
|
||||
{
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
if (pInforom == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
pNvlinkState = pInforom->pNvlinkState;
|
||||
if (pNvlinkState == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
nvswitch_os_memset(params, 0, sizeof(NVSWITCH_GET_NVLINK_MAX_CORRECTABLE_ERROR_RATES_PARAMS));
|
||||
params->linkId = linkID;
|
||||
|
||||
nvswitch_os_memcpy(¶ms->dailyMaxCorrectableErrorRates, &pNvlinkState->pNvl->v3s.maxCorrectableErrorRates.dailyMaxCorrectableErrorRates[0][linkID],
|
||||
sizeof(params->dailyMaxCorrectableErrorRates));
|
||||
|
||||
nvswitch_os_memcpy(¶ms->monthlyMaxCorrectableErrorRates, &pNvlinkState->pNvl->v3s.maxCorrectableErrorRates.monthlyMaxCorrectableErrorRates[0][linkID],
|
||||
sizeof(params->monthlyMaxCorrectableErrorRates));
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
@ -66,8 +239,64 @@ nvswitch_inforom_nvl_get_errors_lr10
|
||||
NVSWITCH_GET_NVLINK_ERROR_COUNTS_PARAMS *params
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
INFOROM_NVLINK_STATE *pNvlinkState;
|
||||
NvU32 maxReadSize = sizeof(params->errorLog)/sizeof(NVSWITCH_NVLINK_ERROR_ENTRY);
|
||||
NvU32 errorLeftCount = 0, errorReadCount = 0, errIndx = 0;
|
||||
NvU32 errorStart = params->errorIndex;
|
||||
|
||||
if (pInforom == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
pNvlinkState = pInforom->pNvlinkState;
|
||||
if (pNvlinkState == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
if (errorStart >= INFOROM_NVL_OBJECT_V3S_NUM_ERROR_ENTRIES)
|
||||
{
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
nvswitch_os_memset(params->errorLog, 0, sizeof(params->errorLog));
|
||||
|
||||
while (((errorStart + errorLeftCount) < INFOROM_NVL_OBJECT_V3S_NUM_ERROR_ENTRIES) &&
|
||||
(pNvlinkState->pNvl->v3s.errorLog[errorStart + errorLeftCount].header != INFOROM_NVL_ERROR_TYPE_INVALID))
|
||||
{
|
||||
errorLeftCount++;
|
||||
}
|
||||
|
||||
if (errorLeftCount > maxReadSize)
|
||||
{
|
||||
errorReadCount = maxReadSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
errorReadCount = errorLeftCount;
|
||||
}
|
||||
|
||||
params->errorIndex = errorStart + errorReadCount;
|
||||
params->errorCount = errorReadCount;
|
||||
|
||||
if (errorReadCount > 0)
|
||||
{
|
||||
for (errIndx = 0; errIndx < errorReadCount; errIndx++)
|
||||
{
|
||||
if (inforom_nvl_v3_map_error_to_userspace_error(device,
|
||||
&pNvlinkState->pNvl->v3s.errorLog[errorStart+errIndx],
|
||||
¶ms->errorLog[errIndx]) != NVL_SUCCESS)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_update_link_correctable_error_info_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
@ -79,9 +308,251 @@ NvlStatus nvswitch_inforom_nvl_update_link_correctable_error_info_lr10
|
||||
void *pNvlErrorCounts,
|
||||
NvBool *bDirty
|
||||
)
|
||||
{
|
||||
INFOROM_NVL_OBJECT_V3S *pNvlObject = &((PINFOROM_NVL_OBJECT)pNvlGeneric)->v3s;
|
||||
INFOROM_NVL_CORRECTABLE_ERROR_RATE_STATE_V3S *pState =
|
||||
&((INFOROM_NVL_CORRECTABLE_ERROR_RATE_STATE *)pData)->v3s;
|
||||
INFOROM_NVLINK_CORRECTABLE_ERROR_COUNTS *pErrorCounts =
|
||||
(INFOROM_NVLINK_CORRECTABLE_ERROR_COUNTS *)pNvlErrorCounts;
|
||||
|
||||
NvU32 i;
|
||||
NvU32 sec;
|
||||
NvU32 day, month, currentEntryDay, currentEntryMonth;
|
||||
INFOROM_NVL_OBJECT_V3_CORRECTABLE_ERROR_RATE *pErrorRate;
|
||||
INFOROM_NVL_OBJECT_V3_CORRECTABLE_ERROR_RATE *pOldestErrorRate = NULL;
|
||||
INFOROM_NVL_OBJECT_V3S_MAX_CORRECTABLE_ERROR_RATES *pCorrErrorRates;
|
||||
NvBool bUpdated = NV_FALSE;
|
||||
INFOROM_NVLINK_ERROR_EVENT errorEvent;
|
||||
NvU32 currentFlitCrcRate;
|
||||
NvU32 *pCurrentLaneCrcRates;
|
||||
|
||||
if (bDirty == NULL)
|
||||
{
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
*bDirty = NV_FALSE;
|
||||
|
||||
if (linkId >= INFOROM_NVL_OBJECT_V3S_NUM_LINKS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"object does not store data for more than %u links (linkId = %u requested)\n",
|
||||
INFOROM_NVL_OBJECT_V3S_NUM_LINKS, linkId);
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
if (nvliptInstance > INFOROM_NVL_OBJECT_V3_NVLIPT_INSTANCE_MAX)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"object cannot log data for more than %u NVLIPTs (NVLIPT = %u requested)\n",
|
||||
INFOROM_NVL_OBJECT_V3_NVLIPT_INSTANCE_MAX, nvliptInstance);
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
if (localLinkIdx > INFOROM_NVL_OBJECT_V3_BLOCK_ID_MAX)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"object cannot log data for more than %u internal links (internal link = %u requested)\n",
|
||||
INFOROM_NVL_OBJECT_V3_BLOCK_ID_MAX, localLinkIdx);
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
sec = (NvU32) (nvswitch_os_get_platform_time_epoch() / NVSWITCH_INTERVAL_1SEC_IN_NS);
|
||||
inforom_nvl_v3_seconds_to_day_and_month(sec, &day, &month);
|
||||
|
||||
inforom_nvl_v3_update_correctable_error_rates(pState, linkId, pErrorCounts);
|
||||
currentFlitCrcRate = pState->errorsPerMinute[linkId].flitCrc;
|
||||
pCurrentLaneCrcRates = pState->errorsPerMinute[linkId].laneCrc;
|
||||
pCorrErrorRates = &pNvlObject->maxCorrectableErrorRates;
|
||||
|
||||
for (i = 0; i < NV_ARRAY_ELEMENTS(pCorrErrorRates->dailyMaxCorrectableErrorRates); i++)
|
||||
{
|
||||
pErrorRate = &pCorrErrorRates->dailyMaxCorrectableErrorRates[i][linkId];
|
||||
inforom_nvl_v3_seconds_to_day_and_month(pErrorRate->lastUpdated, ¤tEntryDay,
|
||||
¤tEntryMonth);
|
||||
|
||||
if ((pErrorRate->lastUpdated == 0) || (currentEntryDay == day))
|
||||
{
|
||||
if (inforom_nvl_v3_should_replace_error_rate_entry(pErrorRate,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates))
|
||||
{
|
||||
inforom_nvl_v3_update_error_rate_entry(pErrorRate, sec,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates);
|
||||
bUpdated = NV_TRUE;
|
||||
}
|
||||
pOldestErrorRate = NULL;
|
||||
break;
|
||||
}
|
||||
else if ((pOldestErrorRate == NULL) ||
|
||||
(pErrorRate->lastUpdated < pOldestErrorRate->lastUpdated))
|
||||
{
|
||||
pOldestErrorRate = pErrorRate;
|
||||
}
|
||||
}
|
||||
|
||||
if (pOldestErrorRate != NULL)
|
||||
{
|
||||
inforom_nvl_v3_update_error_rate_entry(pOldestErrorRate, sec,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates);
|
||||
bUpdated = NV_TRUE;
|
||||
}
|
||||
|
||||
for (i = 0; i < NV_ARRAY_ELEMENTS(pCorrErrorRates->monthlyMaxCorrectableErrorRates); i++)
|
||||
{
|
||||
pErrorRate = &pCorrErrorRates->monthlyMaxCorrectableErrorRates[i][linkId];
|
||||
inforom_nvl_v3_seconds_to_day_and_month(pErrorRate->lastUpdated, ¤tEntryDay,
|
||||
¤tEntryMonth);
|
||||
|
||||
if ((pErrorRate->lastUpdated == 0) || (currentEntryMonth == month))
|
||||
{
|
||||
if (inforom_nvl_v3_should_replace_error_rate_entry(pErrorRate,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates))
|
||||
{
|
||||
inforom_nvl_v3_update_error_rate_entry(pErrorRate, sec,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates);
|
||||
bUpdated = NV_TRUE;
|
||||
}
|
||||
pOldestErrorRate = NULL;
|
||||
break;
|
||||
}
|
||||
else if ((pOldestErrorRate == NULL) ||
|
||||
(pErrorRate->lastUpdated < pOldestErrorRate->lastUpdated))
|
||||
{
|
||||
pOldestErrorRate = pErrorRate;
|
||||
}
|
||||
}
|
||||
|
||||
if (pOldestErrorRate != NULL)
|
||||
{
|
||||
inforom_nvl_v3_update_error_rate_entry(pOldestErrorRate, sec,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates);
|
||||
bUpdated = NV_TRUE;
|
||||
}
|
||||
|
||||
*bDirty = bUpdated;
|
||||
|
||||
// Update aggregate error counts for each correctable error
|
||||
|
||||
errorEvent.nvliptInstance = nvliptInstance;
|
||||
errorEvent.localLinkIdx = localLinkIdx;
|
||||
|
||||
if (pErrorCounts->flitCrc > 0)
|
||||
{
|
||||
errorEvent.error = INFOROM_NVLINK_DL_RX_FLIT_CRC_CORR;
|
||||
errorEvent.count = pErrorCounts->flitCrc;
|
||||
nvswitch_inforom_nvl_log_error_event_lr10(device,
|
||||
pNvlGeneric, &errorEvent, &bUpdated);
|
||||
*bDirty |= bUpdated;
|
||||
}
|
||||
|
||||
if (pErrorCounts->rxLinkReplay > 0)
|
||||
{
|
||||
errorEvent.error = INFOROM_NVLINK_DL_RX_LINK_REPLAY_EVENTS_CORR;
|
||||
errorEvent.count = pErrorCounts->rxLinkReplay;
|
||||
bUpdated = NV_FALSE;
|
||||
nvswitch_inforom_nvl_log_error_event_lr10(device,
|
||||
pNvlGeneric, &errorEvent, &bUpdated);
|
||||
*bDirty |= bUpdated;
|
||||
}
|
||||
|
||||
if (pErrorCounts->txLinkReplay > 0)
|
||||
{
|
||||
errorEvent.error = INFOROM_NVLINK_DL_TX_LINK_REPLAY_EVENTS_CORR;
|
||||
errorEvent.count = pErrorCounts->txLinkReplay;
|
||||
bUpdated = NV_FALSE;
|
||||
nvswitch_inforom_nvl_log_error_event_lr10(device,
|
||||
pNvlGeneric, &errorEvent, &bUpdated);
|
||||
*bDirty |= bUpdated;
|
||||
}
|
||||
|
||||
if (pErrorCounts->linkRecovery > 0)
|
||||
{
|
||||
errorEvent.error = INFOROM_NVLINK_DL_LINK_RECOVERY_EVENTS_CORR;
|
||||
errorEvent.count = pErrorCounts->linkRecovery;
|
||||
bUpdated = NV_FALSE;
|
||||
nvswitch_inforom_nvl_log_error_event_lr10(device,
|
||||
pNvlGeneric, &errorEvent, &bUpdated);
|
||||
*bDirty |= bUpdated;
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (pErrorCounts->laneCrc[i] == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
errorEvent.error = INFOROM_NVLINK_DL_RX_LANE0_CRC_CORR + i;
|
||||
errorEvent.count = pErrorCounts->laneCrc[i];
|
||||
bUpdated = NV_FALSE;
|
||||
nvswitch_inforom_nvl_log_error_event_lr10(device,
|
||||
pNvlGeneric, &errorEvent, &bUpdated);
|
||||
*bDirty |= bUpdated;
|
||||
}
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_setL1Threshold_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
void *pNvlGeneric,
|
||||
NvU32 word1,
|
||||
NvU32 word2
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_getL1Threshold_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
void *pNvlGeneric,
|
||||
NvU32 *word1,
|
||||
NvU32 *word2
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_setup_nvlink_state_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
INFOROM_NVLINK_STATE *pNvlinkState,
|
||||
NvU8 version
|
||||
)
|
||||
{
|
||||
if (version != 3)
|
||||
{
|
||||
NVSWITCH_PRINT(device, WARN, "NVL v%u not supported\n", version);
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
pNvlinkState->pFmt = INFOROM_NVL_OBJECT_V3S_FMT;
|
||||
pNvlinkState->pPackedObject = nvswitch_os_malloc(INFOROM_NVL_OBJECT_V3S_PACKED_SIZE);
|
||||
if (pNvlinkState->pPackedObject == NULL)
|
||||
{
|
||||
return -NVL_NO_MEM;
|
||||
}
|
||||
|
||||
pNvlinkState->pNvl = nvswitch_os_malloc(sizeof(INFOROM_NVL_OBJECT));
|
||||
if (pNvlinkState->pNvl == NULL)
|
||||
{
|
||||
nvswitch_os_free(pNvlinkState->pPackedObject);
|
||||
return -NVL_NO_MEM;
|
||||
}
|
||||
|
||||
pNvlinkState->bDisableCorrectableErrorLogging = NV_FALSE;
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
static
|
||||
NvlStatus
|
||||
_inforom_ecc_find_useable_entry_index
|
||||
@ -810,3 +1281,14 @@ nvswitch_bbx_get_sxid_lr10
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
nvswitch_bbx_get_data_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU8 dataType,
|
||||
void *params
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2018-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2018-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -3492,11 +3492,16 @@ _nvswitch_service_nvltlc_rx_lnk_nonfatal_0_lr10
|
||||
{
|
||||
NvU32 pending, bit, unhandled;
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event;
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_STATUS_0);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_NON_FATAL_REPORT_EN_0);
|
||||
report.mask = report.raw_enable;
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
pending = report.raw_pending & report.mask;
|
||||
if (pending == 0)
|
||||
{
|
||||
@ -3505,6 +3510,7 @@ _nvswitch_service_nvltlc_rx_lnk_nonfatal_0_lr10
|
||||
|
||||
unhandled = pending;
|
||||
report.raw_first = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_FIRST_0);
|
||||
injected = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_REPORT_INJECT_0);
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RXRSPSTATUS_PRIV_ERR, 1);
|
||||
if (nvswitch_test_flags(pending, bit))
|
||||
@ -3512,6 +3518,11 @@ _nvswitch_service_nvltlc_rx_lnk_nonfatal_0_lr10
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLTLC_RX_LNK_RXRSPSTATUS_PRIV_ERR, "RX Rsp Status PRIV Error");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC_RX_LNK, _ERR_REPORT_INJECT_0, _RXRSPSTATUS_PRIV_ERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_RSP_STATUS_PRIV_ERR_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
NVSWITCH_UNHANDLED_CHECK(device, unhandled);
|
||||
@ -3544,12 +3555,17 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_0_lr10
|
||||
{
|
||||
NvU32 pending, bit, unhandled;
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event;
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_STATUS_0);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_NON_FATAL_REPORT_EN_0);
|
||||
report.mask = report.raw_enable;
|
||||
pending = report.raw_pending & report.mask;
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
if (pending == 0)
|
||||
{
|
||||
return -NVL_NOT_FOUND;
|
||||
@ -3557,12 +3573,20 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_0_lr10
|
||||
|
||||
unhandled = pending;
|
||||
report.raw_first = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_FIRST_0);
|
||||
injected = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_REPORT_INJECT_0);
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_0, _CREQ_RAM_DAT_ECC_DBE_ERR, 1);
|
||||
if (nvswitch_test_flags(pending, bit))
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLTLC_TX_LNK_CREQ_RAM_DAT_ECC_DBE_ERR, "CREQ RAM DAT ECC DBE Error");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC_TX_LNK, _ERR_REPORT_INJECT_0, _CREQ_RAM_DAT_ECC_DBE_ERR, 0x0, injected))
|
||||
{
|
||||
// TODO 3014908 log these in the NVL object until we have ECC object support
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_CREQ_DAT_RAM_ECC_DBE_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_0, _CREQ_RAM_ECC_LIMIT_ERR, 1);
|
||||
@ -3591,6 +3615,13 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLTLC_TX_LNK_COM_RAM_DAT_ECC_DBE_ERR, "COM RAM DAT ECC DBE Error");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC_TX_LNK, _ERR_REPORT_INJECT_0, _COM_RAM_DAT_ECC_DBE_ERR, 0x0, injected))
|
||||
{
|
||||
// TODO 3014908 log these in the NVL object until we have ECC object support
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_COM_DAT_RAM_ECC_DBE_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_0, _COM_RAM_ECC_LIMIT_ERR, 1);
|
||||
@ -3642,14 +3673,19 @@ _nvswitch_service_nvltlc_rx_lnk_nonfatal_1_lr10
|
||||
NvU32 link
|
||||
)
|
||||
{
|
||||
NvU32 pending, bit, unhandled, injected;
|
||||
NvU32 pending, bit, unhandled;
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event;
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_STATUS_1);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_NON_FATAL_REPORT_EN_1);
|
||||
report.mask = report.raw_enable;
|
||||
pending = report.raw_pending & report.mask;
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
if (pending == 0)
|
||||
{
|
||||
return -NVL_NOT_FOUND;
|
||||
@ -3667,6 +3703,8 @@ _nvswitch_service_nvltlc_rx_lnk_nonfatal_1_lr10
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_1, _AN1_HEARTBEAT_TIMEOUT_ERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_AN1_HEARTBEAT_TIMEOUT_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
//
|
||||
// WAR Bug 200627368: Mask off HBTO to avoid a storm
|
||||
// During the start of reset_and_drain, all links on the GPU
|
||||
@ -3719,12 +3757,17 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_1_lr10
|
||||
{
|
||||
NvU32 pending, bit, unhandled;
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event = { 0 };
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_STATUS_1);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_NON_FATAL_REPORT_EN_1);
|
||||
report.mask = report.raw_enable;
|
||||
pending = report.raw_pending & report.mask;
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
if (pending == 0)
|
||||
{
|
||||
return -NVL_NOT_FOUND;
|
||||
@ -3732,12 +3775,19 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_1_lr10
|
||||
|
||||
unhandled = pending;
|
||||
report.raw_first = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_FIRST_1);
|
||||
injected = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_REPORT_INJECT_1);
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_1, _AN1_TIMEOUT_VC0, 1);
|
||||
if (nvswitch_test_flags(pending, bit))
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLTLC_TX_LNK_AN1_TIMEOUT_VC0, "AN1 Timeout VC0");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _TX_LNK_ERR_REPORT_INJECT_1, _AN1_TIMEOUT_VC0, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC0_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_1, _AN1_TIMEOUT_VC1, 1);
|
||||
@ -3745,6 +3795,12 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_1_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLTLC_TX_LNK_AN1_TIMEOUT_VC1, "AN1 Timeout VC1");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _TX_LNK_ERR_REPORT_INJECT_1, _AN1_TIMEOUT_VC1, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC1_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_1, _AN1_TIMEOUT_VC2, 1);
|
||||
@ -3752,6 +3808,12 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_1_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLTLC_TX_LNK_AN1_TIMEOUT_VC2, "AN1 Timeout VC2");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _TX_LNK_ERR_REPORT_INJECT_1, _AN1_TIMEOUT_VC2, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC2_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_1, _AN1_TIMEOUT_VC3, 1);
|
||||
@ -3760,6 +3822,11 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_1_lr10
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLTLC_TX_LNK_AN1_TIMEOUT_VC3, "AN1 Timeout VC3");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _TX_LNK_ERR_REPORT_INJECT_1, _AN1_TIMEOUT_VC3, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC3_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_1, _AN1_TIMEOUT_VC4, 1);
|
||||
@ -3768,6 +3835,11 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_1_lr10
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLTLC_TX_LNK_AN1_TIMEOUT_VC4, "AN1 Timeout VC4");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _TX_LNK_ERR_REPORT_INJECT_1, _AN1_TIMEOUT_VC4, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC4_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_1, _AN1_TIMEOUT_VC5, 1);
|
||||
@ -3775,6 +3847,12 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_1_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLTLC_TX_LNK_AN1_TIMEOUT_VC5, "AN1 Timeout VC5");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _TX_LNK_ERR_REPORT_INJECT_1, _AN1_TIMEOUT_VC5, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC5_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_1, _AN1_TIMEOUT_VC6, 1);
|
||||
@ -3782,6 +3860,12 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_1_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLTLC_TX_LNK_AN1_TIMEOUT_VC6, "AN1 Timeout VC6");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _TX_LNK_ERR_REPORT_INJECT_1, _AN1_TIMEOUT_VC6, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC6_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_1, _AN1_TIMEOUT_VC7, 1);
|
||||
@ -3789,6 +3873,12 @@ _nvswitch_service_nvltlc_tx_lnk_nonfatal_1_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLTLC_TX_LNK_AN1_TIMEOUT_VC7, "AN1 Timeout VC7");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _TX_LNK_ERR_REPORT_INJECT_1, _AN1_TIMEOUT_VC7, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_AN1_TIMEOUT_VC7_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
NVSWITCH_UNHANDLED_CHECK(device, unhandled);
|
||||
@ -3890,11 +3980,16 @@ _nvswitch_service_nvlipt_lnk_nonfatal_lr10
|
||||
{
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
NvU32 pending, bit, unhandled;
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event = { 0 };
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLIPT_LNK, _NVLIPT_LNK, _ERR_STATUS_0);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLIPT_LNK, _NVLIPT_LNK, _ERR_NON_FATAL_REPORT_EN_0);
|
||||
report.mask = report.raw_enable;
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
pending = report.raw_pending & report.mask;
|
||||
if (pending == 0)
|
||||
{
|
||||
@ -3903,12 +3998,19 @@ _nvswitch_service_nvlipt_lnk_nonfatal_lr10
|
||||
|
||||
unhandled = pending;
|
||||
report.raw_first = NVSWITCH_LINK_RD32_LR10(device, link, NVLIPT_LNK, _NVLIPT_LNK, _ERR_FIRST_0);
|
||||
injected = NVSWITCH_LINK_RD32_LR10(device, link, NVLIPT_LNK, _NVLIPT_LNK, _ERR_REPORT_INJECT_0);
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_LNK, _ERR_STATUS_0, _ILLEGALLINKSTATEREQUEST, 1);
|
||||
if (nvswitch_test_flags(pending, bit))
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLIPT_LNK_ILLEGALLINKSTATEREQUEST, "_HW_NVLIPT_LNK_ILLEGALLINKSTATEREQUEST");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_LNK, _ERR_REPORT_INJECT_0, _ILLEGALLINKSTATEREQUEST, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_ILLEGAL_LINK_STATE_REQUEST_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_LNK, _ERR_STATUS_0, _FAILEDMINIONREQUEST, 1);
|
||||
@ -3916,6 +4018,12 @@ _nvswitch_service_nvlipt_lnk_nonfatal_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLIPT_LNK_FAILEDMINIONREQUEST, "_FAILEDMINIONREQUEST");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_LNK, _ERR_REPORT_INJECT_0, _FAILEDMINIONREQUEST, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_FAILED_MINION_REQUEST_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_LNK, _ERR_STATUS_0, _RESERVEDREQUESTVALUE, 1);
|
||||
@ -3923,6 +4031,12 @@ _nvswitch_service_nvlipt_lnk_nonfatal_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLIPT_LNK_RESERVEDREQUESTVALUE, "_RESERVEDREQUESTVALUE");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_LNK, _ERR_REPORT_INJECT_0, _RESERVEDREQUESTVALUE, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_RESERVED_REQUEST_VALUE_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_LNK, _ERR_STATUS_0, _LINKSTATEWRITEWHILEBUSY, 1);
|
||||
@ -3930,6 +4044,12 @@ _nvswitch_service_nvlipt_lnk_nonfatal_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLIPT_LNK_LINKSTATEWRITEWHILEBUSY, "_LINKSTATEWRITEWHILEBUSY");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_LNK, _ERR_REPORT_INJECT_0, _LINKSTATEWRITEWHILEBUSY, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_LINK_STATE_WRITE_WHILE_BUSY_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_LNK, _ERR_STATUS_0, _LINK_STATE_REQUEST_TIMEOUT, 1);
|
||||
@ -3937,6 +4057,12 @@ _nvswitch_service_nvlipt_lnk_nonfatal_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLIPT_LNK_LINK_STATE_REQUEST_TIMEOUT, "_LINK_STATE_REQUEST_TIMEOUT");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_LNK, _ERR_REPORT_INJECT_0, _LINK_STATE_REQUEST_TIMEOUT, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_LINK_STATE_REQUEST_TIMEOUT_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_LNK, _ERR_STATUS_0, _WRITE_TO_LOCKED_SYSTEM_REG_ERR, 1);
|
||||
@ -3944,6 +4070,12 @@ _nvswitch_service_nvlipt_lnk_nonfatal_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_NONFATAL(_HW_NVLIPT_LNK_WRITE_TO_LOCKED_SYSTEM_REG_ERR, "_WRITE_TO_LOCKED_SYSTEM_REG_ERR");
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_LNK, _ERR_REPORT_INJECT_0, _WRITE_TO_LOCKED_SYSTEM_REG_ERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_WRITE_TO_LOCKED_SYSTEM_REG_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
NVSWITCH_UNHANDLED_CHECK(device, unhandled);
|
||||
@ -4456,12 +4588,16 @@ nvswitch_service_nvldl_fatal_link_lr10
|
||||
{
|
||||
NvU32 pending, bit, unhandled;
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLDL, _NVLDL_TOP, _INTR);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLDL, _NVLDL_TOP, _INTR_STALL_EN);
|
||||
report.mask = report.raw_enable;
|
||||
pending = report.raw_pending & report.mask;
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
if (pending == 0)
|
||||
{
|
||||
return -NVL_NOT_FOUND;
|
||||
@ -4474,6 +4610,8 @@ nvswitch_service_nvldl_fatal_link_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_DLPL_TX_FAULT_RAM, "TX Fault Ram", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
error_event.error = INFOROM_NVLINK_DL_TX_FAULT_RAM_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLDL_TOP, _INTR, _TX_FAULT_INTERFACE, 1);
|
||||
@ -4481,6 +4619,8 @@ nvswitch_service_nvldl_fatal_link_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_DLPL_TX_FAULT_INTERFACE, "TX Fault Interface", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
error_event.error = INFOROM_NVLINK_DL_TX_FAULT_INTERFACE_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLDL_TOP, _INTR, _TX_FAULT_SUBLINK_CHANGE, 1);
|
||||
@ -4488,6 +4628,8 @@ nvswitch_service_nvldl_fatal_link_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_DLPL_TX_FAULT_SUBLINK_CHANGE, "TX Fault Sublink Change", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
error_event.error = INFOROM_NVLINK_DL_TX_FAULT_SUBLINK_CHANGE_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLDL_TOP, _INTR, _RX_FAULT_SUBLINK_CHANGE, 1);
|
||||
@ -4495,6 +4637,8 @@ nvswitch_service_nvldl_fatal_link_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_DLPL_RX_FAULT_SUBLINK_CHANGE, "RX Fault Sublink Change", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
error_event.error = INFOROM_NVLINK_DL_RX_FAULT_SUBLINK_CHANGE_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLDL_TOP, _INTR, _RX_FAULT_DL_PROTOCOL, 1);
|
||||
@ -4502,6 +4646,8 @@ nvswitch_service_nvldl_fatal_link_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_DLPL_RX_FAULT_DL_PROTOCOL, "RX Fault DL Protocol", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
error_event.error = INFOROM_NVLINK_DL_RX_FAULT_DL_PROTOCOL_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLDL_TOP, _INTR, _LTSSM_FAULT_DOWN, 1);
|
||||
@ -4509,6 +4655,8 @@ nvswitch_service_nvldl_fatal_link_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_DLPL_LTSSM_FAULT_DOWN, "LTSSM Fault Down", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
error_event.error = INFOROM_NVLINK_DL_LTSSM_FAULT_DOWN_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLDL_TOP, _INTR, _LTSSM_FAULT_UP, 1);
|
||||
@ -4516,6 +4664,8 @@ nvswitch_service_nvldl_fatal_link_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_DLPL_LTSSM_FAULT_UP, "LTSSM Fault Up", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
error_event.error = INFOROM_NVLINK_DL_LTSSM_FAULT_UP_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLDL_TOP, _INTR, _LTSSM_PROTOCOL, 1);
|
||||
@ -4621,12 +4771,17 @@ _nvswitch_service_nvltlc_tx_sys_fatal_lr10
|
||||
{
|
||||
NvU32 pending, bit, unhandled;
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event = { 0 };
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_SYS, _ERR_STATUS_0);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_SYS, _ERR_FATAL_REPORT_EN_0);
|
||||
report.mask = report.raw_enable;
|
||||
pending = report.raw_pending & report.mask;
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
if (pending == 0)
|
||||
{
|
||||
return -NVL_NOT_FOUND;
|
||||
@ -4634,12 +4789,19 @@ _nvswitch_service_nvltlc_tx_sys_fatal_lr10
|
||||
|
||||
unhandled = pending;
|
||||
report.raw_first = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_SYS, _ERR_FIRST_0);
|
||||
injected = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_SYS, _ERR_REPORT_INJECT_0);
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_SYS, _ERR_STATUS_0, _NCISOC_PARITY_ERR, 1);
|
||||
if (nvswitch_test_flags(pending, bit))
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_TX_SYS_NCISOC_PARITY_ERR, "NCISOC Parity Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _TX_SYS_ERR_REPORT_INJECT_0, _NCISOC_PARITY_ERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_NCISOC_PARITY_ERR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_SYS, _ERR_STATUS_0, _NCISOC_HDR_ECC_DBE_ERR, 1);
|
||||
@ -4647,6 +4809,12 @@ _nvswitch_service_nvltlc_tx_sys_fatal_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_TX_SYS_NCISOC_HDR_ECC_DBE_ERR, "NCISOC HDR ECC DBE Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _TX_SYS_ERR_REPORT_INJECT_0, _NCISOC_HDR_ECC_DBE_ERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_NCISOC_HDR_ECC_DBE_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_SYS, _ERR_STATUS_0, _NCISOC_DAT_ECC_DBE_ERR, 1);
|
||||
@ -4729,12 +4897,17 @@ _nvswitch_service_nvltlc_rx_sys_fatal_lr10
|
||||
{
|
||||
NvU32 pending, bit, unhandled;
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event = { 0 };
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_SYS, _ERR_STATUS_0);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_SYS, _ERR_FATAL_REPORT_EN_0);
|
||||
report.mask = report.raw_enable;
|
||||
pending = report.raw_pending & report.mask;
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
if (pending == 0)
|
||||
{
|
||||
return -NVL_NOT_FOUND;
|
||||
@ -4742,6 +4915,7 @@ _nvswitch_service_nvltlc_rx_sys_fatal_lr10
|
||||
|
||||
unhandled = pending;
|
||||
report.raw_first = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_SYS, _ERR_FIRST_0);
|
||||
injected = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_SYS, _ERR_REPORT_INJECT_0);
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_SYS, _ERR_STATUS_0, _NCISOC_PARITY_ERR, 1);
|
||||
if (nvswitch_test_flags(pending, bit))
|
||||
@ -4755,6 +4929,13 @@ _nvswitch_service_nvltlc_rx_sys_fatal_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RX_SYS_HDR_RAM_ECC_DBE_ERR, "HDR RAM ECC DBE Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC_RX_SYS, _ERR_REPORT_INJECT_0, _HDR_RAM_ECC_DBE_ERR, 0x0, injected))
|
||||
{
|
||||
// TODO 3014908 log these in the NVL object until we have ECC object support
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_HDR_RAM_ECC_DBE_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_SYS, _ERR_STATUS_0, _HDR_RAM_ECC_LIMIT_ERR, 1);
|
||||
@ -4769,6 +4950,13 @@ _nvswitch_service_nvltlc_rx_sys_fatal_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RX_SYS_DAT0_RAM_ECC_DBE_ERR, "DAT0 RAM ECC DBE Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC_RX_SYS, _ERR_REPORT_INJECT_0, _DAT0_RAM_ECC_DBE_ERR, 0x0, injected))
|
||||
{
|
||||
// TODO 3014908 log these in the NVL object until we have ECC object support
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_DAT0_RAM_ECC_DBE_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_SYS, _ERR_STATUS_0, _DAT0_RAM_ECC_LIMIT_ERR, 1);
|
||||
@ -4783,6 +4971,13 @@ _nvswitch_service_nvltlc_rx_sys_fatal_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RX_SYS_DAT1_RAM_ECC_DBE_ERR, "DAT1 RAM ECC DBE Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC_RX_SYS, _ERR_REPORT_INJECT_0, _DAT1_RAM_ECC_DBE_ERR, 0x0, injected))
|
||||
{
|
||||
// TODO 3014908 log these in the NVL object until we have ECC object support
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_DAT1_RAM_ECC_DBE_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_SYS, _ERR_STATUS_0, _DAT1_RAM_ECC_LIMIT_ERR, 1);
|
||||
@ -4830,12 +5025,17 @@ _nvswitch_service_nvltlc_tx_lnk_fatal_0_lr10
|
||||
{
|
||||
NvU32 pending, bit, unhandled;
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event = { 0 };
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_STATUS_0);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_FATAL_REPORT_EN_0);
|
||||
report.mask = report.raw_enable;
|
||||
pending = report.raw_pending & report.mask;
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
if (pending == 0)
|
||||
{
|
||||
return -NVL_NOT_FOUND;
|
||||
@ -4843,12 +5043,19 @@ _nvswitch_service_nvltlc_tx_lnk_fatal_0_lr10
|
||||
|
||||
unhandled = pending;
|
||||
report.raw_first = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_FIRST_0);
|
||||
injected = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_TX_LNK, _ERR_REPORT_INJECT_0);
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_0, _TXDLCREDITPARITYERR, 1);
|
||||
if (nvswitch_test_flags(pending, bit))
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_TXDLCREDITPARITYERR, "TX DL Credit Parity Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _TX_LNK_ERR_REPORT_INJECT_0, _TXDLCREDITPARITYERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_DL_CREDIT_PARITY_ERR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_TX_LNK, _ERR_STATUS_0, _CREQ_RAM_HDR_ECC_DBE_ERR, 1);
|
||||
@ -4884,6 +5091,13 @@ _nvswitch_service_nvltlc_tx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_TX_LNK_RSP1_RAM_DAT_ECC_DBE_ERR, "RSP1 RAM DAT ECC DBE Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC_TX_LNK, _ERR_REPORT_INJECT_0, _RSP1_RAM_DAT_ECC_DBE_ERR, 0x0, injected))
|
||||
{
|
||||
// TODO 3014908 log these in the NVL object until we have ECC object support
|
||||
error_event.error = INFOROM_NVLINK_TLC_TX_RSP1_DAT_RAM_ECC_DBE_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
NVSWITCH_UNHANDLED_CHECK(device, unhandled);
|
||||
@ -4923,11 +5137,17 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NvU32 pending, bit, unhandled;
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event = { 0 };
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_STATUS_0);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_FATAL_REPORT_EN_0);
|
||||
report.mask = report.raw_enable;
|
||||
pending = report.raw_pending & report.mask;
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
if (pending == 0)
|
||||
{
|
||||
return -NVL_NOT_FOUND;
|
||||
@ -4935,12 +5155,19 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
|
||||
unhandled = pending;
|
||||
report.raw_first = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_FIRST_0);
|
||||
injected = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_REPORT_INJECT_0);
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RXDLHDRPARITYERR, 1);
|
||||
if (nvswitch_test_flags(pending, bit))
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RXDLHDRPARITYERR, "RX DL HDR Parity Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RXDLHDRPARITYERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_DL_HDR_PARITY_ERR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RXDLDATAPARITYERR, 1);
|
||||
@ -4948,6 +5175,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RXDLDATAPARITYERR, "RX DL Data Parity Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RXDLDATAPARITYERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_DL_DATA_PARITY_ERR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RXDLCTRLPARITYERR, 1);
|
||||
@ -4955,6 +5188,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RXDLCTRLPARITYERR, "RX DL Ctrl Parity Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RXDLCTRLPARITYERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_DL_CTRL_PARITY_ERR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RXINVALIDAEERR, 1);
|
||||
@ -4962,6 +5201,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RXINVALIDAEERR, "RX Invalid DAE Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RXINVALIDAEERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_INVALID_AE_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RXINVALIDBEERR, 1);
|
||||
@ -4969,6 +5214,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RXINVALIDBEERR, "RX Invalid BE Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RXINVALIDBEERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_INVALID_BE_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RXINVALIDADDRALIGNERR, 1);
|
||||
@ -4976,6 +5227,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RXINVALIDADDRALIGNERR, "RX Invalid Addr Align Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RXINVALIDADDRALIGNERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_INVALID_ADDR_ALIGN_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RXPKTLENERR, 1);
|
||||
@ -4983,6 +5240,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RXPKTLENERR, "RX Packet Length Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RXPKTLENERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_PKTLEN_ERR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RSVCMDENCERR, 1);
|
||||
@ -4990,6 +5253,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RSVCMDENCERR, "RSV Cmd Encoding Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RSVCMDENCERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_RSVD_CMD_ENC_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RSVDATLENENCERR, 1);
|
||||
@ -4997,6 +5266,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RSVDATLENENCERR, "RSV Data Length Encoding Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RSVDATLENENCERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_RSVD_DAT_LEN_ENC_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RSVPKTSTATUSERR, 1);
|
||||
@ -5004,6 +5279,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RSVPKTSTATUSERR, "RSV Packet Status Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RSVPKTSTATUSERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_RSVD_PACKET_STATUS_ERR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RSVCACHEATTRPROBEREQERR, 1);
|
||||
@ -5011,6 +5292,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RSVCACHEATTRPROBEREQERR, "RSV Packet Status Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RSVCACHEATTRPROBEREQERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_RSVD_CACHE_ATTR_PROBE_REQ_ERR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RSVCACHEATTRPROBERSPERR, 1);
|
||||
@ -5018,6 +5305,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RSVCACHEATTRPROBERSPERR, "RSV CacheAttr Probe Rsp Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RSVCACHEATTRPROBERSPERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_RSVD_CACHE_ATTR_PROBE_RSP_ERR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _DATLENGTRMWREQMAXERR, 1);
|
||||
@ -5025,6 +5318,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_DATLENGTRMWREQMAXERR, "Data Length RMW Req Max Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _DATLENGTRMWREQMAXERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_DATLEN_GT_RMW_REQ_MAX_ERR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _DATLENLTATRRSPMINERR, 1);
|
||||
@ -5032,6 +5331,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_DATLENLTATRRSPMINERR, "Data Len Lt ATR RSP Min Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _DATLENLTATRRSPMINERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_DATLEN_LT_ATR_RSP_MIN_ERR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _INVALIDCACHEATTRPOERR, 1);
|
||||
@ -5039,6 +5344,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_INVALIDCACHEATTRPOERR, "Invalid Cache Attr PO Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _INVALIDCACHEATTRPOERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_INVALID_PO_FOR_CACHE_ATTR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _INVALIDCRERR, 1);
|
||||
@ -5046,6 +5357,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_INVALIDCRERR, "Invalid CR Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _INVALIDCRERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_INVALID_CR_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RXRSPSTATUS_HW_ERR, 1);
|
||||
@ -5053,6 +5370,13 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RX_LNK_RXRSPSTATUS_HW_ERR, "RX Rsp Status HW Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
// TODO 200564153 _RX_RSPSTATUS_HW_ERR should be reported as non-fatal
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RXRSPSTATUS_HW_ERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_RSP_STATUS_HW_ERR_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _RXRSPSTATUS_UR_ERR, 1);
|
||||
@ -5060,6 +5384,13 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RX_LNK_RXRSPSTATUS_UR_ERR, "RX Rsp Status UR Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
// TODO 200564153 _RX_RSPSTATUS_UR_ERR should be reported as non-fatal
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _RXRSPSTATUS_UR_ERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_RSP_STATUS_UR_ERR_NONFATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_0, _INVALID_COLLAPSED_RESPONSE_ERR, 1);
|
||||
@ -5067,6 +5398,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_0_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RX_LNK_INVALID_COLLAPSED_RESPONSE_ERR, "Invalid Collapsed Response Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_0, _INVALID_COLLAPSED_RESPONSE_ERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_INVALID_COLLAPSED_RESPONSE_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
NVSWITCH_UNHANDLED_CHECK(device, unhandled);
|
||||
@ -5106,12 +5443,17 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_1_lr10
|
||||
{
|
||||
NvU32 pending, bit, unhandled;
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event = { 0 };
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_STATUS_1);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_FATAL_REPORT_EN_1);
|
||||
report.mask = report.raw_enable;
|
||||
pending = report.raw_pending & report.mask;
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
if (pending == 0)
|
||||
{
|
||||
return -NVL_NOT_FOUND;
|
||||
@ -5119,12 +5461,19 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_1_lr10
|
||||
|
||||
unhandled = pending;
|
||||
report.raw_first = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_FIRST_1);
|
||||
injected = NVSWITCH_LINK_RD32_LR10(device, link, NVLTLC, _NVLTLC_RX_LNK, _ERR_REPORT_INJECT_1);
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_1, _RXHDROVFERR, 1);
|
||||
if (nvswitch_test_flags(pending, bit))
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RXHDROVFERR, "RX HDR OVF Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_1, _RXHDROVFERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_HDR_OVERFLOW_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_1, _RXDATAOVFERR, 1);
|
||||
@ -5132,6 +5481,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_1_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_RXDATAOVFERR, "RX Data OVF Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_1, _RXDATAOVFERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_DATA_OVERFLOW_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_1, _STOMPDETERR, 1);
|
||||
@ -5139,6 +5494,12 @@ _nvswitch_service_nvltlc_rx_lnk_fatal_1_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLTLC_STOMPDETERR, "Stomp Det Error", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLTLC, _RX_LNK_ERR_REPORT_INJECT_1, _STOMPDETERR, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_TLC_RX_STOMP_DETECTED_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLTLC_RX_LNK, _ERR_STATUS_1, _RXPOISONERR, 1);
|
||||
@ -5253,6 +5614,8 @@ _nvswitch_service_nvlipt_common_fatal_lr10
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
NvU32 pending, bit, contain, unhandled;
|
||||
NvU32 link, local_link_idx;
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event = { 0 };
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_NVLIPT_RD32_LR10(device, instance, _NVLIPT_COMMON, _ERR_STATUS_0);
|
||||
report.raw_enable = NVSWITCH_NVLIPT_RD32_LR10(device, instance, _NVLIPT_COMMON, _ERR_FATAL_REPORT_EN_0);
|
||||
@ -5267,9 +5630,12 @@ _nvswitch_service_nvlipt_common_fatal_lr10
|
||||
return -NVL_NOT_FOUND;
|
||||
}
|
||||
|
||||
error_event.nvliptInstance = (NvU8) instance;
|
||||
|
||||
unhandled = pending;
|
||||
report.raw_first = NVSWITCH_NVLIPT_RD32_LR10(device, instance, _NVLIPT_COMMON, _ERR_FIRST_0);
|
||||
contain = NVSWITCH_NVLIPT_RD32_LR10(device, instance, _NVLIPT_COMMON, _ERR_CONTAIN_EN_0);
|
||||
injected = NVSWITCH_NVLIPT_RD32_LR10(device, instance, _NVLIPT_COMMON, _ERR_REPORT_INJECT_0);
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_COMMON, _ERR_STATUS_0, _CLKCTL_ILLEGAL_REQUEST, 1);
|
||||
if (nvswitch_test_flags(pending, bit))
|
||||
@ -5284,6 +5650,12 @@ _nvswitch_service_nvlipt_common_fatal_lr10
|
||||
}
|
||||
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_COMMON, _ERR_REPORT_INJECT_0, _CLKCTL_ILLEGAL_REQUEST, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_CLKCTL_ILLEGAL_REQUEST_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_COMMON, _ERR_STATUS_0, _RSTSEQ_PLL_TIMEOUT, 1);
|
||||
@ -5299,6 +5671,12 @@ _nvswitch_service_nvlipt_common_fatal_lr10
|
||||
}
|
||||
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_COMMON, _ERR_REPORT_INJECT_0, _RSTSEQ_PLL_TIMEOUT, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_RSTSEQ_PLL_TIMEOUT_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_COMMON, _ERR_STATUS_0, _RSTSEQ_PHYARB_TIMEOUT, 1);
|
||||
@ -5314,6 +5692,12 @@ _nvswitch_service_nvlipt_common_fatal_lr10
|
||||
}
|
||||
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_COMMON, _ERR_REPORT_INJECT_0, _RSTSEQ_PHYARB_TIMEOUT, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_RSTSEQ_PHYARB_TIMEOUT_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
NVSWITCH_UNHANDLED_CHECK(device, unhandled);
|
||||
@ -5360,6 +5744,8 @@ _nvswitch_service_nvlipt_lnk_fatal_lr10
|
||||
{
|
||||
NVSWITCH_INTERRUPT_LOG_TYPE report = { 0 };
|
||||
NvU32 pending, bit, unhandled;
|
||||
INFOROM_NVLINK_ERROR_EVENT error_event = { 0 };
|
||||
NvU32 injected;
|
||||
|
||||
report.raw_pending = NVSWITCH_LINK_RD32_LR10(device, link, NVLIPT_LNK, _NVLIPT_LNK, _ERR_STATUS_0);
|
||||
report.raw_enable = NVSWITCH_LINK_RD32_LR10(device, link, NVLIPT_LNK, _NVLIPT_LNK, _ERR_FATAL_REPORT_EN_0);
|
||||
@ -5371,14 +5757,24 @@ _nvswitch_service_nvlipt_lnk_fatal_lr10
|
||||
return -NVL_NOT_FOUND;
|
||||
}
|
||||
|
||||
error_event.nvliptInstance = (NvU8) nvlipt_instance;
|
||||
error_event.localLinkIdx = (NvU8) NVSWITCH_NVLIPT_GET_LOCAL_LINK_ID_LR10(link);
|
||||
|
||||
unhandled = pending;
|
||||
report.raw_first = NVSWITCH_LINK_RD32_LR10(device, link, NVLIPT_LNK, _NVLIPT_LNK, _ERR_FIRST_0);
|
||||
injected = NVSWITCH_LINK_RD32_LR10(device, link, NVLIPT_LNK, _NVLIPT_LNK, _ERR_REPORT_INJECT_0);
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_LNK, _ERR_STATUS_0, _SLEEPWHILEACTIVELINK, 1);
|
||||
if (nvswitch_test_flags(pending, bit))
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLIPT_LNK_SLEEPWHILEACTIVELINK, "No non-empty link is detected", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_LNK, _ERR_REPORT_INJECT_0, _SLEEPWHILEACTIVELINK, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_SLEEP_WHILE_ACTIVE_LINK_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_LNK, _ERR_STATUS_0, _RSTSEQ_PHYCTL_TIMEOUT, 1);
|
||||
@ -5386,6 +5782,12 @@ _nvswitch_service_nvlipt_lnk_fatal_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLIPT_LNK_RSTSEQ_PHYCTL_TIMEOUT, "Reset sequencer timed out waiting for a handshake from PHYCTL", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_LNK, _ERR_REPORT_INJECT_0, _RSTSEQ_PHYCTL_TIMEOUT, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_RSTSEQ_PHYCTL_TIMEOUT_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
bit = DRF_NUM(_NVLIPT_LNK, _ERR_STATUS_0, _RSTSEQ_CLKCTL_TIMEOUT, 1);
|
||||
@ -5393,6 +5795,12 @@ _nvswitch_service_nvlipt_lnk_fatal_lr10
|
||||
{
|
||||
NVSWITCH_REPORT_FATAL(_HW_NVLIPT_LNK_RSTSEQ_CLKCTL_TIMEOUT, "Reset sequencer timed out waiting for a handshake from CLKCTL", NV_FALSE);
|
||||
nvswitch_clear_flags(&unhandled, bit);
|
||||
|
||||
if (FLD_TEST_DRF_NUM(_NVLIPT_LNK, _ERR_REPORT_INJECT_0, _RSTSEQ_CLKCTL_TIMEOUT, 0x0, injected))
|
||||
{
|
||||
error_event.error = INFOROM_NVLINK_NVLIPT_RSTSEQ_CLKCTL_TIMEOUT_FATAL;
|
||||
nvswitch_inforom_nvlink_log_error_event(device, &error_event);
|
||||
}
|
||||
}
|
||||
|
||||
NVSWITCH_UNHANDLED_CHECK(device, unhandled);
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "regkey_nvswitch.h"
|
||||
#include "lr10/lr10.h"
|
||||
#include "lr10/minion_lr10.h"
|
||||
#include "lr10/pmgr_lr10.h"
|
||||
|
||||
#include "nvswitch/lr10/dev_nvldl_ip.h"
|
||||
#include "nvswitch/lr10/dev_nvldl_ip_addendum.h"
|
||||
@ -42,6 +43,73 @@
|
||||
#include "nvswitch/lr10/dev_nvlipt_ip.h"
|
||||
#include "nvswitch/lr10/dev_nport_ip.h"
|
||||
|
||||
#define NUM_SWITCH_WITH_DISCONNETED_REMOTE_LINK 12 // This must be incremented if any entries are added to the array below
|
||||
lr10_links_connected_to_disabled_remote_end nvswitchDisconnetedRemoteLinkMasks[] =
|
||||
{
|
||||
{
|
||||
0x8, // switchPhysicalId
|
||||
0x56A000500, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
{
|
||||
0x9, // switchPhysicalId
|
||||
0x509009900, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
{
|
||||
0xa, // switchPhysicalId
|
||||
0x0, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
{
|
||||
0xb, // switchPhysicalId
|
||||
0x56A000600, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
{
|
||||
0xc, // switchPhysicalId
|
||||
0x4A9009400, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
{
|
||||
0xd, // switchPhysicalId
|
||||
0x0, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
{
|
||||
0x18, // switchPhysicalId
|
||||
0x56A000500, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
{
|
||||
0x19, // switchPhysicalId
|
||||
0x509009900, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
{
|
||||
0x1a, // switchPhysicalId
|
||||
0x0, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
{
|
||||
0x1b, // switchPhysicalId
|
||||
0x56A000600, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
{
|
||||
0x1c, // switchPhysicalId
|
||||
0x4A9009400, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
{
|
||||
0x1d, // switchPhysicalId
|
||||
0x0, // accessLinkMask
|
||||
0xFF00FF // trunkLinkMask
|
||||
},
|
||||
};
|
||||
ct_assert(sizeof(nvswitchDisconnetedRemoteLinkMasks)/sizeof(lr10_links_connected_to_disabled_remote_end) == NUM_SWITCH_WITH_DISCONNETED_REMOTE_LINK);
|
||||
|
||||
|
||||
void
|
||||
nvswitch_setup_link_loopback_mode_lr10
|
||||
(
|
||||
@ -498,6 +566,11 @@ nvswitch_init_lpwr_regs_lr10
|
||||
NvU8 softwareDesired, hardwareDisable;
|
||||
NvBool bLpEnable;
|
||||
|
||||
if (nvswitch_is_link_in_reset(device, link))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (device->regkeys.enable_pm == NV_SWITCH_REGKEY_ENABLE_PM_NO)
|
||||
{
|
||||
return;
|
||||
@ -613,6 +686,15 @@ nvswitch_init_lpwr_regs_lr10
|
||||
tempRegVal);
|
||||
}
|
||||
|
||||
void
|
||||
nvswitch_program_l1_scratch_reg_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU32 linkNumber
|
||||
)
|
||||
{
|
||||
// Not Implemented for LR10
|
||||
}
|
||||
|
||||
void
|
||||
nvswitch_init_buffer_ready_lr10
|
||||
@ -799,6 +881,22 @@ nvswitch_corelib_set_dl_link_mode_lr10
|
||||
return -NVL_UNBOUND_DEVICE;
|
||||
}
|
||||
|
||||
if (nvswitch_does_link_need_termination_enabled(device, link))
|
||||
{
|
||||
if (mode == NVLINK_LINKSTATE_INITPHASE1)
|
||||
{
|
||||
status = nvswitch_link_termination_setup(device, link);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: Failed to enable termination on link #%d\n", __FUNCTION__, link->linkNumber);
|
||||
}
|
||||
}
|
||||
|
||||
// return SUCCESS to avoid errors being propogated
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case NVLINK_LINKSTATE_SAFE:
|
||||
@ -1233,6 +1331,15 @@ nvswitch_corelib_set_tl_link_mode_lr10
|
||||
return -NVL_UNBOUND_DEVICE;
|
||||
}
|
||||
|
||||
if (nvswitch_does_link_need_termination_enabled(device, link))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
"%s: link #% is connected to a disabled remote end. Skipping TL link mode request!\n", __FUNCTION__, link->linkNumber);
|
||||
|
||||
// return SUCCESS to avoid errors being propogated
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case NVLINK_LINKSTATE_RESET:
|
||||
@ -1351,6 +1458,15 @@ nvswitch_corelib_set_tx_mode_lr10
|
||||
return -NVL_UNBOUND_DEVICE;
|
||||
}
|
||||
|
||||
if (nvswitch_does_link_need_termination_enabled(device, link))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
"%s: link #% is connected to a disabled remote end. Skipping TX mode request!\n", __FUNCTION__, link->linkNumber);
|
||||
|
||||
// return SUCCESS to avoid errors being propogated
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
// check if link is in reset
|
||||
if (nvswitch_is_link_in_reset(device, link))
|
||||
{
|
||||
@ -1614,6 +1730,15 @@ nvswitch_corelib_set_rx_mode_lr10
|
||||
return -NVL_UNBOUND_DEVICE;
|
||||
}
|
||||
|
||||
if (nvswitch_does_link_need_termination_enabled(device, link))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
"%s: link #% is connected to a disabled remote end. Skipping RX mode request!\n", __FUNCTION__, link->linkNumber);
|
||||
|
||||
// return SUCCESS to avoid errors being propogated
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
// check if link is in reset
|
||||
if (nvswitch_is_link_in_reset(device, link))
|
||||
{
|
||||
@ -1824,6 +1949,15 @@ nvswitch_corelib_set_rx_detect_lr10
|
||||
NvlStatus status;
|
||||
nvswitch_device *device = link->dev->pDevInfo;
|
||||
|
||||
if (nvswitch_does_link_need_termination_enabled(device, link))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
"%s: link #% is connected to a disabled remote end. Skipping RxDet request!\n", __FUNCTION__, link->linkNumber);
|
||||
|
||||
// return SUCCESS to avoid errors being propogated
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
status = nvswitch_minion_send_command(device, link->linkNumber,
|
||||
NV_MINION_NVLINK_DL_CMD_COMMAND_TURING_RXDET, 0);
|
||||
|
||||
@ -2275,6 +2409,8 @@ nvswitch_load_link_disable_settings_lr10
|
||||
NvU32 val;
|
||||
NVLINK_CONFIG_DATA_LINKENTRY *vbios_link_entry = NULL;
|
||||
NVSWITCH_BIOS_NVLINK_CONFIG *bios_config;
|
||||
NvlStatus status;
|
||||
lr10_device *chip_device = NVSWITCH_GET_CHIP_DEVICE_LR10(device);
|
||||
|
||||
bios_config = nvswitch_get_bios_nvlink_config(device);
|
||||
if ((bios_config == NULL) || (bios_config->bit_address == 0))
|
||||
@ -2315,15 +2451,16 @@ nvswitch_load_link_disable_settings_lr10
|
||||
__FUNCTION__, link->linkNumber);
|
||||
return;
|
||||
}
|
||||
val = FLD_SET_DRF(_NVLIPT_LNK, _CTRL_SYSTEM_LINK_MODE_CTRL, _LINK_DISABLE,
|
||||
_DISABLED, val);
|
||||
NVSWITCH_LINK_WR32_LR10(device, link->linkNumber,
|
||||
NVLIPT_LNK, _NVLIPT_LNK, _CTRL_SYSTEM_LINK_MODE_CTRL, val);
|
||||
|
||||
// Set link to invalid and unregister from corelib
|
||||
device->link[link->linkNumber].valid = NV_FALSE;
|
||||
nvlink_lib_unregister_link(link);
|
||||
nvswitch_destroy_link(link);
|
||||
status = nvswitch_link_termination_setup(device, link);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: Failed to enable termination on link #%d\n", __FUNCTION__, link->linkNumber);
|
||||
return;
|
||||
}
|
||||
// add link to disabledRemoteEndLinkMask
|
||||
chip_device->disabledRemoteEndLinkMask |= NVBIT64(link->linkNumber);
|
||||
|
||||
return;
|
||||
}
|
||||
@ -2379,3 +2516,124 @@ nvswitch_reset_and_train_link_lr10
|
||||
{
|
||||
return NVL_ERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NvBool
|
||||
nvswitch_does_link_need_termination_enabled_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
nvlink_link *link
|
||||
)
|
||||
{
|
||||
#if defined(INCLUDE_NVLINK_LIB)
|
||||
NvU32 i;
|
||||
NvU32 physicalId;
|
||||
lr10_device *chip_device;
|
||||
NvU32 numNvswitches;
|
||||
NvlStatus status;
|
||||
|
||||
physicalId = nvswitch_read_physical_id(device);
|
||||
chip_device = NVSWITCH_GET_CHIP_DEVICE_LR10(device);
|
||||
if (chip_device == NULL)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: Failed to get lr10 chip device!\n", __FUNCTION__);
|
||||
return NV_FALSE;
|
||||
}
|
||||
|
||||
//
|
||||
// If disabledRemoteEndLinkMask has not been cached then
|
||||
// using the switch's physicalId search nvswitchDisconnetedRemoteLinkMasks
|
||||
// til a match is found then copy out the linkMask to the chip_device
|
||||
// Only run this operation if there is a registed device with a reduced
|
||||
// nvlink config
|
||||
//
|
||||
if (chip_device->bDisabledRemoteEndLinkMaskCached == NV_FALSE)
|
||||
{
|
||||
chip_device->disabledRemoteEndLinkMask = 0;
|
||||
if (nvlink_lib_is_registerd_device_with_reduced_config())
|
||||
{
|
||||
for (i = 0; i < NUM_SWITCH_WITH_DISCONNETED_REMOTE_LINK; ++i)
|
||||
{
|
||||
if (nvswitchDisconnetedRemoteLinkMasks[i].switchPhysicalId == physicalId)
|
||||
{
|
||||
chip_device->disabledRemoteEndLinkMask |=
|
||||
nvswitchDisconnetedRemoteLinkMasks[i].accessLinkMask;
|
||||
|
||||
status = nvlink_lib_return_device_count_by_type(NVLINK_DEVICE_TYPE_NVSWITCH, &numNvswitches);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: Failed to get nvswitch device count!\n", __FUNCTION__);
|
||||
break;
|
||||
}
|
||||
|
||||
if (numNvswitches <= NVSWITCH_NUM_DEVICES_PER_DELTA_LR10)
|
||||
{
|
||||
chip_device->disabledRemoteEndLinkMask |=
|
||||
nvswitchDisconnetedRemoteLinkMasks[i].trunkLinkMask;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
chip_device->bDisabledRemoteEndLinkMaskCached = NV_TRUE;
|
||||
}
|
||||
|
||||
return ((BIT64(link->linkNumber) & chip_device->disabledRemoteEndLinkMask) != 0);
|
||||
#else
|
||||
return NV_FALSE;
|
||||
#endif //defined(INCLUDE_NVLINK_LIB)
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
nvswitch_link_termination_setup_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
nvlink_link* link
|
||||
)
|
||||
{
|
||||
NvlStatus status;
|
||||
NvU32 linkId = link->linkNumber;
|
||||
|
||||
// Sanity check
|
||||
if ((link == NULL) ||
|
||||
(linkId >= NVSWITCH_NVLINK_MAX_LINKS) ||
|
||||
!NVSWITCH_IS_LINK_ENG_VALID_LR10(device, NVLDL, linkId))
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Link %d is invalid!\n", __FUNCTION__, linkId);
|
||||
return NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
// Sanity check nvlink version
|
||||
if (link->version != NVLINK_DEVICE_VERSION_30)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Link %d: only nvlink version 3.0 can run the termination setup\n",
|
||||
__FUNCTION__, linkId);
|
||||
return NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
// Send INITPHASE1 to the link
|
||||
status = nvswitch_minion_send_command_lr10(device, link->linkNumber,
|
||||
NV_MINION_NVLINK_DL_CMD_COMMAND_INITPHASE1, 0);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Failed to send initphase1 to link %d", __FUNCTION__, linkId);
|
||||
return NVL_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
// Send INITRXTXTERM to the link
|
||||
nvswitch_minion_send_command_lr10(device, link->linkNumber,
|
||||
NV_MINION_NVLINK_DL_CMD_COMMAND_INITRXTXTERM, 0);
|
||||
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Failed to send INITRXTXTERM to link %d", __FUNCTION__, linkId);
|
||||
}
|
||||
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
"%s: enabled termination for switchPhysicalId %d link# %d\n",
|
||||
__FUNCTION__, nvswitch_read_physical_id(device), linkId);
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2018-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2018-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -3655,6 +3655,15 @@ nvswitch_initialize_device_state_lr10
|
||||
goto nvswitch_initialize_device_state_exit;
|
||||
}
|
||||
|
||||
retval = nvswitch_check_io_sanity(device);
|
||||
if (NVL_SUCCESS != retval)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: IO sanity test failed\n",
|
||||
__FUNCTION__);
|
||||
goto nvswitch_initialize_device_state_exit;
|
||||
}
|
||||
|
||||
NVSWITCH_PRINT(device, SETUP,
|
||||
"%s: MMIO discovery\n",
|
||||
__FUNCTION__);
|
||||
@ -3855,7 +3864,7 @@ nvswitch_initialize_device_state_lr10
|
||||
}
|
||||
else
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
NVSWITCH_PRINT(device, WARN,
|
||||
"%s: Skipping SPI init.\n",
|
||||
__FUNCTION__);
|
||||
}
|
||||
@ -3874,7 +3883,7 @@ nvswitch_initialize_device_state_lr10
|
||||
}
|
||||
else
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
NVSWITCH_PRINT(device, WARN,
|
||||
"%s: Skipping SMBPBI init.\n",
|
||||
__FUNCTION__);
|
||||
}
|
||||
@ -4579,26 +4588,6 @@ _nvswitch_get_info_revision_minor_ext
|
||||
return (DRF_VAL(_PSMC, _BOOT_42, _MINOR_EXTENDED_REVISION, val));
|
||||
}
|
||||
|
||||
static NvU32
|
||||
_nvswitch_get_info_voltage
|
||||
(
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
NvU32 voltage = 0;
|
||||
|
||||
return voltage;
|
||||
}
|
||||
|
||||
static NvBool
|
||||
_nvswitch_inforom_nvl_supported
|
||||
(
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
return NV_FALSE;
|
||||
}
|
||||
|
||||
static NvBool
|
||||
_nvswitch_inforom_bbx_supported
|
||||
(
|
||||
@ -4769,7 +4758,7 @@ nvswitch_ctrl_get_info_lr10
|
||||
p->info[i] = device->switch_pll.vco_freq_khz;
|
||||
break;
|
||||
case NVSWITCH_GET_INFO_INDEX_VOLTAGE_MVOLT:
|
||||
p->info[i] = _nvswitch_get_info_voltage(device);
|
||||
retval = -NVL_ERR_NOT_SUPPORTED;
|
||||
break;
|
||||
case NVSWITCH_GET_INFO_INDEX_PHYSICAL_ID:
|
||||
p->info[i] = nvswitch_read_physical_id(device);
|
||||
@ -6323,7 +6312,6 @@ nvswitch_get_nvlink_ecc_errors_lr10
|
||||
NvU32 sublinkWidth;
|
||||
|
||||
link = nvswitch_get_link(device, i);
|
||||
sublinkWidth = device->hal.nvswitch_get_sublink_width(device, i);
|
||||
|
||||
if ((link == NULL) ||
|
||||
!NVSWITCH_IS_LINK_ENG_VALID_LR10(device, NVLDL, link->linkNumber) ||
|
||||
@ -6332,6 +6320,8 @@ nvswitch_get_nvlink_ecc_errors_lr10
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
sublinkWidth = device->hal.nvswitch_get_sublink_width(device, i);
|
||||
|
||||
minion_enabled = nvswitch_is_minion_initialized(device,
|
||||
NVSWITCH_GET_LINK_ENG_INST(device, link->linkNumber, MINION));
|
||||
|
||||
@ -6380,6 +6370,15 @@ nvswitch_get_num_links_lr10
|
||||
return num_links;
|
||||
}
|
||||
|
||||
static NvU8
|
||||
nvswitch_get_num_links_per_nvlipt_lr10
|
||||
(
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
return NVSWITCH_LINKS_PER_NVLIPT;
|
||||
}
|
||||
|
||||
NvBool
|
||||
nvswitch_is_link_valid_lr10
|
||||
(
|
||||
@ -6413,13 +6412,6 @@ nvswitch_ctrl_get_fom_values_lr10
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
if (nvswitch_is_link_in_reset(device, link))
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: link #%d is in reset\n",
|
||||
__FUNCTION__, p->linkId);
|
||||
return -NVL_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
status = nvswitch_minion_get_dl_status(device, p->linkId,
|
||||
NV_NVLSTAT_TR16, 0, &statData);
|
||||
p->figureOfMeritValues[0] = (NvU16) (statData & 0xFFFF);
|
||||
@ -7664,7 +7656,7 @@ nvswitch_ctrl_get_sw_info_lr10
|
||||
switch (p->index[i])
|
||||
{
|
||||
case NVSWITCH_GET_SW_INFO_INDEX_INFOROM_NVL_SUPPORTED:
|
||||
p->info[i] = (NvU32)_nvswitch_inforom_nvl_supported(device);
|
||||
p->info[i] = NV_TRUE;
|
||||
break;
|
||||
case NVSWITCH_GET_SW_INFO_INDEX_INFOROM_BBX_SUPPORTED:
|
||||
p->info[i] = (NvU32)_nvswitch_inforom_bbx_supported(device);
|
||||
@ -7847,6 +7839,15 @@ nvswitch_ctrl_get_nvlink_error_threshold_lr10
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
nvswitch_check_io_sanity_lr10
|
||||
(
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
//
|
||||
// This function auto creates the lr10 HAL connectivity from the NVSWITCH_INIT_HAL
|
||||
// macro in haldef_nvswitch.h
|
||||
|
@ -314,3 +314,13 @@ nvswitch_ctrl_therm_read_voltage_lr10
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
nvswitch_ctrl_therm_read_power_lr10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NVSWITCH_GET_POWER_PARAMS *info
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
|
@ -279,6 +279,7 @@ _flcnDbgInfoCaptureRiscvPcTrace_LS10
|
||||
{
|
||||
NvU32 ctl, ridx, widx, bufferSize;
|
||||
NvBool bWasFull;
|
||||
NvU64 bios_version;
|
||||
|
||||
// Only supported on riscv
|
||||
if (!UPROC_ENG_ARCH_FALCON_RISCV(pFlcn))
|
||||
@ -354,8 +355,13 @@ _flcnDbgInfoCaptureRiscvPcTrace_LS10
|
||||
break;
|
||||
}
|
||||
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: TRACE[%d] = 0x%16llx\n", __FUNCTION__, entry, pc);
|
||||
NVSWITCH_PRINT_SXID_NO_BBX(device, NVSWITCH_ERR_HW_SOE_HALT, "SOE HALT data[%d] = 0x%16llx\n", entry, pc);
|
||||
}
|
||||
|
||||
// Print VBIOS version at the end
|
||||
nvswitch_lib_get_bios_version(device, &bios_version);
|
||||
NVSWITCH_PRINT_SXID_NO_BBX(device, NVSWITCH_ERR_HW_SOE_HALT,
|
||||
"SOE HALT data[%d] = 0x%16llx\n", entry, bios_version);
|
||||
}
|
||||
|
||||
// reset trace buffer
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -30,6 +30,8 @@
|
||||
#include "rmsoecmdif.h"
|
||||
#include "flcn/flcn_nvswitch.h"
|
||||
#include "rmflcncmdif_nvswitch.h"
|
||||
#include "inforom/inforom_nvl_v3_nvswitch.h"
|
||||
#include "inforom/inforom_nvl_v4_nvswitch.h"
|
||||
|
||||
NvlStatus
|
||||
nvswitch_inforom_nvl_log_error_event_ls10
|
||||
@ -40,7 +42,252 @@ nvswitch_inforom_nvl_log_error_event_ls10
|
||||
NvBool *bDirty
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_IMPLEMENTED;
|
||||
NvlStatus status;
|
||||
INFOROM_NVL_OBJECT_V4S *pNvlObject = &((PINFOROM_NVL_OBJECT)pNvlGeneric)->v4s;
|
||||
INFOROM_NVLINK_ERROR_EVENT *pErrorEvent = (INFOROM_NVLINK_ERROR_EVENT *)pNvlErrorEvent;
|
||||
INFOROM_NVL_OBJECT_V3_ERROR_ENTRY *pErrorEntry;
|
||||
NvU32 i;
|
||||
NvU32 sec;
|
||||
NvU8 header = 0;
|
||||
NvU16 metadata = 0;
|
||||
NvU8 errorSubtype;
|
||||
NvU64 accumTotalCount;
|
||||
INFOROM_NVL_ERROR_BLOCK_TYPE blockType;
|
||||
|
||||
if (pErrorEvent->nvliptInstance > INFOROM_NVL_OBJECT_V3_NVLIPT_INSTANCE_MAX)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"object cannot log data for more than %u NVLIPTs (NVLIPT = %u requested)\n",
|
||||
INFOROM_NVL_OBJECT_V3_NVLIPT_INSTANCE_MAX, pErrorEvent->nvliptInstance);
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
if (pErrorEvent->localLinkIdx > INFOROM_NVL_OBJECT_V3_BLOCK_ID_MAX)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"object cannot log data for more than %u internal links (internal link = %u requested)\n",
|
||||
INFOROM_NVL_OBJECT_V3_BLOCK_ID_MAX, pErrorEvent->localLinkIdx);
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
sec = (NvU32) (nvswitch_os_get_platform_time_epoch() / NVSWITCH_INTERVAL_1SEC_IN_NS);
|
||||
|
||||
status = inforom_nvl_v3_map_error(pErrorEvent->error, &header, &metadata,
|
||||
&errorSubtype, &blockType);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
metadata = FLD_SET_DRF_NUM(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA,
|
||||
_NVLIPT_INSTANCE_ID, pErrorEvent->nvliptInstance, metadata);
|
||||
if (blockType == INFOROM_NVL_ERROR_BLOCK_TYPE_DL)
|
||||
{
|
||||
metadata = FLD_SET_DRF_NUM(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID,
|
||||
NV_INFOROM_NVL_OBJECT_V3_ERROR_METADATA_BLOCK_ID_DL(pErrorEvent->localLinkIdx),
|
||||
metadata);
|
||||
}
|
||||
else if (blockType == INFOROM_NVL_ERROR_BLOCK_TYPE_TLC)
|
||||
{
|
||||
metadata = FLD_SET_DRF_NUM(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA, _BLOCK_ID,
|
||||
NV_INFOROM_NVL_OBJECT_V3_ERROR_METADATA_BLOCK_ID_TLC(pErrorEvent->localLinkIdx),
|
||||
metadata);
|
||||
}
|
||||
else if (blockType == INFOROM_NVL_ERROR_BLOCK_TYPE_NVLIPT)
|
||||
{
|
||||
metadata = FLD_SET_DRF(_INFOROM_NVL_OBJECT_V3, _ERROR_METADATA,
|
||||
_BLOCK_ID, _NVLIPT, metadata);
|
||||
status = inforom_nvl_v3_encode_nvlipt_error_subtype(pErrorEvent->localLinkIdx,
|
||||
&errorSubtype);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < INFOROM_NVL_OBJECT_V4S_NUM_ERROR_ENTRIES; i++)
|
||||
{
|
||||
pErrorEntry = &pNvlObject->errorLog[i];
|
||||
|
||||
if ((pErrorEntry->header == INFOROM_NVL_ERROR_TYPE_INVALID) ||
|
||||
((pErrorEntry->metadata == metadata) &&
|
||||
(pErrorEntry->errorSubtype == errorSubtype)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i >= INFOROM_NVL_OBJECT_V4S_NUM_ERROR_ENTRIES)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: NVL error log is full -- unable to log error\n",
|
||||
__FUNCTION__);
|
||||
return -NVL_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
if (pErrorEntry->header == INFOROM_NVL_ERROR_TYPE_INVALID)
|
||||
{
|
||||
pErrorEntry->header = header;
|
||||
pErrorEntry->metadata = metadata;
|
||||
pErrorEntry->errorSubtype = errorSubtype;
|
||||
}
|
||||
|
||||
if (pErrorEntry->header == INFOROM_NVL_ERROR_TYPE_ACCUM)
|
||||
{
|
||||
accumTotalCount = NvU64_ALIGN32_VAL(&pErrorEntry->data.accum.totalCount);
|
||||
if (accumTotalCount != NV_U64_MAX)
|
||||
{
|
||||
if (pErrorEvent->count > NV_U64_MAX - accumTotalCount)
|
||||
{
|
||||
accumTotalCount = NV_U64_MAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
accumTotalCount += pErrorEvent->count;
|
||||
}
|
||||
|
||||
NvU64_ALIGN32_PACK(&pErrorEntry->data.accum.totalCount, &accumTotalCount);
|
||||
if (sec < pErrorEntry->data.accum.lastUpdated)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: System clock reporting earlier time than error timestamp\n",
|
||||
__FUNCTION__);
|
||||
}
|
||||
pErrorEntry->data.accum.lastUpdated = sec;
|
||||
*bDirty = NV_TRUE;
|
||||
}
|
||||
}
|
||||
else if (pErrorEntry->header == INFOROM_NVL_ERROR_TYPE_COUNT)
|
||||
{
|
||||
if (pErrorEntry->data.event.totalCount != NV_U32_MAX)
|
||||
{
|
||||
pErrorEntry->data.event.totalCount++;
|
||||
if (sec < pErrorEntry->data.event.lastError)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: System clock reporting earlier time than error timestamp\n",
|
||||
__FUNCTION__);
|
||||
}
|
||||
else
|
||||
{
|
||||
pErrorEntry->data.event.avgEventDelta =
|
||||
(pErrorEntry->data.event.avgEventDelta + sec -
|
||||
pErrorEntry->data.event.lastError) >> 1;
|
||||
}
|
||||
pErrorEntry->data.event.lastError = sec;
|
||||
*bDirty = NV_TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return -NVL_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
nvswitch_inforom_nvl_get_max_correctable_error_rate_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NVSWITCH_GET_NVLINK_MAX_CORRECTABLE_ERROR_RATES_PARAMS *params
|
||||
)
|
||||
{
|
||||
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
INFOROM_NVLINK_STATE *pNvlinkState;
|
||||
NvU8 linkID = params->linkId;
|
||||
|
||||
if (linkID >= NVSWITCH_NUM_LINKS_LS10)
|
||||
{
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
if (pInforom == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
pNvlinkState = pInforom->pNvlinkState;
|
||||
if (pNvlinkState == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
nvswitch_os_memset(params, 0, sizeof(NVSWITCH_GET_NVLINK_MAX_CORRECTABLE_ERROR_RATES_PARAMS));
|
||||
params->linkId = linkID;
|
||||
|
||||
nvswitch_os_memcpy(¶ms->dailyMaxCorrectableErrorRates, &pNvlinkState->pNvl->v4s.maxCorrectableErrorRates.dailyMaxCorrectableErrorRates[0][linkID],
|
||||
sizeof(params->dailyMaxCorrectableErrorRates));
|
||||
|
||||
nvswitch_os_memcpy(¶ms->monthlyMaxCorrectableErrorRates, &pNvlinkState->pNvl->v4s.maxCorrectableErrorRates.monthlyMaxCorrectableErrorRates[0][linkID],
|
||||
sizeof(params->monthlyMaxCorrectableErrorRates));
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
nvswitch_inforom_nvl_get_errors_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NVSWITCH_GET_NVLINK_ERROR_COUNTS_PARAMS *params
|
||||
)
|
||||
{
|
||||
struct inforom *pInforom = device->pInforom;
|
||||
INFOROM_NVLINK_STATE *pNvlinkState;
|
||||
NvU32 maxReadSize = sizeof(params->errorLog)/sizeof(NVSWITCH_NVLINK_ERROR_ENTRY);
|
||||
NvU32 errorLeftCount = 0, errorReadCount = 0, errIndx = 0;
|
||||
NvU32 errorStart = params->errorIndex;
|
||||
|
||||
if (pInforom == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
pNvlinkState = pInforom->pNvlinkState;
|
||||
if (pNvlinkState == NULL)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
if (errorStart >= INFOROM_NVL_OBJECT_V4S_NUM_ERROR_ENTRIES)
|
||||
{
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
nvswitch_os_memset(params->errorLog, 0, sizeof(params->errorLog));
|
||||
|
||||
while (((errorStart + errorLeftCount) < INFOROM_NVL_OBJECT_V4S_NUM_ERROR_ENTRIES) &&
|
||||
(pNvlinkState->pNvl->v4s.errorLog[errorStart + errorLeftCount].header != INFOROM_NVL_ERROR_TYPE_INVALID))
|
||||
{
|
||||
errorLeftCount++;
|
||||
}
|
||||
|
||||
if (errorLeftCount > maxReadSize)
|
||||
{
|
||||
errorReadCount = maxReadSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
errorReadCount = errorLeftCount;
|
||||
}
|
||||
|
||||
params->errorIndex = errorStart + errorReadCount;
|
||||
params->errorCount = errorReadCount;
|
||||
|
||||
if (errorReadCount > 0)
|
||||
{
|
||||
for (errIndx = 0; errIndx < errorReadCount; errIndx++)
|
||||
{
|
||||
if (inforom_nvl_v3_map_error_to_userspace_error(device,
|
||||
&pNvlinkState->pNvl->v4s.errorLog[errorStart+errIndx],
|
||||
¶ms->errorLog[errIndx]) != NVL_SUCCESS)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_update_link_correctable_error_info_ls10
|
||||
@ -55,7 +302,258 @@ NvlStatus nvswitch_inforom_nvl_update_link_correctable_error_info_ls10
|
||||
NvBool *bDirty
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_IMPLEMENTED;
|
||||
INFOROM_NVL_OBJECT_V4S *pNvlObject = &((PINFOROM_NVL_OBJECT)pNvlGeneric)->v4s;
|
||||
INFOROM_NVL_CORRECTABLE_ERROR_RATE_STATE_V4S *pState =
|
||||
&((INFOROM_NVL_CORRECTABLE_ERROR_RATE_STATE *)pData)->v4s;
|
||||
INFOROM_NVLINK_CORRECTABLE_ERROR_COUNTS *pErrorCounts =
|
||||
(INFOROM_NVLINK_CORRECTABLE_ERROR_COUNTS *)pNvlErrorCounts;
|
||||
|
||||
NvU32 i;
|
||||
NvU32 sec;
|
||||
NvU32 day, month, currentEntryDay, currentEntryMonth;
|
||||
INFOROM_NVL_OBJECT_V3_CORRECTABLE_ERROR_RATE *pErrorRate;
|
||||
INFOROM_NVL_OBJECT_V3_CORRECTABLE_ERROR_RATE *pOldestErrorRate = NULL;
|
||||
INFOROM_NVL_OBJECT_V4S_MAX_CORRECTABLE_ERROR_RATES *pCorrErrorRates;
|
||||
NvBool bUpdated = NV_FALSE;
|
||||
INFOROM_NVLINK_ERROR_EVENT errorEvent;
|
||||
NvU32 currentFlitCrcRate;
|
||||
NvU32 *pCurrentLaneCrcRates;
|
||||
|
||||
if (bDirty == NULL)
|
||||
{
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
*bDirty = NV_FALSE;
|
||||
|
||||
if (linkId >= INFOROM_NVL_OBJECT_V4S_NUM_LINKS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"object does not store data for more than %u links (linkId = %u requested)\n",
|
||||
INFOROM_NVL_OBJECT_V4S_NUM_LINKS, linkId);
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
if (nvliptInstance > INFOROM_NVL_OBJECT_V3_NVLIPT_INSTANCE_MAX)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"object cannot log data for more than %u NVLIPTs (NVLIPT = %u requested)\n",
|
||||
INFOROM_NVL_OBJECT_V3_NVLIPT_INSTANCE_MAX, nvliptInstance);
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
if (localLinkIdx > INFOROM_NVL_OBJECT_V3_BLOCK_ID_MAX)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"object cannot log data for more than %u internal links (internal link = %u requested)\n",
|
||||
INFOROM_NVL_OBJECT_V3_BLOCK_ID_MAX, localLinkIdx);
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
sec = (NvU32) (nvswitch_os_get_platform_time_epoch() / NVSWITCH_INTERVAL_1SEC_IN_NS);
|
||||
inforom_nvl_v3_seconds_to_day_and_month(sec, &day, &month);
|
||||
|
||||
inforom_nvl_v4_update_correctable_error_rates(pState, linkId, pErrorCounts);
|
||||
currentFlitCrcRate = pState->errorsPerMinute[linkId].flitCrc;
|
||||
pCurrentLaneCrcRates = pState->errorsPerMinute[linkId].laneCrc;
|
||||
pCorrErrorRates = &pNvlObject->maxCorrectableErrorRates;
|
||||
|
||||
for (i = 0; i < NV_ARRAY_ELEMENTS(pCorrErrorRates->dailyMaxCorrectableErrorRates); i++)
|
||||
{
|
||||
pErrorRate = &pCorrErrorRates->dailyMaxCorrectableErrorRates[i][linkId];
|
||||
inforom_nvl_v3_seconds_to_day_and_month(pErrorRate->lastUpdated, ¤tEntryDay,
|
||||
¤tEntryMonth);
|
||||
|
||||
if ((pErrorRate->lastUpdated == 0) || (currentEntryDay == day))
|
||||
{
|
||||
if (inforom_nvl_v3_should_replace_error_rate_entry(pErrorRate,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates))
|
||||
{
|
||||
inforom_nvl_v3_update_error_rate_entry(pErrorRate, sec,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates);
|
||||
bUpdated = NV_TRUE;
|
||||
}
|
||||
pOldestErrorRate = NULL;
|
||||
break;
|
||||
}
|
||||
else if ((pOldestErrorRate == NULL) ||
|
||||
(pErrorRate->lastUpdated < pOldestErrorRate->lastUpdated))
|
||||
{
|
||||
pOldestErrorRate = pErrorRate;
|
||||
}
|
||||
}
|
||||
|
||||
if (pOldestErrorRate != NULL)
|
||||
{
|
||||
inforom_nvl_v3_update_error_rate_entry(pOldestErrorRate, sec,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates);
|
||||
bUpdated = NV_TRUE;
|
||||
}
|
||||
|
||||
for (i = 0; i < NV_ARRAY_ELEMENTS(pCorrErrorRates->monthlyMaxCorrectableErrorRates); i++)
|
||||
{
|
||||
pErrorRate = &pCorrErrorRates->monthlyMaxCorrectableErrorRates[i][linkId];
|
||||
inforom_nvl_v3_seconds_to_day_and_month(pErrorRate->lastUpdated, ¤tEntryDay,
|
||||
¤tEntryMonth);
|
||||
|
||||
if ((pErrorRate->lastUpdated == 0) || (currentEntryMonth == month))
|
||||
{
|
||||
if (inforom_nvl_v3_should_replace_error_rate_entry(pErrorRate,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates))
|
||||
{
|
||||
inforom_nvl_v3_update_error_rate_entry(pErrorRate, sec,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates);
|
||||
bUpdated = NV_TRUE;
|
||||
}
|
||||
pOldestErrorRate = NULL;
|
||||
break;
|
||||
}
|
||||
else if ((pOldestErrorRate == NULL) ||
|
||||
(pErrorRate->lastUpdated < pOldestErrorRate->lastUpdated))
|
||||
{
|
||||
pOldestErrorRate = pErrorRate;
|
||||
}
|
||||
}
|
||||
|
||||
if (pOldestErrorRate != NULL)
|
||||
{
|
||||
inforom_nvl_v3_update_error_rate_entry(pOldestErrorRate, sec,
|
||||
currentFlitCrcRate,
|
||||
pCurrentLaneCrcRates);
|
||||
bUpdated = NV_TRUE;
|
||||
}
|
||||
|
||||
*bDirty = bUpdated;
|
||||
|
||||
// Update aggregate error counts for each correctable error
|
||||
|
||||
errorEvent.nvliptInstance = nvliptInstance;
|
||||
errorEvent.localLinkIdx = localLinkIdx;
|
||||
|
||||
if (pErrorCounts->flitCrc > 0)
|
||||
{
|
||||
errorEvent.error = INFOROM_NVLINK_DL_RX_FLIT_CRC_CORR;
|
||||
errorEvent.count = pErrorCounts->flitCrc;
|
||||
nvswitch_inforom_nvl_log_error_event_ls10(device,
|
||||
pNvlGeneric, &errorEvent, &bUpdated);
|
||||
*bDirty |= bUpdated;
|
||||
}
|
||||
|
||||
if (pErrorCounts->rxLinkReplay > 0)
|
||||
{
|
||||
errorEvent.error = INFOROM_NVLINK_DL_RX_LINK_REPLAY_EVENTS_CORR;
|
||||
errorEvent.count = pErrorCounts->rxLinkReplay;
|
||||
bUpdated = NV_FALSE;
|
||||
nvswitch_inforom_nvl_log_error_event_ls10(device,
|
||||
pNvlGeneric, &errorEvent, &bUpdated);
|
||||
*bDirty |= bUpdated;
|
||||
}
|
||||
|
||||
if (pErrorCounts->txLinkReplay > 0)
|
||||
{
|
||||
errorEvent.error = INFOROM_NVLINK_DL_TX_LINK_REPLAY_EVENTS_CORR;
|
||||
errorEvent.count = pErrorCounts->txLinkReplay;
|
||||
bUpdated = NV_FALSE;
|
||||
nvswitch_inforom_nvl_log_error_event_ls10(device,
|
||||
pNvlGeneric, &errorEvent, &bUpdated);
|
||||
*bDirty |= bUpdated;
|
||||
}
|
||||
|
||||
if (pErrorCounts->linkRecovery > 0)
|
||||
{
|
||||
errorEvent.error = INFOROM_NVLINK_DL_LINK_RECOVERY_EVENTS_CORR;
|
||||
errorEvent.count = pErrorCounts->linkRecovery;
|
||||
bUpdated = NV_FALSE;
|
||||
nvswitch_inforom_nvl_log_error_event_ls10(device,
|
||||
pNvlGeneric, &errorEvent, &bUpdated);
|
||||
*bDirty |= bUpdated;
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (pErrorCounts->laneCrc[i] == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
errorEvent.error = INFOROM_NVLINK_DL_RX_LANE0_CRC_CORR + i;
|
||||
errorEvent.count = pErrorCounts->laneCrc[i];
|
||||
bUpdated = NV_FALSE;
|
||||
nvswitch_inforom_nvl_log_error_event_ls10(device,
|
||||
pNvlGeneric, &errorEvent, &bUpdated);
|
||||
*bDirty |= bUpdated;
|
||||
}
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_setL1Threshold_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
void *pNvlGeneric,
|
||||
NvU32 word1,
|
||||
NvU32 word2
|
||||
)
|
||||
{
|
||||
INFOROM_NVL_OBJECT_V4S *pNvlObject = &((PINFOROM_NVL_OBJECT)pNvlGeneric)->v4s;
|
||||
|
||||
pNvlObject->l1ThresholdData.word1 = word1;
|
||||
pNvlObject->l1ThresholdData.word2 = word2;
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_getL1Threshold_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
void *pNvlGeneric,
|
||||
NvU32 *word1,
|
||||
NvU32 *word2
|
||||
)
|
||||
{
|
||||
INFOROM_NVL_OBJECT_V4S *pNvlObject = &((PINFOROM_NVL_OBJECT)pNvlGeneric)->v4s;
|
||||
|
||||
*word1 = pNvlObject->l1ThresholdData.word1;
|
||||
*word2 = pNvlObject->l1ThresholdData.word2;
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus nvswitch_inforom_nvl_setup_nvlink_state_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
INFOROM_NVLINK_STATE *pNvlinkState,
|
||||
NvU8 version
|
||||
)
|
||||
{
|
||||
if (version != 4)
|
||||
{
|
||||
NVSWITCH_PRINT(device, WARN, "NVL v%u not supported\n", version);
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
pNvlinkState->pFmt = INFOROM_NVL_OBJECT_V4S_FMT;
|
||||
pNvlinkState->pPackedObject = nvswitch_os_malloc(INFOROM_NVL_OBJECT_V4S_PACKED_SIZE);
|
||||
if (pNvlinkState->pPackedObject == NULL)
|
||||
{
|
||||
return -NVL_NO_MEM;
|
||||
}
|
||||
|
||||
pNvlinkState->pNvl = nvswitch_os_malloc(sizeof(INFOROM_NVL_OBJECT));
|
||||
if (pNvlinkState->pNvl == NULL)
|
||||
{
|
||||
nvswitch_os_free(pNvlinkState->pPackedObject);
|
||||
return -NVL_NO_MEM;
|
||||
}
|
||||
|
||||
pNvlinkState->bDisableCorrectableErrorLogging = NV_FALSE;
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
@ -271,5 +769,268 @@ nvswitch_bbx_get_sxid_ls10
|
||||
NVSWITCH_GET_SXIDS_PARAMS *params
|
||||
)
|
||||
{
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
NvlStatus status;
|
||||
void *pDmaBuf;
|
||||
NvU64 dmaHandle;
|
||||
FLCN *pFlcn;
|
||||
RM_FLCN_CMD_SOE bbxCmd;
|
||||
NvU32 cmdSeqDesc;
|
||||
NVSWITCH_TIMEOUT timeout;
|
||||
NvU32 transferSize;
|
||||
RM_SOE_BBX_GET_SXID_DATA bbxSxidData;
|
||||
NvU32 sxidIdx;
|
||||
|
||||
if (!nvswitch_is_inforom_supported_ls10(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO, "%s: InfoROM is not supported\n", __FUNCTION__);
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
if (params == NULL)
|
||||
{
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
transferSize = sizeof(bbxSxidData);
|
||||
status = nvswitch_os_alloc_contig_memory(device->os_handle, &pDmaBuf, transferSize,
|
||||
(device->dma_addr_width == 32));
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Failed to allocate contig memory. rc:%d\n", __FUNCTION__, status);
|
||||
return status;
|
||||
}
|
||||
|
||||
status = nvswitch_os_map_dma_region(device->os_handle, pDmaBuf, &dmaHandle,
|
||||
transferSize, NVSWITCH_DMA_DIR_TO_SYSMEM);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Failed to map DMA region. rc:%d\n", __FUNCTION__, status);
|
||||
goto nvswitch_bbx_get_sxid_ls10_free_and_exit;
|
||||
}
|
||||
|
||||
nvswitch_os_memset(pDmaBuf, 0, transferSize);
|
||||
|
||||
pFlcn = device->pSoe->pFlcn;
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_5MSEC_IN_NS, &timeout);
|
||||
|
||||
nvswitch_os_memset(&bbxCmd, 0, sizeof(bbxCmd));
|
||||
bbxCmd.hdr.unitId = RM_SOE_UNIT_IFR;
|
||||
bbxCmd.hdr.size = sizeof(bbxCmd);
|
||||
bbxCmd.cmd.ifr.cmdType = RM_SOE_IFR_BBX_SXID_GET;
|
||||
bbxCmd.cmd.ifr.bbxSxidGet.sizeInBytes = transferSize;
|
||||
RM_FLCN_U64_PACK(&bbxCmd.cmd.ifr.bbxSxidGet.dmaHandle, &dmaHandle);
|
||||
|
||||
status = flcnQueueCmdPostBlocking(device, pFlcn,
|
||||
(PRM_FLCN_CMD)&bbxCmd,
|
||||
NULL, // pMsg
|
||||
NULL, // pPayload
|
||||
SOE_RM_CMDQ_LOG_ID,
|
||||
&cmdSeqDesc,
|
||||
&timeout);
|
||||
if (status != NV_OK)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: BBX cmd %d failed. rc:%d\n",
|
||||
__FUNCTION__, bbxCmd.cmd.ifr.cmdType, status);
|
||||
goto nvswitch_bbx_get_sxid_ls10_unmap_and_exit;
|
||||
}
|
||||
|
||||
status = nvswitch_os_sync_dma_region_for_cpu(device->os_handle, dmaHandle,
|
||||
transferSize,
|
||||
NVSWITCH_DMA_DIR_TO_SYSMEM);
|
||||
if (status != NV_OK)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Failed to sync DMA region. rc:%d\n", __FUNCTION__, status);
|
||||
goto nvswitch_bbx_get_sxid_ls10_unmap_and_exit;
|
||||
}
|
||||
|
||||
nvswitch_os_memcpy((NvU8 *)&bbxSxidData, (NvU8 *)pDmaBuf, sizeof(bbxSxidData));
|
||||
|
||||
// Copy out SXIDs
|
||||
params->sxidCount = bbxSxidData.sxidCount;
|
||||
for (sxidIdx = 0; sxidIdx < INFOROM_BBX_OBJ_XID_ENTRIES; sxidIdx++)
|
||||
{
|
||||
params->sxidFirst[sxidIdx].sxid = bbxSxidData.sxidFirst[sxidIdx].sxid;
|
||||
params->sxidFirst[sxidIdx].timestamp = bbxSxidData.sxidFirst[sxidIdx].timestamp;
|
||||
params->sxidLast[sxidIdx].sxid = bbxSxidData.sxidLast[sxidIdx].sxid;
|
||||
params->sxidLast[sxidIdx].timestamp = bbxSxidData.sxidLast[sxidIdx].timestamp;
|
||||
}
|
||||
|
||||
nvswitch_bbx_get_sxid_ls10_unmap_and_exit:
|
||||
nvswitch_os_unmap_dma_region(device->os_handle, pDmaBuf, dmaHandle,
|
||||
transferSize, NVSWITCH_DMA_DIR_FROM_SYSMEM);
|
||||
nvswitch_bbx_get_sxid_ls10_free_and_exit:
|
||||
nvswitch_os_free_contig_memory(device->os_handle, pDmaBuf, transferSize);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
NvlStatus
|
||||
nvswitch_bbx_get_data_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU8 dataType,
|
||||
void *params
|
||||
)
|
||||
{
|
||||
NvlStatus status;
|
||||
void *pDmaBuf;
|
||||
NvU64 dmaHandle;
|
||||
FLCN *pFlcn;
|
||||
RM_FLCN_CMD_SOE bbxCmd;
|
||||
NvU32 cmdSeqDesc;
|
||||
NVSWITCH_TIMEOUT timeout;
|
||||
NvU32 transferSize;
|
||||
|
||||
if (!nvswitch_is_inforom_supported_ls10(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: InfoROM is not supported\n", __FUNCTION__);
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
if (params == NULL)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: params is NULL\n", __FUNCTION__);
|
||||
return -NVL_BAD_ARGS;
|
||||
}
|
||||
|
||||
switch (dataType)
|
||||
{
|
||||
case RM_SOE_IFR_BBX_GET_SYS_INFO:
|
||||
transferSize = sizeof(NVSWITCH_GET_SYS_INFO_PARAMS);
|
||||
break;
|
||||
|
||||
case RM_SOE_IFR_BBX_GET_TIME_INFO:
|
||||
transferSize = sizeof(NVSWITCH_GET_TIME_INFO_PARAMS);
|
||||
break;
|
||||
|
||||
case RM_SOE_IFR_BBX_GET_TEMP_DATA:
|
||||
transferSize = sizeof(NVSWITCH_GET_TEMP_DATA_PARAMS);
|
||||
break;
|
||||
|
||||
case RM_SOE_IFR_BBX_GET_TEMP_SAMPLES:
|
||||
transferSize = sizeof(NVSWITCH_GET_TEMP_SAMPLES_PARAMS);
|
||||
break;
|
||||
default:
|
||||
NVSWITCH_PRINT(device, ERROR, "Unknown dataType %d", dataType);
|
||||
return -NVL_BAD_ARGS;
|
||||
break;
|
||||
}
|
||||
|
||||
status = nvswitch_os_alloc_contig_memory(device->os_handle, &pDmaBuf, transferSize,
|
||||
(device->dma_addr_width == 32));
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Failed to allocate contig memory. rc:%d\n", __FUNCTION__, status);
|
||||
return status;
|
||||
}
|
||||
|
||||
status = nvswitch_os_map_dma_region(device->os_handle, pDmaBuf, &dmaHandle,
|
||||
transferSize, NVSWITCH_DMA_DIR_TO_SYSMEM);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Failed to map DMA region. rc:%d\n", __FUNCTION__, status);
|
||||
goto nvswitch_bbx_get_data_ls10_free_and_exit;
|
||||
}
|
||||
|
||||
nvswitch_os_memset(pDmaBuf, 0, transferSize);
|
||||
|
||||
pFlcn = device->pSoe->pFlcn;
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_5MSEC_IN_NS, &timeout);
|
||||
|
||||
nvswitch_os_memset(&bbxCmd, 0, sizeof(bbxCmd));
|
||||
bbxCmd.hdr.unitId = RM_SOE_UNIT_IFR;
|
||||
bbxCmd.hdr.size = sizeof(bbxCmd);
|
||||
bbxCmd.cmd.ifr.cmdType = RM_SOE_IFR_BBX_DATA_GET;
|
||||
bbxCmd.cmd.ifr.bbxDataGet.sizeInBytes = transferSize;
|
||||
bbxCmd.cmd.ifr.bbxDataGet.dataType = dataType;
|
||||
RM_FLCN_U64_PACK(&bbxCmd.cmd.ifr.bbxDataGet.dmaHandle, &dmaHandle);
|
||||
|
||||
status = flcnQueueCmdPostBlocking(device, pFlcn,
|
||||
(PRM_FLCN_CMD)&bbxCmd,
|
||||
NULL, // pMsg
|
||||
NULL, // pPayload
|
||||
SOE_RM_CMDQ_LOG_ID,
|
||||
&cmdSeqDesc,
|
||||
&timeout);
|
||||
if (status != NV_OK)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: BX_GET_DATA type=%d failed. rc:%d\n",
|
||||
__FUNCTION__, dataType, status);
|
||||
goto nvswitch_bbx_get_data_ls10_unmap_and_exit;
|
||||
}
|
||||
|
||||
status = nvswitch_os_sync_dma_region_for_cpu(device->os_handle, dmaHandle,
|
||||
transferSize,
|
||||
NVSWITCH_DMA_DIR_TO_SYSMEM);
|
||||
if (status != NV_OK)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Failed to sync DMA region. rc:%d\n", __FUNCTION__, status);
|
||||
goto nvswitch_bbx_get_data_ls10_unmap_and_exit;
|
||||
}
|
||||
|
||||
if (dataType == RM_SOE_IFR_BBX_GET_SYS_INFO)
|
||||
{
|
||||
NVSWITCH_GET_SYS_INFO_PARAMS bbxSysInfoData = {0};
|
||||
|
||||
nvswitch_os_memcpy((NvU8 *)&bbxSysInfoData, (NvU8 *)pDmaBuf, sizeof(NVSWITCH_GET_SYS_INFO_PARAMS));
|
||||
nvswitch_os_memcpy((NvU8 *)params, (NvU8 *)&bbxSysInfoData, sizeof(NVSWITCH_GET_SYS_INFO_PARAMS));
|
||||
}
|
||||
else if (dataType == RM_SOE_IFR_BBX_GET_TIME_INFO)
|
||||
{
|
||||
NVSWITCH_GET_TIME_INFO_PARAMS bbxTimeInfoData = {0};
|
||||
|
||||
nvswitch_os_memcpy((NvU8 *)&bbxTimeInfoData, (NvU8 *)pDmaBuf, sizeof(NVSWITCH_GET_TIME_INFO_PARAMS));
|
||||
nvswitch_os_memcpy((NvU8 *)params, (NvU8 *)&bbxTimeInfoData, sizeof(NVSWITCH_GET_TIME_INFO_PARAMS));
|
||||
}
|
||||
else if (dataType == RM_SOE_IFR_BBX_GET_TEMP_DATA)
|
||||
{
|
||||
NVSWITCH_GET_TEMP_DATA_PARAMS *pBbxTempData = NULL;
|
||||
|
||||
pBbxTempData = nvswitch_os_malloc(sizeof(NVSWITCH_GET_TEMP_DATA_PARAMS));
|
||||
if (pBbxTempData == NULL)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "Out of memory: dataType %d", dataType);
|
||||
status = -NVL_NO_MEM;
|
||||
goto nvswitch_bbx_get_data_ls10_unmap_and_exit;
|
||||
}
|
||||
|
||||
nvswitch_os_memset(pBbxTempData, 0, sizeof(NVSWITCH_GET_TEMP_DATA_PARAMS));
|
||||
|
||||
nvswitch_os_memcpy((NvU8 *)pBbxTempData, (NvU8 *)pDmaBuf, sizeof(NVSWITCH_GET_TEMP_DATA_PARAMS));
|
||||
nvswitch_os_memcpy((NvU8 *)params, (NvU8 *)pBbxTempData, sizeof(NVSWITCH_GET_TEMP_DATA_PARAMS));
|
||||
|
||||
nvswitch_os_free(pBbxTempData);
|
||||
}
|
||||
else if (dataType == RM_SOE_IFR_BBX_GET_TEMP_SAMPLES)
|
||||
{
|
||||
NVSWITCH_GET_TEMP_SAMPLES_PARAMS *pBbxTempSamples = NULL;
|
||||
|
||||
pBbxTempSamples = nvswitch_os_malloc(sizeof(NVSWITCH_GET_TEMP_SAMPLES_PARAMS));
|
||||
if (pBbxTempSamples == NULL)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "Out of memory: dataType %d", dataType);
|
||||
status = -NVL_NO_MEM;
|
||||
goto nvswitch_bbx_get_data_ls10_unmap_and_exit;
|
||||
}
|
||||
|
||||
nvswitch_os_memset(pBbxTempSamples, 0, sizeof(NVSWITCH_GET_TEMP_SAMPLES_PARAMS));
|
||||
|
||||
nvswitch_os_memcpy((NvU8 *)pBbxTempSamples, (NvU8 *)pDmaBuf, sizeof(NVSWITCH_GET_TEMP_SAMPLES_PARAMS));
|
||||
nvswitch_os_memcpy((NvU8 *)params, (NvU8 *)pBbxTempSamples, sizeof(NVSWITCH_GET_TEMP_SAMPLES_PARAMS));
|
||||
|
||||
nvswitch_os_free(pBbxTempSamples);
|
||||
}
|
||||
else
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "Unknown dataType %d", dataType);
|
||||
goto nvswitch_bbx_get_data_ls10_unmap_and_exit;
|
||||
}
|
||||
|
||||
nvswitch_bbx_get_data_ls10_unmap_and_exit:
|
||||
nvswitch_os_unmap_dma_region(device->os_handle, pDmaBuf, dmaHandle,
|
||||
transferSize, NVSWITCH_DMA_DIR_FROM_SYSMEM);
|
||||
nvswitch_bbx_get_data_ls10_free_and_exit:
|
||||
nvswitch_os_free_contig_memory(device->os_handle, pDmaBuf, transferSize);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user