#
1cb9e2ef |
|
22-Jun-2023 |
Karol Herbst <kherbst@redhat.com> |
drm/nouveau/gr: enable memory loads on helper invocation on all channels We have a lurking bug where Fragment Shader Helper Invocations can't load from memory. But this is actually required in OpenGL and is causing random hangs or failures in random shaders. It is unknown how widespread this issue is, but shaders hitting this can end up with infinite loops. We enable those only on all Kepler and newer GPUs where we use our own Firmware. Nvidia's firmware provides a way to set a kernelspace controlled list of mmio registers in the gr space from push buffers via MME macros. v2: drop code for gm200 and newer. Cc: Ben Skeggs <bskeggs@redhat.com> Cc: David Airlie <airlied@gmail.com> Cc: nouveau@lists.freedesktop.org Cc: stable@vger.kernel.org # 4.19+ Signed-off-by: Karol Herbst <kherbst@redhat.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230622152017.2512101-1-kherbst@redhat.com
|
#
c4bdac75 |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/ga102: initial support v2: - whitespace Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Gourav Samaiya <gsamaiya@nvidia.com>
|
#
c4d66f7d |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/tu102-: fix support for sw_bundle64_init We weren't sending the high bits, though they're zero currently anyway. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
|
#
1cd97b54 |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/tu102-: use sw_veid_bundle_init from firmware NVIDIA provided this on Turing, but we kept using the hardcoded version from Volta (where they didn't). Switch to the firmware version prior to Ampere. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
|
#
78a43c7e |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: make global attrib_cb actually global This was thought to be per-channel initially - it's not. The backing pages for the VMM mappings are shared for all channels. - switches to more straight-forward patch interfaces - prepares for sub-context support - this is saving a *sizeable* amount of vram v2: - whitespace Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
|
#
5eee9fdd |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: move misc context patching out of attrib_cb funcs Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
|
#
95f78acd |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: make global bundle_cb actually global This was thought to be per-channel initially - it's not. The backing pages for the VMM mappings are shared for all channels. - switches to more straight-forward patch interfaces - prepares for sub-context support Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
|
#
d05095b5 |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: make global pagepool actually global This was thought to be per-channel initially - it's not. The backing pages for the VMM mappings are shared for all channels. - switches to more straight-forward patch interfaces - prepares for sub-context support Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
|
#
ca081fff |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: generate golden context during first object alloc Needed for GV100 (and only GV100 for some reason) for WFI_GOLDEN_SAVE. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
|
#
afa3b96b |
|
14-Jan-2020 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/tu10x: initial support Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
b7019ac5 |
|
19-Jun-2019 |
Ilia Mirkin <imirkin@alum.mit.edu> |
drm/nouveau: fix bogus GPL-2 license header The bulk SPDX addition made all these files into GPL-2.0 licensed files. However the remainder of the project is MIT-licensed, these files (primarily header files) were simply missing the boiler plate and got caught up in the global update. Fixes: b24413180f5 (License cleanup: add SPDX GPL-2.0 license identifier to files with no license) Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Acked-by: Emil Velikov <emil.l.velikov@gmail.com> Acked-by: Karol Herbst <kherbst@redhat.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
d521097f |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gv100: initial support Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
7a058a90 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gp100-: fix attrib cb setup Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
191e3232 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-gm10x: update register lists There are differences on GM200 and newer too, but we can't fix them there as they come from firmware packages. A request has been made to NVIDIA to release updated firmware. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
201ed6f6 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: delete duplicated grctx init code Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
a5537f98 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: update r408840 where required Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
8d56fc48 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: update 419a3c where required Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
c2592ade |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise r418e94 Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
18d17221 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise r419e00 Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
ad45a92b |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: update 419eb0 where required Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
5b54b5b9 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: note missing 418800 modifications Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
99a3c67e |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-gf119: update 419cb8 where required Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
fc360764 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise tpc_mask + apply fixes from traces We weren't placing higher TPC IDs in the right place on some configurations. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
aa5e38dc |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise r419f78 + apply fixes from traces Removed from GK110[B]/GK208 as RM traces show it not being touched. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
60c0264a |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise gpc_tpc_nr Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
e7163b19 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise r406500 Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
60770fa2 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise dist_skip_table + improve algorithm The algorithm for GM200 and newer matches RM for all the boards I have, but I don't have enough data to try and figure something out for earlier boards, so these will still write zeroes to the table as we did before. The code in NVGPU isn't helpful here, it appears to handle specific cases. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
c4a2b638 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-gf119: modify max_ways_evict where required I don't think this is done after Fermi, NVGPU used to do it but removed the code, and I've not seen RM traces touching it either. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
43952c6f |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise alpha_beta_tables + improve algorithms I haven't yet been able to find a fully programatic way of calculating the same mapping as NVIDIA for GF100-GF119, so the algorithm partially depends on data tables for specific configurations. I couldn't find traces for every possibility, so the algorithm will switch to a mapping similar to what GK104-GM10x use if it encounters one. We did the wrong thing before anyway, so shouldn't matter too much. The algorithm used in the GK104 implementation was ported from NVGPU. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
ff209c23 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise rop_mapping Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
9d8a80df |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise r4060a8 + apply fixes from traces Also fixes some GPUs where we write too many registers. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
e51f75d5 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise tpc_per_gpc GM20B now also shares the same code, as NVGPU shows it doesn't need special treatment. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
fc740f54 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise sm_id/tpc_nr Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
ea4a2bb5 |
|
08-May-2018 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: virtualise patch_ltc, noting missing init Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
b2441318 |
|
01-Nov-2017 |
Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
License cleanup: add SPDX GPL-2.0 license identifier to files with no license Many source files in the tree are missing licensing information, which makes it harder for compliance tools to determine the correct license. By default all files without license information are under the default license of the kernel, which is GPL version 2. Update the files which contain no license information with the 'GPL-2.0' SPDX license identifier. The SPDX identifier is a legally binding shorthand, which can be used instead of the full boiler plate text. This patch is based on work done by Thomas Gleixner and Kate Stewart and Philippe Ombredanne. How this work was done: Patches were generated and checked against linux-4.14-rc6 for a subset of the use cases: - file had no licensing information it it. - file was a */uapi/* one with no licensing information in it, - file was a */uapi/* one with existing licensing information, Further patches will be generated in subsequent months to fix up cases where non-standard license headers were used, and references to license had to be inferred by heuristics based on keywords. The analysis to determine which SPDX License Identifier to be applied to a file was done in a spreadsheet of side by side results from of the output of two independent scanners (ScanCode & Windriver) producing SPDX tag:value files created by Philippe Ombredanne. Philippe prepared the base worksheet, and did an initial spot review of a few 1000 files. The 4.13 kernel was the starting point of the analysis with 60,537 files assessed. Kate Stewart did a file by file comparison of the scanner results in the spreadsheet to determine which SPDX license identifier(s) to be applied to the file. She confirmed any determination that was not immediately clear with lawyers working with the Linux Foundation. Criteria used to select files for SPDX license identifier tagging was: - Files considered eligible had to be source code files. - Make and config files were included as candidates if they contained >5 lines of source - File already had some variant of a license header in it (even if <5 lines). All documentation files were explicitly excluded. The following heuristics were used to determine which SPDX license identifiers to apply. - when both scanners couldn't find any license traces, file was considered to have no license information in it, and the top level COPYING file license applied. For non */uapi/* files that summary was: SPDX license identifier # files ---------------------------------------------------|------- GPL-2.0 11139 and resulted in the first patch in this series. If that file was a */uapi/* path one, it was "GPL-2.0 WITH Linux-syscall-note" otherwise it was "GPL-2.0". Results of that was: SPDX license identifier # files ---------------------------------------------------|------- GPL-2.0 WITH Linux-syscall-note 930 and resulted in the second patch in this series. - if a file had some form of licensing information in it, and was one of the */uapi/* ones, it was denoted with the Linux-syscall-note if any GPL family license was found in the file or had no licensing in it (per prior point). Results summary: SPDX license identifier # files ---------------------------------------------------|------ GPL-2.0 WITH Linux-syscall-note 270 GPL-2.0+ WITH Linux-syscall-note 169 ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) 21 ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 17 LGPL-2.1+ WITH Linux-syscall-note 15 GPL-1.0+ WITH Linux-syscall-note 14 ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) 5 LGPL-2.0+ WITH Linux-syscall-note 4 LGPL-2.1 WITH Linux-syscall-note 3 ((GPL-2.0 WITH Linux-syscall-note) OR MIT) 3 ((GPL-2.0 WITH Linux-syscall-note) AND MIT) 1 and that resulted in the third patch in this series. - when the two scanners agreed on the detected license(s), that became the concluded license(s). - when there was disagreement between the two scanners (one detected a license but the other didn't, or they both detected different licenses) a manual inspection of the file occurred. - In most cases a manual inspection of the information in the file resulted in a clear resolution of the license that should apply (and which scanner probably needed to revisit its heuristics). - When it was not immediately clear, the license identifier was confirmed with lawyers working with the Linux Foundation. - If there was any question as to the appropriate license identifier, the file was flagged for further research and to be revisited later in time. In total, over 70 hours of logged manual review was done on the spreadsheet to determine the SPDX license identifiers to apply to the source files by Kate, Philippe, Thomas and, in some cases, confirmation by lawyers working with the Linux Foundation. Kate also obtained a third independent scan of the 4.13 code base from FOSSology, and compared selected files where the other two scanners disagreed against that SPDX file, to see if there was new insights. The Windriver scanner is based on an older version of FOSSology in part, so they are related. Thomas did random spot checks in about 500 files from the spreadsheets for the uapi headers and agreed with SPDX license identifier in the files he inspected. For the non-uapi files Thomas did random spot checks in about 15000 files. In initial set of patches against 4.14-rc6, 3 files were found to have copy/paste license identifier errors, and have been fixed to reflect the correct identifier. Additionally Philippe spent 10 hours this week doing a detailed manual inspection and review of the 12,461 patched files from the initial patch version early this week with: - a full scancode scan run, collecting the matched texts, detected license ids and scores - reviewing anything where there was a license detected (about 500+ files) to ensure that the applied SPDX license was correct - reviewing anything where there was no detection but the patch license was not GPL-2.0 WITH Linux-syscall-note to ensure that the applied SPDX license was correct This produced a worksheet with 20 files needing minor correction. This worksheet was then exported into 3 different .csv files for the different types of files to be modified. These .csv files were then reviewed by Greg. Thomas wrote a script to parse the csv files and add the proper SPDX tag to the file, in the format that the file expected. This script was further refined by Greg based on the output to detect more types of files automatically and to distinguish between header and source .c files (which need different comment types.) Finally Greg ran the script using the .csv files to generate the patches. Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org> Reviewed-by: Philippe Ombredanne <pombredanne@nexb.com> Reviewed-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
#
019e4d76 |
|
31-Oct-2017 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gf100-: use new interfaces for vmm operations Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
b2c4ef70 |
|
30-Mar-2017 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gp107: initial support Forked from GP106 implementation. Differences: - 1 PPC/GPC - Slightly different grctx magics Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
424321be |
|
29-Nov-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gp102: initial support Differences from GP100: - 3 PPCs/GPC. - Another random reg to calculate/write. - Attrib CB setup a little different. - PascalB - PascalComputeB Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
52fa0866 |
|
08-Jul-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gp100: initial support Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
87ac331e |
|
18-Apr-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gk104-: move rop_active_fbps init to nonctx Matches newer RM. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
560e6da2 |
|
13-Apr-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gm200: make generate_main() static Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
7d31cb7c |
|
24-Feb-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gm206: remove implementation, it's now identical to gm200 Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
d4a43a61 |
|
24-Feb-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gm200: switch over to using sw_method_init from firmware Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
c0e8550d |
|
24-Feb-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gm200: switch over to using sw_bundle_init from firmware Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
43bc83b9 |
|
24-Feb-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gm200: switch over to using sw_ctx from firmware Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
9ec28052 |
|
23-Feb-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gm200: s/gm204/gm200/ Most of the per-chipset differences will go away when we fully switch to using the register lists provided by the firmware files, which will leave all the remaining code "belonging" to GM200. This is a preemptive rename from GM204 to GM200. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
27f3d6cf |
|
19-Aug-2015 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr: convert user classes to new-style nvkm_object Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
bfee3f3d |
|
19-Aug-2015 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr: cosmetic changes This is purely preparation for upcoming commits, there should be no code changes here. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
a032fb9d |
|
23-Jun-2015 |
Alexandre Courbot <acourbot@nvidia.com> |
drm/nouveau/gr: add GM20B support Add support for GM20B's graphics engine, based on GK20A. Note that this code alone will not allow the engine to initialize on released devices which require PMU-assisted secure boot. Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
426b20e4 |
|
13-Apr-2015 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gm206: initial init+ctx code Uncertain whether the GPC pack change is due to a newer driver version, or a legitimate difference from GM204. My GM204 has broken vram, so can't currently try a newer binary driver on it to confirm. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
3fed3ea9 |
|
25-Mar-2015 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gm204: initial init+ctx code Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
6eb70826 |
|
25-Mar-2015 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr/gk104-: correct crop/zrop num_active_fbps setting Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
e3c71eb2 |
|
13-Jan-2015 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gr: namespace + nvidia gpu names (no binary change) The namespace of NVKM is being changed to nvkm_ instead of nouveau_, which will be used for the DRM part of the driver. This is being done in order to make it very clear as to what part of the driver a given symbol belongs to, and as a minor step towards splitting the DRM driver out to be able to stand on its own (for virt). Because there's already a large amount of churn here anyway, this is as good a time as any to also switch to NVIDIA's device and chipset naming to ease collaboration with them. A comparison of objdump disassemblies proves no code changes. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|