[PATCH 00/39] clean out drm cruft and hide it better for kms drivers
Daniel Vetter
daniel.vetter at ffwll.ch
Wed Jul 10 05:11:34 PDT 2013
Hi all,
I've figured that it's again time for a bit of (late) drm spring cleanup. This
series here consists of a pile of "rip old stuff out" patches interleaved with
"disable old cruft for kms drivers and hide it better".
Comments, flames and review highly welcome. I'd be especially happy if the arm
guys could check whether I haven't badly broken their drivers - compile-testing
arm is a pita, so I haven't yet done that.
There's a few driver-wide patches included, but the more invasive ones (i.e.
changing more than the drm driver vtable) are split out per-driver for easier
merging. If no one screams my plan is to rebase this pile on top of -rc1, give
it some more testing (check arm, ugh) and then send a pull request to Dave.
That should reduce interference with ongoing driver work as much as possible I
hope.
My drm cruft todo list still has a pile of ideas, but I've figured I need to
stop now for 3.12. For those interested further cleanups could include:
- setversion/set_busid: All drm core version 1.1 is legacy cruft, kms drivers
should never run in this mode. We could clean up the setversion ioclt (and
move the drm core version handling into a legacy function) and set up the bus
id unconditionally at driver load time.
- There's a few more legacy ioctls/subsystems that could be blocked out for kms
drivers (but the required git history digging tends to be tedious). Also I
think we could more aggressively move legacy cruft setup/teardown code
out-of-line from the main code by extracting it into drm_legacy_ functions
(like this series here already does for the context and dma stuff).
- I think creating a drm_internal.h header for functions not exported to drivers
would be useful. That way we could move all the legacy functions out of drmP.h
(which are a lot of them), which should make it much clearer what the real drm
driver interface actually is.
- drm_os_linux.h should just die in fire.
- There's a pile of needless indirection around our agp handling, we duplicate
the agp core's CONFIG_AGP=n no-oping function handling in large parts, among
other stuff.
- The drm coherent dma alloc helpers could get ripped out, at least for kms
drivers. For ums drivers there's some funny cases where this mapping is
exchanged with userspace for e.g. register access. In a least one case
(i810.ko) userspace even sets up that mapping, which allows it to crash the
kernel at will (since those maps aren't refcounted). Maybe we need to shovel
those interfaces into a drm_legacy.ko module to keep them around but make sure
that no new driver even thinks about using them.
- There's also the matter of the vblank support code, imo that should be split
int a ums and a kms part. That'd would allow us to use struct drm_crtc * in
interfaces and proper locking (by grabbing crtc->mutex to exclude races with
dpms/modesets).
If anyone wants to dig around in those areas please poke me.
Cheers, Daniel
Daniel Vetter (39):
drm: remove drm_modctx ioctl and use drm_noop instead
drm: kill dev->context_wait
drm: remove dev->last_switch
drm: kill dev->interrupt_flag and dev->dma_flag
drm: kill dev->ctx_start and dev->lck_start
drm/radoen: kill radeon_dma_ioctl_kms
drm: kill dev->buf_readers and dev->buf_writers
drm: remove redundant clears from drm_setup
drm/omap: kill firstopen callback
drm/radeon: kill firstopen callback for kms driver
drm/imx: kill firstopen callback
drm/vmwgfx: remove ->firstopen callback
drm: don't call ->firstopen for KMS drivers
drm: kill dev->driver->set_version
drm/radeon: remove DRIVER_HAS_DMA/SG/PCI_DMA from the kms driver
drm: fold in drm_sg_alloc into the ioctl
drm: hide legacy sg cleanup better from common code
drm: disallow legacy sg ioctls for modesetting drivers
drm: mark dma setup/teardown as legacy systems
drm/nouveau: drop DRIVER_PCI_DMA and DRIVER_SG
drm: disallow legacy dma ioctls for modesetting drivers
drm: move drm_getsarea into drm_bufs.c
drm/bufs: s/drm_order/order_base_2/
drm/r128: s/drm_order/order_base_2/
drm/radeon: s/drm_order/order_base_2/
drm: remove drm_order
drm: mark context support as a legacy subsystem
drm/vmwgfx: remove redundant clearing of driver->dma_quiescent
drm: remove FASYNC support
drm: rip out DRIVER_FB_DMA and related code
drm: rip out a few unused DRIVER flags
drm: remove a bunch of unused #defines from drmP.h
drm: rip out drm_core_has_MTRR checks
drm: remove the dma_ioctl special-case
drm/memory: don't export agp helpers
drm: hollow-out GET_CLIENT ioctl
drm: no-op out GET_STATS ioctl
drm: fix locking in gem debugfs/procfs file
drm: remove procfs code, take 2
drivers/gpu/drm/Makefile | 2 +-
drivers/gpu/drm/ast/ast_drv.c | 1 -
drivers/gpu/drm/cirrus/cirrus_drv.c | 1 -
drivers/gpu/drm/drm_bufs.c | 238 +++++++------------------------
drivers/gpu/drm/drm_context.c | 81 ++++++++---
drivers/gpu/drm/drm_dma.c | 17 ++-
drivers/gpu/drm/drm_drv.c | 44 +-----
drivers/gpu/drm/drm_fops.c | 66 +--------
drivers/gpu/drm/drm_info.c | 4 +
drivers/gpu/drm/drm_ioctl.c | 43 +-----
drivers/gpu/drm/drm_memory.c | 2 -
drivers/gpu/drm/drm_pci.c | 11 +-
drivers/gpu/drm/drm_proc.c | 209 ---------------------------
drivers/gpu/drm/drm_scatter.c | 29 ++--
drivers/gpu/drm/drm_stub.c | 44 ++----
drivers/gpu/drm/drm_vm.c | 3 +-
drivers/gpu/drm/gma500/psb_drv.c | 3 +-
drivers/gpu/drm/i810/i810_dma.c | 1 -
drivers/gpu/drm/i810/i810_drv.c | 1 -
drivers/gpu/drm/i915/i915_drv.c | 1 -
drivers/gpu/drm/mga/mga_drv.c | 1 -
drivers/gpu/drm/mgag200/mgag200_drv.c | 1 -
drivers/gpu/drm/nouveau/nouveau_drm.c | 3 +-
drivers/gpu/drm/omapdrm/omap_drv.c | 8 --
drivers/gpu/drm/qxl/qxl_drv.c | 1 -
drivers/gpu/drm/r128/r128_cce.c | 2 +-
drivers/gpu/drm/r128/r128_drv.c | 1 -
drivers/gpu/drm/radeon/cik.c | 14 +-
drivers/gpu/drm/radeon/evergreen.c | 4 +-
drivers/gpu/drm/radeon/ni.c | 6 +-
drivers/gpu/drm/radeon/r100.c | 2 +-
drivers/gpu/drm/radeon/r600.c | 14 +-
drivers/gpu/drm/radeon/r600_cp.c | 6 +-
drivers/gpu/drm/radeon/radeon_cp.c | 6 +-
drivers/gpu/drm/radeon/radeon_drv.c | 11 +-
drivers/gpu/drm/radeon/radeon_kms.c | 23 ---
drivers/gpu/drm/radeon/si.c | 14 +-
drivers/gpu/drm/savage/savage_drv.c | 1 -
drivers/gpu/drm/shmobile/shmob_drm_drv.c | 1 -
drivers/gpu/drm/sis/sis_drv.c | 1 -
drivers/gpu/drm/tdfx/tdfx_drv.c | 1 -
drivers/gpu/drm/tilcdc/tilcdc_drv.c | 1 -
drivers/gpu/drm/udl/udl_drv.c | 1 -
drivers/gpu/drm/via/via_drv.c | 1 -
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 20 ---
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 1 -
drivers/gpu/host1x/drm/drm.c | 1 -
drivers/staging/imx-drm/imx-drm-core.c | 20 +--
include/drm/drmP.h | 65 ++-------
49 files changed, 239 insertions(+), 793 deletions(-)
delete mode 100644 drivers/gpu/drm/drm_proc.c
--
1.8.3.2
More information about the dri-devel
mailing list