drm/nouveau/core: define FAULT subdev
authorBen Skeggs <bskeggs@redhat.com>
Tue, 8 May 2018 10:39:46 +0000 (20:39 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 18 May 2018 05:01:20 +0000 (15:01 +1000)
This will be responsible for the handling of MMU fault buffers on GPUs
that support them.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/include/nvkm/core/device.h
drivers/gpu/drm/nouveau/include/nvkm/subdev/fault.h [new file with mode: 0644]
drivers/gpu/drm/nouveau/nvkm/core/subdev.c
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
drivers/gpu/drm/nouveau/nvkm/engine/device/priv.h
drivers/gpu/drm/nouveau/nvkm/subdev/Kbuild
drivers/gpu/drm/nouveau/nvkm/subdev/fault/Kbuild [new file with mode: 0644]

index 560265b15ec23705decabcfec7491c4f47f09f4b..f2f9b9e7ce2ea956441aa7ec7b2b6b5bdab5336d 100644 (file)
@@ -22,6 +22,7 @@ enum nvkm_devidx {
        NVKM_SUBDEV_LTC,
        NVKM_SUBDEV_MMU,
        NVKM_SUBDEV_BAR,
+       NVKM_SUBDEV_FAULT,
        NVKM_SUBDEV_PMU,
        NVKM_SUBDEV_VOLT,
        NVKM_SUBDEV_ICCSENSE,
@@ -123,6 +124,7 @@ struct nvkm_device {
        struct nvkm_bus *bus;
        struct nvkm_clk *clk;
        struct nvkm_devinit *devinit;
+       struct nvkm_fault *fault;
        struct nvkm_fb *fb;
        struct nvkm_fuse *fuse;
        struct nvkm_gpio *gpio;
@@ -194,6 +196,7 @@ struct nvkm_device_chip {
        int (*bus     )(struct nvkm_device *, int idx, struct nvkm_bus **);
        int (*clk     )(struct nvkm_device *, int idx, struct nvkm_clk **);
        int (*devinit )(struct nvkm_device *, int idx, struct nvkm_devinit **);
+       int (*fault   )(struct nvkm_device *, int idx, struct nvkm_fault **);
        int (*fb      )(struct nvkm_device *, int idx, struct nvkm_fb **);
        int (*fuse    )(struct nvkm_device *, int idx, struct nvkm_fuse **);
        int (*gpio    )(struct nvkm_device *, int idx, struct nvkm_gpio **);
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/fault.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/fault.h
new file mode 100644 (file)
index 0000000..35a9cfc
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __NVKM_FAULT_H__
+#define __NVKM_FAULT_H__
+#include <core/subdev.h>
+
+struct nvkm_fault {
+       struct nvkm_subdev subdev;
+};
+#endif
index a134d225f9588bc64d523a8dec70d6aa62149009..c707306ac286f26ea7561cc5c04382f977d843b1 100644 (file)
@@ -35,6 +35,7 @@ nvkm_subdev_name[NVKM_SUBDEV_NR] = {
        [NVKM_SUBDEV_BUS     ] = "bus",
        [NVKM_SUBDEV_CLK     ] = "clk",
        [NVKM_SUBDEV_DEVINIT ] = "devinit",
+       [NVKM_SUBDEV_FAULT   ] = "fault",
        [NVKM_SUBDEV_FB      ] = "fb",
        [NVKM_SUBDEV_FUSE    ] = "fuse",
        [NVKM_SUBDEV_GPIO    ] = "gpio",
index 05cd674326a63f67a7d4f0ce31bd6b682dcbafe8..70f3cc0844c9bc069d231799a8170a5a1b3b7074 100644 (file)
@@ -2420,6 +2420,7 @@ nvkm_device_subdev(struct nvkm_device *device, int index)
        _(BUS     , device->bus     , &device->bus->subdev);
        _(CLK     , device->clk     , &device->clk->subdev);
        _(DEVINIT , device->devinit , &device->devinit->subdev);
+       _(FAULT   , device->fault   , &device->fault->subdev);
        _(FB      , device->fb      , &device->fb->subdev);
        _(FUSE    , device->fuse    , &device->fuse->subdev);
        _(GPIO    , device->gpio    , &device->gpio->subdev);
@@ -2891,6 +2892,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
                _(NVKM_SUBDEV_BUS     ,      bus);
                _(NVKM_SUBDEV_CLK     ,      clk);
                _(NVKM_SUBDEV_DEVINIT ,  devinit);
+               _(NVKM_SUBDEV_FAULT   ,    fault);
                _(NVKM_SUBDEV_FB      ,       fb);
                _(NVKM_SUBDEV_FUSE    ,     fuse);
                _(NVKM_SUBDEV_GPIO    ,     gpio);
index 08d0bf6057221f135671fabca96af167ac51bfb4..253ab914a8ef84dbfca3eac1ecee4e72e1d34a3f 100644 (file)
@@ -8,6 +8,7 @@
 #include <subdev/bus.h>
 #include <subdev/clk.h>
 #include <subdev/devinit.h>
+#include <subdev/fault.h>
 #include <subdev/fb.h>
 #include <subdev/fuse.h>
 #include <subdev/gpio.h>
index 3f5d38d74fba482159d42e09076ccb16aaa4057a..cfdffef1afb9ed81babf429831e9c2a9014fa672 100644 (file)
@@ -3,6 +3,7 @@ include $(src)/nvkm/subdev/bios/Kbuild
 include $(src)/nvkm/subdev/bus/Kbuild
 include $(src)/nvkm/subdev/clk/Kbuild
 include $(src)/nvkm/subdev/devinit/Kbuild
+include $(src)/nvkm/subdev/fault/Kbuild
 include $(src)/nvkm/subdev/fb/Kbuild
 include $(src)/nvkm/subdev/fuse/Kbuild
 include $(src)/nvkm/subdev/gpio/Kbuild
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fault/Kbuild b/drivers/gpu/drm/nouveau/nvkm/subdev/fault/Kbuild
new file mode 100644 (file)
index 0000000..e69de29