All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Terje Bergström" <tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
To: Thierry Reding
	<thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
Cc: "linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Arto Merilainen
	<amerilainen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH 1/6] video: tegra: Add nvhost driver
Date: Sat, 24 Nov 2012 09:00:20 +0200	[thread overview]
Message-ID: <50B07084.40707@nvidia.com> (raw)
In-Reply-To: <20121123233855.GD21555-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>

On 24.11.2012 01:38, Thierry Reding wrote:
> Okay, there's a huge amount of code here. From a quick look this seems
> like the whole nvhost implementation as found in the L4T kernel. It'll
> obviously take quite a bit of time to go through all of it.

Thanks Thierry for your comments.

It's actually about a third of of the downstream nvhost. I left out
support for all client modules, ioctl APIs, hardware context, nvmap
(obviously) and various other features.

But yes, the amount of code is still significant and I feel the pain,
too. I'm attempting to keep downstream and upstream nvhost as similar to
each other as possible so that we can port changes easily between the
two trees. In downstream kernel nvhost manages all its clients (except
DC only partially), so it's kept as its own driver. I'm hoping we'd end
up using tegradrm in downstream, and keeping nvhost as separate entity
is playing a role there.

If it helps, I could write up an essay on the structure of nvhost and
why it works that way. That should help in understanding some of the
design decisions in code.

> I would really like this to be phased in in more manageable chunks. For
> instance syncpoints could be added on top of the existing host1x
> infrastructure (the display controllers can make use of it for VBLANK
> reporting, right?), followed by channel support for command submission.
>
> While VBLANK reporting is already rudimentarily supported using the
> display controllers' VBLANK interrupts, adding syncpt based support
> should be easy to do.

Yep, vblank is a sync point register.

I attempted to tune the code down to only having syncpt support, but it
pulled in still enough (interrupts, syncpts, power management) that the
patch went down about 40% in size. I thought that as the staging didn't
bring really small parts, I deleted that attempt.

I could redo that if it helps. I guess removing dynamic power management
would be the first step, and channels the second. In review process,
they're anyway in separate files so I'm not sure about the benefits, though.

I'm not convinced about moving the code to live inside tegradrm. There's
really not that much host1x infrastructure in tegradrm's host1x.c that
we could leverage except binding device and driver and enabling and
disabling host1x clocks. Most of code in current host1x.c is dedicated
to managing the drm sub-clients, which anyway logically belong to drm.c.

To implement sync points in tegradrm, we'd need to re-implement syncpt
and interrupt support in tegradrm. That's a significant part of code,
and we already have code for that, so I'd like to leverage it as far as
possible.

> Last but not least, I'd really appreciate it if we could settle on one
> name for this component. One place calls it graphics host, another one
> refers to it as host1x and now we have an nvhost driver for it. The TRM
> isn't very consistent either, unfortunately, but a number of chapters
> refer to it as host1x and the clock that drives the block is also named
> host1x. Those are pretty much the reasons why I chose to call the DT
> node and the driver host1x and I would like to suggest we stay with it
> to keep things less confusing.

Graphics host and host1x are names for the hardware block. Graphics host
is an older name, host1x is the proper name.

nvhost is the driver for host1x and its client modules in downstream
kernel. The naming gets confusing in upstream kernel because of shared
responsibility of client modules. tegradrm's 2D driver is just glue
between tegradrm and nvhost.

host1x as the name of the driver wouldn't cover the fact that it's also
managing client modules.

I'll still try to figure out a way to clear up the naming, and
suggestions are welcome. :-)

Terje

  parent reply	other threads:[~2012-11-24  7:00 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-22  9:47 [PATCH 0/6] Support for Tegra 2D hardware Terje Bergstrom
     [not found] ` <1353577684-7896-1-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-22  9:47   ` [PATCH 1/6] video: tegra: Add nvhost driver Terje Bergstrom
     [not found]     ` <1353577684-7896-2-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-23 23:38       ` Thierry Reding
     [not found]         ` <20121123233855.GD21555-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-24  7:00           ` Terje Bergström [this message]
     [not found]             ` <50B07084.40707-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-24 19:04               ` Thierry Reding
     [not found]                 ` <20121124190416.GC26154-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-24 20:02                   ` Terje Bergström
2012-11-26  8:21                   ` Terje Bergström
     [not found]                     ` <50B32690.7020102-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-26  9:25                       ` Thierry Reding
     [not found]                         ` <20121126092524.GB8602-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-26  9:33                           ` Terje Bergström
2012-11-26 13:42                           ` Terje Bergström
2012-11-22  9:48   ` [PATCH 2/6] ARM: tegra: Add auxiliary data for nvhost Terje Bergstrom
     [not found]     ` <1353577684-7896-3-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-23 23:45       ` Thierry Reding
     [not found]         ` <20121123234527.GE21555-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-24  7:09           ` Terje Bergström
     [not found]             ` <50B07297.3090001-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-24 19:11               ` Thierry Reding
     [not found]                 ` <20121124191103.GD26154-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-26  9:40                   ` Terje Bergström
     [not found]                     ` <50B338F2.5060501-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-26 22:53                       ` Stephen Warren
2012-11-26 13:56                   ` Terje Bergström
2012-11-22  9:48   ` [PATCH 3/6] gpu: drm: tegra: Remove redundant host1x Terje Bergstrom
     [not found]     ` <1353577684-7896-4-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-23 23:19       ` Thierry Reding
2012-11-22  9:48   ` [PATCH 4/6] gpu: drm: tegra: Free platform data on remove Terje Bergstrom
     [not found]     ` <1353577684-7896-5-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-23 21:53       ` Thierry Reding
     [not found]         ` <20121123215305.GA21555-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-26  7:33           ` Arto Merilainen
2012-11-22  9:48   ` [PATCH 5/6] gpu: drm: tegra: Prime support Terje Bergstrom
     [not found]     ` <1353577684-7896-6-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-23 21:55       ` Thierry Reding
     [not found]         ` <20121123215528.GB21555-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-24  7:11           ` Terje Bergström
     [not found]             ` <50B0733D.4040002-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-24 19:14               ` Thierry Reding
     [not found]                 ` <20121124191445.GE26154-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-24 19:59                   ` Terje Bergström
     [not found]                     ` <50B12724.7020503-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-26  7:33                       ` Arto Merilainen
     [not found]                         ` <7DC9167CA73B39468DFA1D07FF67A6A85150E61DDB-LZBqo6t42cZDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-11-26  9:30                           ` Terje Bergström
2012-11-22  9:48   ` [PATCH 6/6] drm: tegra: Add gr2d device Terje Bergstrom
  -- strict thread matches above, loose matches on Subject: below --
2012-11-22 12:16 [PATCH 0/6] Support for Tegra 2D hardware Terje Bergstrom
     [not found] ` <1353586614-7308-1-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-22 12:16   ` [PATCH 1/6] video: tegra: Add nvhost driver Terje Bergstrom
     [not found]     ` <1353586614-7308-2-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-23 12:39       ` Sivaram Nair
2012-11-26  9:23         ` Terje Bergström
2012-11-26 22:59         ` Stephen Warren
2012-11-23 15:29       ` Thierry Reding
     [not found]         ` <20121123152926.GA20046-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-23 15:43           ` Terje Bergström

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50B07084.40707@nvidia.com \
    --to=tbergstrom-ddmlm1+adcrqt0dzr+alfa@public.gmane.org \
    --cc=amerilainen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.