diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/enabled.h | 9 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/os/linux/driver_common.c | 11 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/os/linux/vm.c | 8 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gp10b/vgpu_mm_gp10b.c | 8 |
4 files changed, 27 insertions, 9 deletions
diff --git a/drivers/gpu/nvgpu/include/nvgpu/enabled.h b/drivers/gpu/nvgpu/include/nvgpu/enabled.h index ef55dad8..51e93586 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/enabled.h +++ b/drivers/gpu/nvgpu/include/nvgpu/enabled.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2017-2020, NVIDIA CORPORATION. All rights reserved. | 2 | * Copyright (c) 2017-2022, NVIDIA CORPORATION. All rights reserved. |
3 | * | 3 | * |
4 | * Permission is hereby granted, free of charge, to any person obtaining a | 4 | * Permission is hereby granted, free of charge, to any person obtaining a |
5 | * copy of this software and associated documentation files (the "Software"), | 5 | * copy of this software and associated documentation files (the "Software"), |
@@ -85,7 +85,12 @@ struct gk20a; | |||
85 | #define NVGPU_MM_USE_PHYSICAL_SG 27 | 85 | #define NVGPU_MM_USE_PHYSICAL_SG 27 |
86 | /* WAR for gm20b chips. */ | 86 | /* WAR for gm20b chips. */ |
87 | #define NVGPU_MM_FORCE_128K_PMU_VM 28 | 87 | #define NVGPU_MM_FORCE_128K_PMU_VM 28 |
88 | 88 | /* SW ERRATA to disable L3 alloc Bit of the physical address. | |
89 | * Bit number varies between SOCs. | ||
90 | * E.g. 64GB physical RAM support for gv11b requires this SW errata | ||
91 | * to be enabled. | ||
92 | */ | ||
93 | #define NVGPU_DISABLE_L3_SUPPORT 29 | ||
89 | /* | 94 | /* |
90 | * Host flags | 95 | * Host flags |
91 | */ | 96 | */ |
diff --git a/drivers/gpu/nvgpu/os/linux/driver_common.c b/drivers/gpu/nvgpu/os/linux/driver_common.c index 602d325d..8f5872dc 100644 --- a/drivers/gpu/nvgpu/os/linux/driver_common.c +++ b/drivers/gpu/nvgpu/os/linux/driver_common.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2016-2021, NVIDIA CORPORATION. All rights reserved. | 2 | * Copyright (c) 2016-2022, NVIDIA CORPORATION. All rights reserved. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or modify it | 4 | * This program is free software; you can redistribute it and/or modify it |
5 | * under the terms and conditions of the GNU General Public License, | 5 | * under the terms and conditions of the GNU General Public License, |
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/dma-mapping.h> | 18 | #include <linux/dma-mapping.h> |
19 | #include <linux/mm.h> | 19 | #include <linux/mm.h> |
20 | #include <linux/slab.h> | 20 | #include <linux/slab.h> |
21 | #include <linux/of_platform.h> | ||
21 | #include <uapi/linux/nvgpu.h> | 22 | #include <uapi/linux/nvgpu.h> |
22 | 23 | ||
23 | #include <nvgpu/defaults.h> | 24 | #include <nvgpu/defaults.h> |
@@ -241,6 +242,8 @@ int nvgpu_probe(struct gk20a *g, | |||
241 | struct device *dev = dev_from_gk20a(g); | 242 | struct device *dev = dev_from_gk20a(g); |
242 | struct gk20a_platform *platform = dev_get_drvdata(dev); | 243 | struct gk20a_platform *platform = dev_get_drvdata(dev); |
243 | int err = 0; | 244 | int err = 0; |
245 | struct device_node *np = dev->of_node; | ||
246 | bool disable_l3_alloc = false; | ||
244 | 247 | ||
245 | nvgpu_init_vars(g); | 248 | nvgpu_init_vars(g); |
246 | nvgpu_init_gr_vars(g); | 249 | nvgpu_init_gr_vars(g); |
@@ -265,6 +268,12 @@ int nvgpu_probe(struct gk20a *g, | |||
265 | return err; | 268 | return err; |
266 | } | 269 | } |
267 | 270 | ||
271 | disable_l3_alloc = of_property_read_bool(np, "disable_l3_alloc"); | ||
272 | if (disable_l3_alloc) { | ||
273 | nvgpu_log_info(g, "L3 alloc is disabled\n"); | ||
274 | __nvgpu_set_enabled(g, NVGPU_DISABLE_L3_SUPPORT, true); | ||
275 | } | ||
276 | |||
268 | nvgpu_init_mm_vars(g); | 277 | nvgpu_init_mm_vars(g); |
269 | 278 | ||
270 | /* platform probe can defer do user init only if probe succeeds */ | 279 | /* platform probe can defer do user init only if probe succeeds */ |
diff --git a/drivers/gpu/nvgpu/os/linux/vm.c b/drivers/gpu/nvgpu/os/linux/vm.c index dc807ab6..8956cce5 100644 --- a/drivers/gpu/nvgpu/os/linux/vm.c +++ b/drivers/gpu/nvgpu/os/linux/vm.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2017-2020, NVIDIA CORPORATION. All rights reserved. | 2 | * Copyright (c) 2017-2022, NVIDIA CORPORATION. All rights reserved. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or modify it | 4 | * This program is free software; you can redistribute it and/or modify it |
5 | * under the terms and conditions of the GNU General Public License, | 5 | * under the terms and conditions of the GNU General Public License, |
@@ -50,8 +50,10 @@ static u32 nvgpu_vm_translate_linux_flags(struct gk20a *g, u32 flags) | |||
50 | core_flags |= NVGPU_VM_MAP_IO_COHERENT; | 50 | core_flags |= NVGPU_VM_MAP_IO_COHERENT; |
51 | if (flags & NVGPU_AS_MAP_BUFFER_FLAGS_UNMAPPED_PTE) | 51 | if (flags & NVGPU_AS_MAP_BUFFER_FLAGS_UNMAPPED_PTE) |
52 | core_flags |= NVGPU_VM_MAP_UNMAPPED_PTE; | 52 | core_flags |= NVGPU_VM_MAP_UNMAPPED_PTE; |
53 | if (flags & NVGPU_AS_MAP_BUFFER_FLAGS_L3_ALLOC) | 53 | if (!nvgpu_is_enabled(g, NVGPU_DISABLE_L3_SUPPORT)) { |
54 | core_flags |= NVGPU_VM_MAP_L3_ALLOC; | 54 | if (flags & NVGPU_AS_MAP_BUFFER_FLAGS_L3_ALLOC) |
55 | core_flags |= NVGPU_VM_MAP_L3_ALLOC; | ||
56 | } | ||
55 | if (flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL) | 57 | if (flags & NVGPU_AS_MAP_BUFFER_FLAGS_DIRECT_KIND_CTRL) |
56 | core_flags |= NVGPU_VM_MAP_DIRECT_KIND_CTRL; | 58 | core_flags |= NVGPU_VM_MAP_DIRECT_KIND_CTRL; |
57 | if (flags & NVGPU_AS_MAP_BUFFER_FLAGS_PLATFORM_ATOMIC) | 59 | if (flags & NVGPU_AS_MAP_BUFFER_FLAGS_PLATFORM_ATOMIC) |
diff --git a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_mm_gp10b.c b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_mm_gp10b.c index 926f243d..fe28bf21 100644 --- a/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_mm_gp10b.c +++ b/drivers/gpu/nvgpu/vgpu/gp10b/vgpu_mm_gp10b.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Virtualized GPU Memory Management | 2 | * Virtualized GPU Memory Management |
3 | * | 3 | * |
4 | * Copyright (c) 2015-2021, NVIDIA CORPORATION. All rights reserved. | 4 | * Copyright (c) 2015-2022, NVIDIA CORPORATION. All rights reserved. |
5 | * | 5 | * |
6 | * Permission is hereby granted, free of charge, to any person obtaining a | 6 | * Permission is hereby granted, free of charge, to any person obtaining a |
7 | * copy of this software and associated documentation files (the "Software"), | 7 | * copy of this software and associated documentation files (the "Software"), |
@@ -178,8 +178,10 @@ u64 vgpu_gp10b_locked_gmmu_map(struct vm_gk20a *vm, | |||
178 | p->flags = TEGRA_VGPU_MAP_CACHEABLE; | 178 | p->flags = TEGRA_VGPU_MAP_CACHEABLE; |
179 | if (flags & NVGPU_VM_MAP_IO_COHERENT) | 179 | if (flags & NVGPU_VM_MAP_IO_COHERENT) |
180 | p->flags |= TEGRA_VGPU_MAP_IO_COHERENT; | 180 | p->flags |= TEGRA_VGPU_MAP_IO_COHERENT; |
181 | if (flags & NVGPU_VM_MAP_L3_ALLOC) | 181 | if (!nvgpu_is_enabled(g, NVGPU_DISABLE_L3_SUPPORT)) { |
182 | p->flags |= TEGRA_VGPU_MAP_L3_ALLOC; | 182 | if (flags & NVGPU_VM_MAP_L3_ALLOC) |
183 | p->flags |= TEGRA_VGPU_MAP_L3_ALLOC; | ||
184 | } | ||
183 | if (flags & NVGPU_VM_MAP_PLATFORM_ATOMIC) { | 185 | if (flags & NVGPU_VM_MAP_PLATFORM_ATOMIC) { |
184 | p->flags |= TEGRA_VGPU_MAP_PLATFORM_ATOMIC; | 186 | p->flags |= TEGRA_VGPU_MAP_PLATFORM_ATOMIC; |
185 | } | 187 | } |