Re: [PATCH 000/156] drm/nouveau: replace "ioctl" interface between drm/nvkm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]<

 



On 18/4/24 08:24, Danilo Krummrich wrote:

Hi Ben,

Welcome back from my side as well!

Hey Danilo,

Thanks!


On Wed, Apr 17, 2024 at 09:37:26AM +1000, Ben Skeggs wrote:
This is a series of cleanups that I intended on doing after posting
the initial GSP-RM support several months ago, and have now had the
opportunity to work on again.

The main intention here is to replace the ioctl-like interface that
sits between NVKM and the nouveau DRM driver with more direct calls,
to reduce the call-chain complexity (and overhead).
That sounds like a great and welcome simplification.

This is achieved by having NVKM return structs of info and function
pointers specific to each class, along with an opaque pointer to its
private data.  These are stored in the NVIF structs and used to call
directly into an implementation without handle lookups and multiple
layers of indirection.
I just had a very brief look on the rework of the VMM bits to get a rough idea
how the new interface looks like.

I think I will get the full picture, once I can apply all the patches to a tree
and don't need to look at the changes scattered throughout patches.

However, I wonder if we need another indirection (such as nvif_vmm_impl) instead
of just calling the corresponding functions directly? Or even more crazy, what
if we'd try to rip out nvif entirely?

I'm opposed to removing NVIF.  HW has always had a quite strong priv/user separation (it's been designed for usermode submission from the beginning, even before DMA channels were a thing), and many many years ago now I made the decision to split nouveau along those same boundaries.

It also happens to (basically) mirror the interface GSP-RM provides to the kernel driver.  Had I not split nouveau the way I did, and had the code to manage the priv/user parts of the GPU mingled together, adding support for GSP-RM would have been a lot more painful than it was.



Maybe it would be good to sketch up some example code of how the interface works
and include it in the cover letter? This way we could see / discuss whether we
can even simplify it more or why it needs the indirections you have chosen.

I tried to make this clear in the cover letter, but this isn't an attempt at designing a new interface.  This is the old one, and works in nearly the same way as it did before, just with a whole bunch of middle layers ripped out.

A patch series I've been pondering writing if/when this one is merged, would be to directly implement GSP-RM on top of the "new" interfaces, so that it doesn't need to awkwardly integrate with NVKM's other abstractions that are only really relevant when running on top of HW directly.

There is (almost) be a 1-1 mapping between NVIF function pointer and RM alloc/control call (this was already the case before this series).  The GSP-supporting code in NVKM could be cleaned up significantly.



There's room for further cleanups and API changes from here, but for
now most of the API usage is exactly as it was before, as the series
has gotten quite large enough already.

The first part of the series starts out by cleaning up some of the
interfaces within the DRM driver, and reimplementing the subset of
"ioctl" interfaces needed by userspace directly.

A number of unused interfaces/function args are then removed so that
they don't need to be ported, and some initial renames/preparations
are made to the NVKM's user object implementations so that diffs of
the next set of patches are more straightforward to read.

I then go through each class in turn, starting from the root of the
object tree (client), and working up from there.  The object ctors/
dtors are ported first, followed by sclass/map/etc, followed by the
class's methods, and then repeating the process with each of their
children.

Objects remain accessible with the "ioctl" interface throughout the
changes (until their last use, after which they're removed from the
object rb entirely) to allow each change to be done independently.

After all classes have been ported, some final cleanups are made to
the DRM driver to complete the series.

Ben Skeggs (156):
Wow! That's a lot of work - very much appreciated. However, I think it would
have been better to share your ideas and / or example code regarding this rework
early, such that discussions can happen in advance.

We could have been discussing the (new) interface, get to an agreement and then
work through it in several patch series.

I don't disagree that discussion should be had over new interfaces, but as I said above, this series isn't an attempt at that.  It's attempting to remove a whole bunch of cruft that makes it hard to make changes to the APIs, a whole bunch of memcpy(), and hacks around awkward locking problems (like the linked-list of all memory allocations to avoid object tree locking issues).


Thank you,

Ben.


This has multiple advantages:

   1. It makes things much easier to review; bulky patch series, such as this
      one, are hard to review.
   2. It potentially provides different perspectives for improvements ahead of
      time and potentially saves a lot of your time compared to working through
      the feedback afterwards.
   3. It better involves the community. Wouldn't it be great if someone, due to a
      previous discussion, voluntarily picked up some of the effort?

Can you please resend patch 25 with a corresponding '--in-reply-to='? Also, as
Dave already mentioned, I'd be great if you could provide a branch containing
the patches.

