From 01e6fac4d61fdd7fff5433942ec93fc2ea1e4df1 Mon Sep 17 00:00:00 2001 From: Joshua Bakita Date: Wed, 28 Jun 2023 18:24:25 -0400 Subject: Include nvgpu headers These are needed to build on NVIDIA's Jetson boards for the time being. Only a couple structs are required, so it should be fairly easy to remove this dependency at some point in the future. --- include/os/linux/ltc.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 include/os/linux/ltc.c (limited to 'include/os/linux/ltc.c') diff --git a/include/os/linux/ltc.c b/include/os/linux/ltc.c new file mode 100644 index 0000000..baeb20b --- /dev/null +++ b/include/os/linux/ltc.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. + * + * 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 +#include +#include +#include + +#include "gk20a/gr_gk20a.h" + +int nvgpu_ltc_alloc_cbc(struct gk20a *g, size_t compbit_backing_size, + bool vidmem_alloc) +{ + struct gr_gk20a *gr = &g->gr; + unsigned long flags = 0; + + if (nvgpu_mem_is_valid(&gr->compbit_store.mem)) + return 0; + + if (vidmem_alloc) { + /* + * Backing store MUST be physically contiguous and allocated in + * one chunk + * Vidmem allocation API does not support FORCE_CONTIGUOUS like + * flag to allocate contiguous memory + * But this allocation will happen in vidmem bootstrap allocator + * which always allocates contiguous memory + */ + return nvgpu_dma_alloc_vid(g, + compbit_backing_size, + &gr->compbit_store.mem); + } else { + if (!nvgpu_iommuable(g)) + flags = NVGPU_DMA_FORCE_CONTIGUOUS; + + return nvgpu_dma_alloc_flags_sys(g, + flags, + compbit_backing_size, + &gr->compbit_store.mem); + } +} -- cgit v1.2.2