lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 21 Dec 2012 13:39:16 +0200
From:	Terje Bergstrom <tbergstrom@...dia.com>
To:	<thierry.reding@...onic-design.de>, <airlied@...ux.ie>,
	<dev@...xeye.de>, <dri-devel@...ts.freedesktop.org>,
	<linux-tegra@...r.kernel.org>, <linux-kernel@...r.kernel.org>
CC:	Terje Bergstrom <tbergstrom@...dia.com>
Subject: [PATCHv4 0/8] Support for Tegra 2D hardware

This set of patches adds support for Tegra20 and Tegra30 host1x and
2D. It is based on linux-next-20121220.

The fourth version has only few changes compared to previous version:
 * Fixed some sparse warnings
 * Fixed host1x Makefile to allow building as module
 * Fixed host1x module unload
 * Fixed tegradrm unload sequence
 * host1x creates DRM dummy device and tegradrm uses it for storing
   DRM related data.

Some of the issues left open:
 * Register definitions still use static inline. There has been a
   debate about code style versus ability to use compiler type
   checking and code coverage analysis. There was no conclusion, so
   I left it as was.
 * Uses still CMA helpers. IOMMU support will replace CMA with host1x
   specific allocator.

host1x is the driver that controls host1x hardware. It supports
host1x command channels, synchronization, and memory management. It
is sectioned into logical driver under drivers/gpu/host1x and
physical driver under drivers/host1x/hw. The physical driver is
compiled with the hardware headers of the particular host1x version.

The hardware units are described (briefly) in the Tegra2 TRM. Wiki
page https://gitorious.org/linux-tegra-drm/pages/Host1xIntroduction
also contains a short description of the functionality.

The patch set removes responsibility of host1x from tegradrm. At the
same time, it moves all drm related infrastructure in
drivers/gpu/drm/tegra/host1x.c to drm.c. To replace the host1x
central device, host1x creates a dummy device for tegradrm to hang
global data to. This is a break in responsibility split of tegradrm
taking care of DRM and host1x driver taking care of host1x and
clients, but this structure was insisted. I've kept creation of dummy
device as a separate patch to illustrate the alternatives. It can be
later squashed into other patches.

The patch set adds 2D driver to tegradrm, which uses host1x for
communicating with host1x to access sync points and channels. We
expect to use the same infrastructure for other host1x clients, so
we have kept host1x and tegradrm separate.

The patch set also adds user space API to tegradrm for accessing
host1x and 2D.

Arto Merilainen (1):
  drm: tegra: Remove redundant host1x