- Danilo

   drm/nouveau: add nouveau_drm.device/mmu
   drm/nouveau: alias nouveau_drm.client to nouveau_drm.cli
   drm/nouveau: pass drm to nouveau_mem_new(), instead of cli
   drm/nouveau: pass drm to nv50_dmac_create(), rather than device+disp
   drm/nouveau: pass cli to nouveau_channel_new() instead of drm+device
   drm/nouveau: remove nouveau_chan.device
   drm/nouveau: remove chan->drm
   drm/nouveau: replace some void casts with chan->cli
   drm/nouveau: remove nouveau_drm.master
   drm/nouveau: always map device
   drm/nouveau: add nouveau_cli to nouveau_abi16
   drm/nouveau: handle limited nvif in abi16
   drm/nouveau: remove abi16->device
   drm/nouveau: remove abi16->handles
   drm/nouveau: store nvkm_device pointer in nouveau_drm
   drm/nouveau: create pci device once
   drm/nouveau: remove push pointer from nouveau_channel
   drm/nouveau/kms: remove a few unused struct members and fn decls
   drm/nouveau/kms: remove push pointer from nv50_dmac
   drm/nouveau/kms: move hw ring tracking vars into nvif_push
   drm/nouveau/kms: move dmac sync/vram ctxdmas to core+wndws
   drm/nouveau/nvkm: remove detect/mmio/subdev_mask from device args
   drm/nouveau/nvkm: move nouveau_nvif.c to nvkm/core/driver.c
   drm/nouveau/nvkm: move nvkm/engine/device/ to nvkm/device/
   drm/nouveau/nvkm: remove perfmon
   drm/nouveau/nvkm: remove nvkm_client_search()
   drm/nouveau/nvif: remove support for userspace backends
   drm/nouveau/nvif: remove route/token
   drm/nouveau/nvif: remove nvxx_object()
   drm/nouveau/nvif: remove nvxx_client()
   drm/nouveau/nvif: remove driver keep/fini
   drm/nouveau/nvif: remove client version
   drm/nouveau/nvif: remove client devlist
   drm/nouveau/nvif: remove client fini
   drm/nouveau/nvif: remove device args
   drm/nouveau/nvif: remove device rd/wr
   drm/nouveau/nvif: remove disp chan rd/wr
   drm/nouveau/nvkm: rename struct nvkm_uevent
   drm/nouveau/nvkm: remove nvkm_client()
   drm/nouveau/nvkm: rename struct nvkm_udevice
   drm/nouveau/nvkm: rename struct nvkm_control
   drm/nouveau/nvkm: rename struct nvkm_uvfn
   drm/nouveau/nvkm: rename struct nvkm_ummu
   drm/nouveau/nvkm: rename struct nvkm_umem
   drm/nouveau/nvkm: rename struct nvkm_uvmm
   drm/nouveau/nvkm: detach user handling from nvkm_fault_buffer
   drm/nouveau/nvkm: detach user handling from nvkm_disp
   drm/nouveau/nvkm: detach user handling from nvkm_conn
   drm/nouveau/nvkm: detach user handling from nvkm_outp
   drm/nouveau/nvkm: detach user handling from nvkm_uhead
   drm/nouveau/nvkm: detach user handling from nvkm_disp_chan
   drm/nouveau/nvkm: rename struct nvkm_ucgrp
   drm/nouveau/nvkm: rename struct nvkm_uchan
   drm/nouveau/nvkm: move umem list to mmu
   drm/nouveau/disp: simplify hw user definition
   drm/nouveau/nvif: output oclass id in object dbg messages
   drm/nouveau/nvif: add alternate version of nvif_object_ctor()
   drm/nouveau/nvif: add alternate version of nvif_event_ctor()
   drm/nouveau/nvif: move nvif<->nvkm interface definitions to driverif.h
   drm/nouveau/nvif: rework "new driver" api
   drm/nouveau/nvkm: remove device list
   drm/nouveau/nvif: rework driver "new client" api
   drm/nouveau/nvif: rework client "new device" api
   drm/nouveau/nvif: remove client from object rb
   drm/nouveau/nvif: rework device "sclass" api
   drm/nouveau/nvif: rework device "map" api
   drm/nouveau/nvif: rework device "info v0" api
   drm/nouveau/nvif: rework device "info v1" api
   drm/nouveau/nvif: rework device "time" api
   drm/nouveau/nvif: rework device "new ctrl" api
   drm/nouveau/nvif: rework ctrl "pstate info" api
   drm/nouveau/nvif: rework ctrl "pstate attr" api
   drm/nouveau/nvif: rework ctrl "pstate user" api
   drm/nouveau/nvif: remove ctrl from object rb
   drm/nouveau/nvif: rework device "new usermode" api
   drm/nouveau/nvif: rework usermode "map" api
   drm/nouveau/nvif: remove usermode from object rb
   drm/nouveau/nvif: rework device "new mmu" api
   drm/nouveau/nvif: rework mmu "sclass" api
   drm/nouveau/nvif: rework mmu "heap" api
   drm/nouveau/nvif: rework mmu "type" api
   drm/nouveau/nvif: rework mmu "kind" api
   drm/nouveau/nvif: rework mmu "new mem" api
   drm/nouveau/nvif: rework mem "map"/"unmap" apis
   drm/nouveau/nvif: rework mmu "new vmm" api
   drm/nouveau/nvif: remove mmu from object rb
   drm/nouveau/nvif: rework vmm "page" api
   drm/nouveau/nvif: rework vmm "get"/"put" apis
   drm/nouveau/nvif: rework vmm "map"/"unmap" apis
   drm/nouveau/nvif: rework vmm "pfnmap"/"pfnclr" apis
   drm/nouveau/nvif: rework vmm "raw get"/"raw put" apis
   drm/nouveau/nvif: rework vmm "raw map"/"raw unmap" apis
   drm/nouveau/nvif: rework vmm "raw sparse" api
   drm/nouveau/nvif: rework vmm "fault replay"/"fault cancel" apis
   drm/nouveau/nvif: rework device "new fault buffer" api
   drm/nouveau/nvif: rework fault buffer "map" api
   drm/nouveau/nvif: rework fault buffer "new event" api
   drm/nouveau/nvif: remove fault buffer from object rb
   drm/nouveau/nvif: rework device "new disp" api
   drm/nouveau/nvif: rework disp "sclass" api
   drm/nouveau/nvif: rework disp "new caps" api
   drm/nouveau/nvif: rework disp "new conn" api
   drm/nouveau/nvif: rework conn "new event" api
   drm/nouveau/nvif: remove conn from object rb
   drm/nouveau/nvif: rework disp "new outp" api
   drm/nouveau/nvif: rework outp "detect" api
   drm/nouveau/nvif: rework outp "edid get" api
   drm/nouveau/nvif: rework outp "load detect" api
   drm/nouveau/nvif: rework outp "inherit" apis
   drm/nouveau/nvif: rework outp "acquire" api
   drm/nouveau/nvif: rework outp "release" api
   drm/nouveau/nvif: rework outp "bl get"/"bl set" apis
   drm/nouveau/nvif: rework outp "lvds config" api
   drm/nouveau/nvif: rework outp "hdmi config" api
   drm/nouveau/nvif: rework outp "infoframe" api
   drm/nouveau/nvif: rework outp "hda eld" api
   drm/nouveau/nvif: rework outp "dp aux pwr" api
   drm/nouveau/nvif: rework outp "dp aux xfer" api
   drm/nouveau/nvif: rework outp "dp rates" api
   drm/nouveau/nvif: rework outp "dp train" api
   drm/nouveau/nvif: rework outp "dp drive" api
   drm/nouveau/nvif: rework outp "dp sst" api
   drm/nouveau/nvif: rework outp "dp mst id get"/"dp mst id put" apis
   drm/nouveau/nvif: rework outp "dp mst vcpi" api
   drm/nouveau/nvif: remove outp from object rb
   drm/nouveau/nvif: rework disp "new head" api
   drm/nouveau/nvif: rework head "scanoutpos" api
   drm/nouveau/nvif: rework head "new event" api
   drm/nouveau/nvif: remove head from object rb
   drm/nouveau/nvif: rework disp "new chan" apis
   drm/nouveau/nvif: remove disp from object rb
   drm/nouveau/nvif: rework disp chan "new ctxdma" api
   drm/nouveau/nvif: remove disp chans from object rb
   drm/nouveau/nvif: rework device "new cgrp" api
   drm/nouveau/nvif: rework device "new ctxdma" api
   drm/nouveau/nvif: rework device/cgrp "new chan" apis
   drm/nouveau/nvif: remove mem from object rb
   drm/nouveau/nvif: remove vmm from object rb
   drm/nouveau/nvif: remove ctxdma from object rb
   drm/nouveau/nvif: remove device from object rb
   drm/nouveau/nvif: rework chan "map" api
   drm/nouveau/nvif: rework chan "sclass" api
   drm/nouveau/nvif: rework chan "new event" apis
   drm/nouveau/nvif: rework chan "new ctxdma" api
   drm/nouveau/nvif: rework chan "new engobj" apis
   drm/nouveau/nvif: remove chan from object rb
   drm/nouveau/nvif: rework engobj "mthd" api
   drm/nouveau/nvif: rework engobj "new event" api
   drm/nouveau/nvif: remove engobj from object rb
   drm/nouveau/nvkm: switch nvkm_object to non-irqsafe spinlock
   drm/nouveau: remove client_mutex
   drm/nouveau: move nvxx_* definitions to nouveau_drv.h
   drm/nouveau: pass nouveau_drm to nvxx_*
   drm/nouveau: remove remaining usage of nvif_device.info
   drm/nouveau: remove remaining usage of nvif_device.object.map
   drm/nouveau: remove remaining usage of nouveau_drm.client

  drivers/gpu/drm/nouveau/Kbuild                |   2 -
  drivers/gpu/drm/nouveau/dispnv04/arb.c        |   7 +-
  drivers/gpu/drm/nouveau/dispnv04/crtc.c       |  50 +-
  drivers/gpu/drm/nouveau/dispnv04/cursor.c     |   2 +-
  drivers/gpu/drm/nouveau/dispnv04/dac.c        |  18 +-
  drivers/gpu/drm/nouveau/dispnv04/dfp.c        |  12 +-
  drivers/gpu/drm/nouveau/dispnv04/disp.c       |  15 +-
  drivers/gpu/drm/nouveau/dispnv04/disp.h       |   6 +-
  drivers/gpu/drm/nouveau/dispnv04/hw.c         |  83 +-
  drivers/gpu/drm/nouveau/dispnv04/hw.h         |  45 +-
  drivers/gpu/drm/nouveau/dispnv04/overlay.c    |  21 +-
  drivers/gpu/drm/nouveau/dispnv04/tvnv04.c     |   4 +-
  drivers/gpu/drm/nouveau/dispnv04/tvnv17.c     |  16 +-
  drivers/gpu/drm/nouveau/dispnv04/tvnv17.h     |  10 +-
  drivers/gpu/drm/nouveau/dispnv50/base.c       |  33 +-
  drivers/gpu/drm/nouveau/dispnv50/base507c.c   |  43 +-
  drivers/gpu/drm/nouveau/dispnv50/base827c.c   |   2 +-
  drivers/gpu/drm/nouveau/dispnv50/base907c.c   |  10 +-
  drivers/gpu/drm/nouveau/dispnv50/core.c       |  84 +-
  drivers/gpu/drm/nouveau/dispnv50/core.h       |   9 +-
  drivers/gpu/drm/nouveau/dispnv50/core507d.c   |  34 +-
  drivers/gpu/drm/nouveau/dispnv50/core907d.c   |   2 +-
  drivers/gpu/drm/nouveau/dispnv50/corec37d.c   |  19 +-
  drivers/gpu/drm/nouveau/dispnv50/corec57d.c   |   4 +-
  drivers/gpu/drm/nouveau/dispnv50/crc.c        |  34 +-
  drivers/gpu/drm/nouveau/dispnv50/crc.h        |   4 +-
  drivers/gpu/drm/nouveau/dispnv50/crc907d.c    |  12 +-
  drivers/gpu/drm/nouveau/dispnv50/crcc37d.c    |  12 +-
  drivers/gpu/drm/nouveau/dispnv50/crcc57d.c    |   4 +-
  drivers/gpu/drm/nouveau/dispnv50/curs.c       |  35 +-
  drivers/gpu/drm/nouveau/dispnv50/curs507a.c   |  41 +-
  drivers/gpu/drm/nouveau/dispnv50/cursc37a.c   |  12 +-
  drivers/gpu/drm/nouveau/dispnv50/dac507d.c    |   2 +-
  drivers/gpu/drm/nouveau/dispnv50/dac907d.c    |   2 +-
  drivers/gpu/drm/nouveau/dispnv50/disp.c       | 313 +------
  drivers/gpu/drm/nouveau/dispnv50/disp.h       |  37 +-
  drivers/gpu/drm/nouveau/dispnv50/head.c       |   4 +-
  drivers/gpu/drm/nouveau/dispnv50/head507d.c   |  26 +-
  drivers/gpu/drm/nouveau/dispnv50/head827d.c   |  10 +-
  drivers/gpu/drm/nouveau/dispnv50/head907d.c   |  26 +-
  drivers/gpu/drm/nouveau/dispnv50/head917d.c   |   6 +-
  drivers/gpu/drm/nouveau/dispnv50/headc37d.c   |  18 +-
  drivers/gpu/drm/nouveau/dispnv50/headc57d.c   |  12 +-
  drivers/gpu/drm/nouveau/dispnv50/lut.c        |  12 +-
  drivers/gpu/drm/nouveau/dispnv50/lut.h        |   5 +-
  drivers/gpu/drm/nouveau/dispnv50/oimm.c       |  29 +-
  drivers/gpu/drm/nouveau/dispnv50/oimm507b.c   |  20 +-
  drivers/gpu/drm/nouveau/dispnv50/ovly.c       |  32 +-
  drivers/gpu/drm/nouveau/dispnv50/ovly507e.c   |  28 +-
  drivers/gpu/drm/nouveau/dispnv50/ovly827e.c   |   2 +-
  drivers/gpu/drm/nouveau/dispnv50/ovly907e.c   |   2 +-
  drivers/gpu/drm/nouveau/dispnv50/pior507d.c   |   2 +-
  drivers/gpu/drm/nouveau/dispnv50/sor507d.c    |   2 +-
  drivers/gpu/drm/nouveau/dispnv50/sor907d.c    |   2 +-
  drivers/gpu/drm/nouveau/dispnv50/sorc37d.c    |   2 +-
  drivers/gpu/drm/nouveau/dispnv50/wimm.c       |  25 +-
  drivers/gpu/drm/nouveau/dispnv50/wimmc37b.c   |  24 +-
  drivers/gpu/drm/nouveau/dispnv50/wndw.c       | 101 +-
  drivers/gpu/drm/nouveau/dispnv50/wndw.h       |  20 +-
  drivers/gpu/drm/nouveau/dispnv50/wndwc37e.c   |  46 +-
  drivers/gpu/drm/nouveau/dispnv50/wndwc57e.c   |  10 +-
  drivers/gpu/drm/nouveau/dispnv50/wndwc67e.c   |   2 +-
  drivers/gpu/drm/nouveau/include/nvif/cgrp.h   |  17 +
  drivers/gpu/drm/nouveau/include/nvif/chan.h   |  45 +
  drivers/gpu/drm/nouveau/include/nvif/cl0080.h |  60 --
  drivers/gpu/drm/nouveau/include/nvif/class.h  |   8 -
  drivers/gpu/drm/nouveau/include/nvif/clb069.h |  15 -
  drivers/gpu/drm/nouveau/include/nvif/client.h |  14 +-
  drivers/gpu/drm/nouveau/include/nvif/conn.h   |  24 +-
  drivers/gpu/drm/nouveau/include/nvif/ctxdma.h |  29 +
  drivers/gpu/drm/nouveau/include/nvif/device.h |  51 +-
  drivers/gpu/drm/nouveau/include/nvif/disp.h   |  19 +-
  .../gpu/drm/nouveau/include/nvif/dispchan.h   |  25 +
  drivers/gpu/drm/nouveau/include/nvif/driver.h |  27 +-
  .../gpu/drm/nouveau/include/nvif/driverif.h   | 643 +++++++++++++
  drivers/gpu/drm/nouveau/include/nvif/event.h  |  16 +-
  drivers/gpu/drm/nouveau/include/nvif/fifo.h   |  11 +-
  drivers/gpu/drm/nouveau/include/nvif/head.h   |   2 +
  drivers/gpu/drm/nouveau/include/nvif/if0000.h |  20 -
  drivers/gpu/drm/nouveau/include/nvif/if0001.h |  47 -
  drivers/gpu/drm/nouveau/include/nvif/if0002.h |  39 -
  drivers/gpu/drm/nouveau/include/nvif/if0003.h |  34 -
  drivers/gpu/drm/nouveau/include/nvif/if0008.h |  42 -
  drivers/gpu/drm/nouveau/include/nvif/if000c.h | 117 ---
  drivers/gpu/drm/nouveau/include/nvif/if000d.h |   1 -
  drivers/gpu/drm/nouveau/include/nvif/if000e.h |  26 -
  drivers/gpu/drm/nouveau/include/nvif/if0010.h |  14 -
  drivers/gpu/drm/nouveau/include/nvif/if0011.h |  18 -
  drivers/gpu/drm/nouveau/include/nvif/if0012.h | 294 ------
  drivers/gpu/drm/nouveau/include/nvif/if0013.h |  35 -
  drivers/gpu/drm/nouveau/include/nvif/if0014.h |  13 -
  drivers/gpu/drm/nouveau/include/nvif/if0020.h |  45 -
  drivers/gpu/drm/nouveau/include/nvif/if0021.h |  16 -
  drivers/gpu/drm/nouveau/include/nvif/if500d.h |   1 -
  drivers/gpu/drm/nouveau/include/nvif/if900d.h |   1 -
  drivers/gpu/drm/nouveau/include/nvif/ifb00d.h |   1 -
  drivers/gpu/drm/nouveau/include/nvif/ifc00d.h |   1 -
  drivers/gpu/drm/nouveau/include/nvif/ioctl.h  |  44 -
  drivers/gpu/drm/nouveau/include/nvif/mem.h    |  18 +-
  drivers/gpu/drm/nouveau/include/nvif/mmu.h    |  38 +-
  drivers/gpu/drm/nouveau/include/nvif/object.h | 105 +--
  drivers/gpu/drm/nouveau/include/nvif/os.h     |  19 +
  drivers/gpu/drm/nouveau/include/nvif/outp.h   |  58 +-
  drivers/gpu/drm/nouveau/include/nvif/printf.h |   9 +-
  drivers/gpu/drm/nouveau/include/nvif/push.h   |  18 +-
  drivers/gpu/drm/nouveau/include/nvif/user.h   |   6 +-
  drivers/gpu/drm/nouveau/include/nvif/vmm.h    |  30 +-
  .../drm/nouveau/include/nvkm/core/client.h    |  16 +-
  .../drm/nouveau/include/nvkm/core/device.h    |   6 -
  .../drm/nouveau/include/nvkm/core/driver.h    |   9 +
  .../gpu/drm/nouveau/include/nvkm/core/event.h |  10 +-
  .../gpu/drm/nouveau/include/nvkm/core/ioctl.h |   8 -
  .../drm/nouveau/include/nvkm/core/layout.h    |   1 -
  .../drm/nouveau/include/nvkm/core/object.h    |  43 +-
  .../drm/nouveau/include/nvkm/core/oclass.h    |   2 -
  .../gpu/drm/nouveau/include/nvkm/core/os.h    |  21 +-
  .../gpu/drm/nouveau/include/nvkm/core/pci.h   |   1 -
  .../drm/nouveau/include/nvkm/core/subdev.h    |   2 -
  .../gpu/drm/nouveau/include/nvkm/core/tegra.h |   1 -
  .../drm/nouveau/include/nvkm/engine/disp.h    |   4 +-
  .../gpu/drm/nouveau/include/nvkm/engine/dma.h |   2 -
  .../gpu/drm/nouveau/include/nvkm/engine/pm.h  |  29 -
  .../gpu/drm/nouveau/include/nvkm/subdev/mmu.h |   3 -
  drivers/gpu/drm/nouveau/nouveau_abi16.c       | 498 ++++++----
  drivers/gpu/drm/nouveau/nouveau_abi16.h       |  11 +-
  drivers/gpu/drm/nouveau/nouveau_backlight.c   |  30 +-
  drivers/gpu/drm/nouveau/nouveau_bios.c        |  22 +-
  drivers/gpu/drm/nouveau/nouveau_bios.h        |   1 +
  drivers/gpu/drm/nouveau/nouveau_bo.c          | 130 +--
  drivers/gpu/drm/nouveau/nouveau_bo0039.c      |   8 +-
  drivers/gpu/drm/nouveau/nouveau_bo5039.c      |  10 +-
  drivers/gpu/drm/nouveau/nouveau_bo74c1.c      |   2 +-
  drivers/gpu/drm/nouveau/nouveau_bo85b5.c      |   2 +-
  drivers/gpu/drm/nouveau/nouveau_bo9039.c      |   4 +-
  drivers/gpu/drm/nouveau/nouveau_bo90b5.c      |   2 +-
  drivers/gpu/drm/nouveau/nouveau_boa0b5.c      |   4 +-
  drivers/gpu/drm/nouveau/nouveau_chan.c        | 353 ++++---
  drivers/gpu/drm/nouveau/nouveau_chan.h        |  31 +-
  drivers/gpu/drm/nouveau/nouveau_connector.c   |  30 +-
  drivers/gpu/drm/nouveau/nouveau_debugfs.c     |  47 +-
  drivers/gpu/drm/nouveau/nouveau_debugfs.h     |   2 +
  drivers/gpu/drm/nouveau/nouveau_display.c     |  50 +-
  drivers/gpu/drm/nouveau/nouveau_dma.c         |  10 +-
  drivers/gpu/drm/nouveau/nouveau_dma.h         |   2 +-
  drivers/gpu/drm/nouveau/nouveau_dmem.c        |  19 +-
  drivers/gpu/drm/nouveau/nouveau_dp.c          |   2 +-
  drivers/gpu/drm/nouveau/nouveau_drm.c         | 359 +++-----
  drivers/gpu/drm/nouveau/nouveau_drv.h         |  71 +-
  drivers/gpu/drm/nouveau/nouveau_fence.c       |  33 +-
  drivers/gpu/drm/nouveau/nouveau_gem.c         |  34 +-
  drivers/gpu/drm/nouveau/nouveau_hwmon.c       |  46 +-
  drivers/gpu/drm/nouveau/nouveau_led.c         |   6 +-
  drivers/gpu/drm/nouveau/nouveau_mem.c         |  44 +-
  drivers/gpu/drm/nouveau/nouveau_mem.h         |   4 +-
  drivers/gpu/drm/nouveau/nouveau_prime.c       |   2 +-
  drivers/gpu/drm/nouveau/nouveau_sgdma.c       |   4 +-
  drivers/gpu/drm/nouveau/nouveau_svm.c         | 174 ++--
  drivers/gpu/drm/nouveau/nouveau_ttm.c         |  43 +-
  drivers/gpu/drm/nouveau/nouveau_usif.c        | 194 ----
  drivers/gpu/drm/nouveau/nouveau_usif.h        |  10 -
  drivers/gpu/drm/nouveau/nouveau_uvmm.c        |   4 +-
  drivers/gpu/drm/nouveau/nouveau_vga.c         |   8 +-
  drivers/gpu/drm/nouveau/nouveau_vmm.c         |  14 +-
  drivers/gpu/drm/nouveau/nouveau_vmm.h         |   2 +-
  drivers/gpu/drm/nouveau/nv04_fence.c          |   9 +-
  drivers/gpu/drm/nouveau/nv10_fence.c          |   6 +-
  drivers/gpu/drm/nouveau/nv10_fence.h          |   2 +-
  drivers/gpu/drm/nouveau/nv17_fence.c          |  25 +-
  drivers/gpu/drm/nouveau/nv50_fence.c          |  13 +-
  drivers/gpu/drm/nouveau/nv84_fence.c          |  20 +-
  drivers/gpu/drm/nouveau/nvc0_fence.c          |   4 +-
  drivers/gpu/drm/nouveau/nvif/Kbuild           |   3 +
  drivers/gpu/drm/nouveau/nvif/cgrp.c           |  52 ++
  drivers/gpu/drm/nouveau/nvif/chan.c           | 130 +++
  drivers/gpu/drm/nouveau/nvif/client.c         |  54 +-
  drivers/gpu/drm/nouveau/nvif/conn.c           |  53 +-
  drivers/gpu/drm/nouveau/nvif/device.c         |  67 +-
  drivers/gpu/drm/nouveau/nvif/disp.c           | 107 ++-
  drivers/gpu/drm/nouveau/nvif/dispchan.c       | 222 +++++
  drivers/gpu/drm/nouveau/nvif/driver.c         |  40 +-
  drivers/gpu/drm/nouveau/nvif/event.c          |  63 +-
  drivers/gpu/drm/nouveau/nvif/fifo.c           |  66 +-
  drivers/gpu/drm/nouveau/nvif/head.c           |  35 +-
  drivers/gpu/drm/nouveau/nvif/mem.c            | 102 ++-
  drivers/gpu/drm/nouveau/nvif/mmu.c            | 111 +--
  drivers/gpu/drm/nouveau/nvif/object.c         | 290 +-----
  drivers/gpu/drm/nouveau/nvif/outp.c           | 353 ++-----
  drivers/gpu/drm/nouveau/nvif/user.c           |  50 +-
  drivers/gpu/drm/nouveau/nvif/userc361.c       |   8 +-
  drivers/gpu/drm/nouveau/nvif/vmm.c            | 200 +---
  drivers/gpu/drm/nouveau/nvkm/Kbuild           |   1 +
  drivers/gpu/drm/nouveau/nvkm/core/Kbuild      |   2 +-
  drivers/gpu/drm/nouveau/nvkm/core/client.c    | 150 +--
  .../{nouveau_nvif.c => nvkm/core/driver.c}    |  69 +-
  drivers/gpu/drm/nouveau/nvkm/core/engine.c    |  12 -
  drivers/gpu/drm/nouveau/nvkm/core/ioctl.c     | 390 --------
  drivers/gpu/drm/nouveau/nvkm/core/object.c    | 159 +---
  drivers/gpu/drm/nouveau/nvkm/core/oproxy.c    |  76 --
  drivers/gpu/drm/nouveau/nvkm/core/subdev.c    |   8 -
  drivers/gpu/drm/nouveau/nvkm/core/uevent.c    |  88 +-
  drivers/gpu/drm/nouveau/nvkm/device/Kbuild    |   7 +
  .../nouveau/nvkm/{engine => }/device/acpi.c   |   0
  .../nouveau/nvkm/{engine => }/device/acpi.h   |   0
  .../nouveau/nvkm/{engine => }/device/base.c   | 552 +++++------
  drivers/gpu/drm/nouveau/nvkm/device/ctrl.c    | 172 ++++
  drivers/gpu/drm/nouveau/nvkm/device/ctrl.h    |   9 +
  .../nouveau/nvkm/{engine => }/device/pci.c    |   4 +-
  .../nouveau/nvkm/{engine => }/device/priv.h   |   2 -
  .../nouveau/nvkm/{engine => }/device/tegra.c  |   5 +-
  drivers/gpu/drm/nouveau/nvkm/device/user.c    | 434 +++++++++
  drivers/gpu/drm/nouveau/nvkm/device/user.h    |   9 +
  drivers/gpu/drm/nouveau/nvkm/engine/Kbuild    |   2 -
  .../gpu/drm/nouveau/nvkm/engine/device/Kbuild |   7 -
  .../gpu/drm/nouveau/nvkm/engine/device/ctrl.c | 212 -----
  .../gpu/drm/nouveau/nvkm/engine/device/ctrl.h |  13 -
  .../gpu/drm/nouveau/nvkm/engine/device/user.c | 431 ---------
  .../gpu/drm/nouveau/nvkm/engine/disp/Kbuild   |   1 +
  .../gpu/drm/nouveau/nvkm/engine/disp/ad102.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/base.c   |  29 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/chan.c   | 272 +++---
  .../gpu/drm/nouveau/nvkm/engine/disp/chan.h   |  15 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/conn.h   |   2 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/g84.c    |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/g94.c    |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/ga102.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/gf119.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/gk104.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/gk110.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/gm107.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/gm200.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/gp100.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/gp102.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/gt200.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/gt215.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/gv100.c  |  52 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/head.h   |   2 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/mcp77.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/mcp89.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/nv04.c   |   5 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/nv50.c   |  20 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/outp.h   |   3 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/priv.h   |  31 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/r535.c   |  46 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/tu102.c  |  13 +-
  .../gpu/drm/nouveau/nvkm/engine/disp/ucaps.c  |  70 ++
  .../gpu/drm/nouveau/nvkm/engine/disp/ucaps.h  |   9 +
  .../gpu/drm/nouveau/nvkm/engine/disp/uchan.h  |  10 +
  .../gpu/drm/nouveau/nvkm/engine/disp/uconn.c  | 176 ++--
  .../gpu/drm/nouveau/nvkm/engine/disp/uconn.h  |   9 +
  .../gpu/drm/nouveau/nvkm/engine/disp/udisp.c  | 288 ++++--
  .../gpu/drm/nouveau/nvkm/engine/disp/udisp.h  |  17 +
  .../gpu/drm/nouveau/nvkm/engine/disp/uhead.c  | 125 +--
  .../gpu/drm/nouveau/nvkm/engine/disp/uhead.h  |   9 +
  .../gpu/drm/nouveau/nvkm/engine/disp/uoutp.c  | 778 ++++++++--------
  .../gpu/drm/nouveau/nvkm/engine/disp/uoutp.h  |   9 +
  .../gpu/drm/nouveau/nvkm/engine/dma/user.c    |  19 -
  .../drm/nouveau/nvkm/engine/dma/usergf100.c   |   5 -
  .../drm/nouveau/nvkm/engine/dma/usergf119.c   |   5 -
  .../drm/nouveau/nvkm/engine/dma/usergv100.c   |   5 -
  .../drm/nouveau/nvkm/engine/dma/usernv50.c    |   6 -
  .../gpu/drm/nouveau/nvkm/engine/fifo/Kbuild   |   1 +
  .../gpu/drm/nouveau/nvkm/engine/fifo/base.c   | 126 ---
  .../gpu/drm/nouveau/nvkm/engine/fifo/chan.c   |   2 -
  .../gpu/drm/nouveau/nvkm/engine/fifo/priv.h   |   5 -
  .../gpu/drm/nouveau/nvkm/engine/fifo/ucgrp.c  | 108 ++-
  .../gpu/drm/nouveau/nvkm/engine/fifo/ucgrp.h  |   9 +
  .../gpu/drm/nouveau/nvkm/engine/fifo/uchan.c  | 388 +++++---
  .../gpu/drm/nouveau/nvkm/engine/fifo/uchan.h  |  11 +
  .../gpu/drm/nouveau/nvkm/engine/fifo/ufifo.c  | 129 +++
  .../gpu/drm/nouveau/nvkm/engine/fifo/ufifo.h  |   8 +
  .../gpu/drm/nouveau/nvkm/engine/gr/gf100.c    |   1 -
  drivers/gpu/drm/nouveau/nvkm/engine/pm/Kbuild |  11 -
  drivers/gpu/drm/nouveau/nvkm/engine/pm/base.c | 867 ------------------
  drivers/gpu/drm/nouveau/nvkm/engine/pm/g84.c  | 165 ----
  .../gpu/drm/nouveau/nvkm/engine/pm/gf100.c    | 243 -----
  .../gpu/drm/nouveau/nvkm/engine/pm/gf100.h    |  20 -
  .../gpu/drm/nouveau/nvkm/engine/pm/gf108.c    |  66 --
  .../gpu/drm/nouveau/nvkm/engine/pm/gf117.c    |  80 --
  .../gpu/drm/nouveau/nvkm/engine/pm/gk104.c    | 184 ----
  .../gpu/drm/nouveau/nvkm/engine/pm/gt200.c    | 157 ----
  .../gpu/drm/nouveau/nvkm/engine/pm/gt215.c    | 138 ---
  drivers/gpu/drm/nouveau/nvkm/engine/pm/nv40.c | 123 ---
  drivers/gpu/drm/nouveau/nvkm/engine/pm/nv40.h |  15 -
  drivers/gpu/drm/nouveau/nvkm/engine/pm/nv50.c | 175 ----
  drivers/gpu/drm/nouveau/nvkm/engine/pm/priv.h | 105 ---
  drivers/gpu/drm/nouveau/nvkm/engine/sw/nvsw.c |  14 +-
  .../gpu/drm/nouveau/nvkm/subdev/fault/base.c  |   1 -
  .../gpu/drm/nouveau/nvkm/subdev/fault/priv.h  |   5 -
  .../gpu/drm/nouveau/nvkm/subdev/fault/user.c  |  99 +-
  .../gpu/drm/nouveau/nvkm/subdev/fault/user.h  |   9 +
  .../gpu/drm/nouveau/nvkm/subdev/mmu/base.c    |   1 -
  .../gpu/drm/nouveau/nvkm/subdev/mmu/umem.c    | 125 ++-
  .../gpu/drm/nouveau/nvkm/subdev/mmu/umem.h    |  24 +-
  .../gpu/drm/nouveau/nvkm/subdev/mmu/ummu.c    | 186 ++--
  .../gpu/drm/nouveau/nvkm/subdev/mmu/ummu.h    |  13 +-
  .../gpu/drm/nouveau/nvkm/subdev/mmu/uvmm.c    | 357 +++-----
  .../gpu/drm/nouveau/nvkm/subdev/mmu/uvmm.h    |  12 +-
  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h |   8 +-
  .../drm/nouveau/nvkm/subdev/mmu/vmmgp100.c    |  68 +-
  .../drm/nouveau/nvkm/subdev/mmu/vmmgp10b.c    |   2 +-
  .../drm/nouveau/nvkm/subdev/mmu/vmmgv100.c    |   2 +-
  .../drm/nouveau/nvkm/subdev/mmu/vmmtu102.c    |   2 +-
  .../gpu/drm/nouveau/nvkm/subdev/vfn/base.c    |   1 -
  .../gpu/drm/nouveau/nvkm/subdev/vfn/priv.h    |   3 -
  .../gpu/drm/nouveau/nvkm/subdev/vfn/uvfn.c    |  44 +-
  .../gpu/drm/nouveau/nvkm/subdev/vfn/uvfn.h    |   9 +
  306 files changed, 6653 insertions(+), 10697 deletions(-)
  create mode 100644 drivers/gpu/drm/nouveau/include/nvif/cgrp.h
  create mode 100644 drivers/gpu/drm/nouveau/include/nvif/chan.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/clb069.h
  create mode 100644 drivers/gpu/drm/nouveau/include/nvif/ctxdma.h
  create mode 100644 drivers/gpu/drm/nouveau/include/nvif/dispchan.h
  create mode 100644 drivers/gpu/drm/nouveau/include/nvif/driverif.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0000.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0001.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0002.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0003.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0008.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if000c.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if000e.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0010.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0012.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0013.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0014.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0020.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0021.h
  create mode 100644 drivers/gpu/drm/nouveau/include/nvkm/core/driver.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvkm/core/ioctl.h
  delete mode 100644 drivers/gpu/drm/nouveau/include/nvkm/engine/pm.h
  delete mode 100644 drivers/gpu/drm/nouveau/nouveau_usif.c
  delete mode 100644 drivers/gpu/drm/nouveau/nouveau_usif.h
  create mode 100644 drivers/gpu/drm/nouveau/nvif/cgrp.c
  create mode 100644 drivers/gpu/drm/nouveau/nvif/chan.c
  create mode 100644 drivers/gpu/drm/nouveau/nvif/dispchan.c
  rename drivers/gpu/drm/nouveau/{nouveau_nvif.c => nvkm/core/driver.c} (65%)
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/core/ioctl.c
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/device/Kbuild
  rename drivers/gpu/drm/nouveau/nvkm/{engine => }/device/acpi.c (100%)
  rename drivers/gpu/drm/nouveau/nvkm/{engine => }/device/acpi.h (100%)
  rename drivers/gpu/drm/nouveau/nvkm/{engine => }/device/base.c (89%)
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/device/ctrl.c
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/device/ctrl.h
  rename drivers/gpu/drm/nouveau/nvkm/{engine => }/device/pci.c (99%)
  rename drivers/gpu/drm/nouveau/nvkm/{engine => }/device/priv.h (95%)
  rename drivers/gpu/drm/nouveau/nvkm/{engine => }/device/tegra.c (97%)
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/device/user.c
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/device/user.h
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/device/Kbuild
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.c
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.h
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/device/user.c
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/ucaps.c
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/ucaps.h
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/uchan.h
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.h
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/udisp.h
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/uhead.h
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.h
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/fifo/ucgrp.h
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/fifo/uchan.h
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/fifo/ufifo.c
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/fifo/ufifo.h
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/Kbuild
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/base.c
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/g84.c
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/gf100.c
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/gf100.h
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/gf108.c
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/gf117.c
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/gk104.c
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/gt200.c
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/gt215.c
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/nv40.c
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/nv40.h
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/nv50.c
  delete mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/pm/priv.h
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/subdev/fault/user.h
  create mode 100644 drivers/gpu/drm/nouveau/nvkm/subdev/vfn/uvfn.h

--
2.41.0




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux