History log of /linux-master/drivers/gpu/drm/nouveau/nvkm/engine/device/user.c
Revision Date Author Comments
# 176fdcbd 18-Sep-2023 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/gsp/r535: add support for booting GSP-RM

This commit adds the initial code needed to boot the GSP-RM firmware
provided by NVIDIA, bringing with it the beginnings of Ada support.

Until it's had more testing and time to bake, support is disabled by
default (except on Ada). GSP-RM usage can be enabled by passing the
"config=NvGspRm=1" module option.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230918202149.4343-33-skeggsb@gmail.com


# 58c3d3c8 01-Jun-2022 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/vfn: move NV_USERMODE class from host

- uses proper class IDs for Turing/Ampere

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>


# 4ddf8d7d 01-Jun-2022 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/nvkm: zero out engine pointer for subdev-provided classes

Doesn't fix any known issue, but noticed fifo being initialised in
logs in response to mmu allocation.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>


# 22da19f9 08-Mar-2021 Luo Jiaxing <luojiaxing@huawei.com>

drm/nouveau/device: use snprintf() to replace strncpy() to avoid NUL-terminated string loss

Following warning is found when using W=1 to build kernel:

In function ‘nvkm_udevice_info’,
inlined from ‘nvkm_udevice_mthd’ at drivers/gpu/drm/nouveau/nvkm/engine/device/user.c:195:10:
drivers/gpu/drm/nouveau/nvkm/engine/device/user.c:164:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
164 | strncpy(args->v0.chip, device->chip->name, sizeof(args->v0.chip));
drivers/gpu/drm/nouveau/nvkm/engine/device/user.c:165:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
165 | strncpy(args->v0.name, device->name, sizeof(args->v0.name));

The reason of this warning is strncpy() does not guarantee that the
destination buffer will be NUL terminated. If the length of source string
is bigger than number we set by third input parameter, only a part of
characters is copied to the destination, and no NUL-terminated string is
automatically added. There are some potential risks.

So use snprintf() to replace strncpy().

Signed-off-by: Luo Jiaxing <luojiaxing@huawei.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Link: https://gitlab.freedesktop.org/drm/nouveau/-/merge_requests/10


# 148a8653 04-Mar-2021 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau: block a bunch of classes from userspace

Long ago, there had been plans for making use of a bunch of these APIs
from userspace and there's various checks in place to stop misbehaving.

Countless other projects have occurred in the meantime, and the pieces
didn't finish falling into place for that to happen.

They will (hopefully) in the not-too-distant future, but it won't look
quite as insane. The super checks are causing problems right now, and
are going to be removed.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>


# f8fabd31 07-Feb-2021 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/fifo/gk104-: remove use of subdev index in runlist topology info

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>


# efe2a9ec 03-Feb-2021 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/device: pass instance id when looking up a subdev/engine

This switches to using the subdev list for lookup, and otherwise should
be a no-op aside from switching the function signatures.

Callers will be transitioned to split type+inst individually.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>


# 3b050680 13-Jan-2021 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/core: recognise GA10[024]

GA100 hidden behind a module option, as it's not been as well verified
since initial bring-up and may need additional changes.

There's no display anyway, so this can wait for a bit.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 13e95729 08-May-2018 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/fault/gp100: expose MaxwellFaultBufferA

This nvclass exposes the replayable fault buffer, which will be used
by SVM to manage GPU page faults.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 344d9c8f 10-Dec-2018 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/core: recognise TU104

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 936a1678 10-Dec-2018 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/core: support multiple nvdec instances

Turing GPUs can have more than one.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# c1f856bb 08-May-2018 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/core: recognise gv100

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# eb47db4f 08-May-2018 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/fifo: support channel count query

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 6eb01aa8 08-May-2018 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/device: support querying available engines of a specific type

Will be used for fifo runlist selection.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# c5c9127b 08-May-2018 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/device: implement a generic method to query device-specific properties

We have a need to fetch data from GPU-specific sub-devices that is not
tied to any particular engine object.

This commit provides the framework to support such queries.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# eea5cf0f 31-Oct-2017 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/mmu: define user interfaces to mmu

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 01326050 31-Oct-2017 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/core/object: allow arguments to be passed to map function

MMU will be needing this to specify kind info on BAR mappings.

We have no userspace currently using these interfaces, so break the ABI
instead of supporting both. NVIF version bump so any future use can be
guarded.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# e08a1d97 23-Oct-2016 Baoyou Xie <baoyou.xie@linaro.org>

drm/nouveau: mark symbols static where possible

We get a few warnings when building kernel with W=1:
drivers/gpu/drm/nouveau/nvkm/subdev/bios/fan.c:29:1: warning: no previous prototype for 'nvbios_fan_table' [-Wmissing-prototypes]
drivers/gpu/drm/nouveau/nvkm/subdev/bios/fan.c:56:1: warning: no previous prototype for 'nvbios_fan_entry' [-Wmissing-prototypes]
drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.c:184:1: warning: no previous prototype for 'gt215_clk_info' [-Wmissing-prototypes]
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.c:99:1: warning: no previous prototype for 'gt215_link_train_calc' [-Wmissing-prototypes]
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.c:153:1: warning: no previous prototype for 'gt215_link_train' [-Wmissing-prototypes]
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.c:271:1: warning: no previous prototype for 'gt215_link_train_init' [-Wmissing-prototypes]
....

In fact, both functions are only used in the file in which they are
declared and don't need a declaration, but can be made static.
So this patch marks these functions with 'static'.

Signed-off-by: Baoyou Xie <baoyou.xie@linaro.org>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 7f53abdb 08-Jul-2016 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/core: recognise GP100 chipset

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# f01c4e68 08-Nov-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/nvif: modify nvif_unvers/nvif_unpack macros to be more obvious

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 923bc416 07-Nov-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/nvif: split out device interface definitions

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 26c9e8ef 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/device: remove pci/platform_device from common struct

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 7e8820fe 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/device: cleaner abstraction for device resource functions

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 68f3f702 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/core: remove the remainder of the previous style

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 31649ecf 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: convert to new-style nvkm_subdev

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# ef8bc576 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/core: kill some (now) dead code

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 0710cc31 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/dma: convert user classes to new-style nvkm_object

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 19fef52d 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/dma: split user classes out from engine implementations

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 0e29998a 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/device: convert ctrl class to new-style nvkm_object

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 2a9f847f 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/device: convert user class to new-style nvkm_object

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 24bd0930 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/client: convert to new-style nvkm_object

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 6cf813fb 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/device: prepare for new-style subdevs

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# d61f4c17 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/nvif: device time mthd

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 22827fa4 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/nvif: return chipset/board names from device info method

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 4e7e62d6 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/client: store default device by handle, not reference

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# a1e88736 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/device: decouple from engine machinery

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# a1bfb29a 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/device: split user device implementation out on its own

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>