Terje Bergstrom (7):
  gpu: host1x: Add host1x driver
  gpu: host1x: Add syncpoint wait and interrupts
  gpu: host1x: Add channel support
  gpu: host1x: Add debug support
  ARM: tegra: Add board data and 2D clocks
  drm: tegra: Add gr2d device
  gpu: host1x: Register DRM dummy device

 arch/arm/mach-tegra/board-dt-tegra20.c      |    1 +
 arch/arm/mach-tegra/board-dt-tegra30.c      |    1 +
 arch/arm/mach-tegra/tegra20_clocks_data.c   |    2 +-
 arch/arm/mach-tegra/tegra30_clocks_data.c   |    1 +
 drivers/gpu/Makefile                        |    1 +
 drivers/gpu/drm/tegra/Kconfig               |    2 +-
 drivers/gpu/drm/tegra/Makefile              |    2 +-
 drivers/gpu/drm/tegra/dc.c                  |   26 +-
 drivers/gpu/drm/tegra/drm.c                 |  433 ++++++++++++++++++-
 drivers/gpu/drm/tegra/drm.h                 |   72 ++--
 drivers/gpu/drm/tegra/fb.c                  |   17 +-
 drivers/gpu/drm/tegra/gr2d.c                |  309 ++++++++++++++
 drivers/gpu/drm/tegra/hdmi.c                |   30 +-
 drivers/gpu/drm/tegra/host1x.c              |  325 --------------
 drivers/gpu/host1x/Kconfig                  |   28 ++
 drivers/gpu/host1x/Makefile                 |   17 +
 drivers/gpu/host1x/cdma.c                   |  475 ++++++++++++++++++++
 drivers/gpu/host1x/cdma.h                   |  107 +++++
 drivers/gpu/host1x/channel.c                |  137 ++++++
 drivers/gpu/host1x/channel.h                |   64 +++
 drivers/gpu/host1x/cma.c                    |  117 +++++
 drivers/gpu/host1x/cma.h                    |   43 ++
 drivers/gpu/host1x/debug.c                  |  207 +++++++++
 drivers/gpu/host1x/debug.h                  |   49 +++
 drivers/gpu/host1x/dev.c                    |  242 +++++++++++
 drivers/gpu/host1x/dev.h                    |  167 ++++++++
 drivers/gpu/host1x/drm.c                    |   51 +++
 drivers/gpu/host1x/drm.h                    |   25 ++
 drivers/gpu/host1x/hw/Makefile              |    6 +
 drivers/gpu/host1x/hw/cdma_hw.c             |  480 +++++++++++++++++++++
 drivers/gpu/host1x/hw/cdma_hw.h             |   37 ++
 drivers/gpu/host1x/hw/channel_hw.c          |  147 +++++++
 drivers/gpu/host1x/hw/debug_hw.c            |  399 +++++++++++++++++
 drivers/gpu/host1x/hw/host1x01.c            |   46 ++
 drivers/gpu/host1x/hw/host1x01.h            |   25 ++
 drivers/gpu/host1x/hw/host1x01_hardware.h   |  150 +++++++
 drivers/gpu/host1x/hw/hw_host1x01_channel.h |   98 +++++
 drivers/gpu/host1x/hw/hw_host1x01_sync.h    |  179 ++++++++
 drivers/gpu/host1x/hw/hw_host1x01_uclass.h  |  130 ++++++
 drivers/gpu/host1x/hw/intr_hw.c             |  178 ++++++++
 drivers/gpu/host1x/hw/syncpt_hw.c           |  157 +++++++
 drivers/gpu/host1x/intr.c                   |  377 ++++++++++++++++
 drivers/gpu/host1x/intr.h                   |  106 +++++
 drivers/gpu/host1x/job.c                    |  618 +++++++++++++++++++++++++++
 drivers/gpu/host1x/memmgr.c                 |  174 ++++++++
 drivers/gpu/host1x/memmgr.h                 |   53 +++
 drivers/gpu/host1x/syncpt.c                 |  398 +++++++++++++++++
 drivers/gpu/host1x/syncpt.h                 |  134 ++++++
 drivers/video/Kconfig                       |    2 +
 include/drm/tegra_drm.h                     |  131 ++++++
 include/linux/host1x.h                      |  217 ++++++++++
 include/trace/events/host1x.h               |  296 +++++++++++++
 52 files changed, 7095 insertions(+), 394 deletions(-)
 create mode 100644 drivers/gpu/drm/tegra/gr2d.c
 delete mode 100644 drivers/gpu/drm/tegra/host1x.c
 create mode 100644 drivers/gpu/host1x/Kconfig
 create mode 100644 drivers/gpu/host1x/Makefile
 create mode 100644 drivers/gpu/host1x/cdma.c
 create mode 100644 drivers/gpu/host1x/cdma.h
 create mode 100644 drivers/gpu/host1x/channel.c
 create mode 100644 drivers/gpu/host1x/channel.h
 create mode 100644 drivers/gpu/host1x/cma.c
 create mode 100644 drivers/gpu/host1x/cma.h
 create mode 100644 drivers/gpu/host1x/debug.c
 create mode 100644 drivers/gpu/host1x/debug.h
 create mode 100644 drivers/gpu/host1x/dev.c
 create mode 100644 drivers/gpu/host1x/dev.h
 create mode 100644 drivers/gpu/host1x/drm.c
 create mode 100644 drivers/gpu/host1x/drm.h
 create mode 100644 drivers/gpu/host1x/hw/Makefile
 create mode 100644 drivers/gpu/host1x/hw/cdma_hw.c
 create mode 100644 drivers/gpu/host1x/hw/cdma_hw.h
 create mode 100644 drivers/gpu/host1x/hw/channel_hw.c
 create mode 100644 drivers/gpu/host1x/hw/debug_hw.c
 create mode 100644 drivers/gpu/host1x/hw/host1x01.c
 create mode 100644 drivers/gpu/host1x/hw/host1x01.h
 create mode 100644 drivers/gpu/host1x/hw/host1x01_hardware.h
 create mode 100644 drivers/gpu/host1x/hw/hw_host1x01_channel.h
 create mode 100644 drivers/gpu/host1x/hw/hw_host1x01_sync.h
 create mode 100644 drivers/gpu/host1x/hw/hw_host1x01_uclass.h
 create mode 100644 drivers/gpu/host1x/hw/intr_hw.c
 create mode 100644 drivers/gpu/host1x/hw/syncpt_hw.c
 create mode 100644 drivers/gpu/host1x/intr.c
 create mode 100644 drivers/gpu/host1x/intr.h
 create mode 100644 drivers/gpu/host1x/job.c
 create mode 100644 drivers/gpu/host1x/memmgr.c
 create mode 100644 drivers/gpu/host1x/memmgr.h
 create mode 100644 drivers/gpu/host1x/syncpt.c
 create mode 100644 drivers/gpu/host1x/syncpt.h
 create mode 100644 include/drm/tegra_drm.h
 create mode 100644 include/linux/host1x.h
 create mode 100644 include/trace/events/host1x.h

-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