From: Ben Widawsky <benjamin.widawsky@intel.com>
To: Intel GFX <intel-gfx@lists.freedesktop.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
Ben Widawsky <benjamin.widawsky@intel.com>
Subject: [PATCH 00/62] Broadwell kernel driver support
Date: Sat, 2 Nov 2013 21:06:58 -0700 [thread overview]
Message-ID: <1383451680-11173-1-git-send-email-benjamin.widawsky@intel.com> (raw)
It is my honor and privilege to submit basic Broadwell support on behalf
of Intel.
The patch series includes support for Broadwell which should bring it up
to feature parity with Haswell. As you'll note, the patches have
received some revisions and review already. This is due to our new
process (more on this below). We will be rolling out the new Broadwell
goodness over time.
Broadwell represents the next generation (GEN8) in Intel graphics
processing hardware. Broadwell graphics bring some of the biggest
changes we've seen on the execution and memory management side of the
GPU. (There are equally large and exciting changes for the userspace
drivers.)
My request to reviewers is: I haven't touched these much at all since
submitting to the internal mailing list. Most changes are due to rebase.
Try to keep bikesheds to a minimum. We want to try to get this code in
the 3.13 kernel, so we have a nice base to actually stabilize and
improve features for the 3.14 release. Remember, we have that handy
'preliminary hardware support' to allow people to opt-in to this early
enabling code. So I'm shooting for stable "end-userable" BDW code in
3.14.
Note that the last few workarounds likely won't be needed, but I think
we can include them until we know for sure otherwise.
Aside from the usual set of things we need to update when simply
enabling a new platform, What follows are some of the major changes from
HSW->BDW:
* There is no longer a forcewake write FIFO. *Most* writes must explicitly
wake the GPU.
* Interrupt registers have been completely reorganized.
* PTEs format and cachability settings have changed to more resemble x86
PTEs, and PAT
* Address space increases, and as such many commands require changing
* Page table structures have changed for the Per Process GTT. The new
structure more resembles traditional page tables with registers defining
page directory base.
The latter two changes were the real challenge in enabling the platform
and getting things to actually work - though in hindsight, they seem so
trivial :-)
You may find these patches here:
http://cgit.freedesktop.org/~bwidawsk/drm-intel/log/?h=broadwell
I'll be posting patches for libdrm, and intel-gpu-tools in the next day
or two. They are also ready to go, I just need to do a quick once over.
At this point, feel free to stop reading.
I wanted to talk a bit about some of the changes on the development side
which are enabling us to get code out way before silicon ships. Again,
I'd like to point out that the amount of changes on BDW dwarfs any other
silicon iteration during my tenure, and certainly can compete with the
likes of the gen3->gen4 changes.
Broadwell development for the i915 driver began last November, 2012.
With the help of some awesome people we managed to enable a simulation
environment for Linux graphics development. While this was not the first
time the OTC teams had used simulation for development, it did mark the
first time we were using it to simulate and run the entire software
stack and model most of the HW. The previous use of simulation really
didn't provide anything useful for the kernel driver, and faked enough
of the relevant user space interactions to cause some worry.
Another new process was the invention and usage of an internal mailing
list, where we could talk about, and review code that we did not yet
have permission to open source.
Sometime around mid December, we had code which could run glxgears. The
magic is really what happened after. For the last 10 months (give or
take), Daniel Vetter has been maintaining our internal repository for
development. Providing continuous rebases on the very fast based
upstream tree (and less rapid internal development). In addition, we've
gotten support from our QA team to test our code internally on the
simulator. We've even gotten other groups in Intel (outside of OTC) to
contribute to all parts of the stack.
For the foreseeable future, all future platforms will follow this same
enabling procedure that allows us to get better, more stable code, well
before silicon ships. The goal is to get stable drivers in the kernel
release that coincides with the time silicon ships.
As such, a quick thanks:
* Daniel Vetter, for the incredible job he did on maintaining our
internal repository.
* Chris Wilson, for getting me a mostly functional DDX within days of a
working kernel - for that oh so cool glxgears screenshot.
* Ken Graunke, for actually making mesa work with the absurd amount of
changes on the EUs. (and therefore, also enabling said screenshot).
* The Intel internal simulation team, for helping to provide us the
necessary tools to make it all happen.
* The Intel [Windows] graphics team, for providing support, and easing
the process for open source approval
Art Runyan (1):
drm/i915/bdw: Add BDW DDI buffer translation values
Ben Widawsky (44):
drm/i915/bdw: IS_GEN8 definition
drm/i915/bdw: Handle forcewake for writes on gen8
drm/i915/bdw: Add device IDs
drm/i915/bdw: Fences on gen8 look just like gen7
drm/i915/bdw: Swizzling support
drm/i915/bdw: HW context support
drm/i915/bdw: Clock gating init
drm/i915/bdw: display stuff
drm/i915/bdw: support GMS and GGMS changes
drm/i915/bdw: Implement interrupt changes
drm/i915/bdw: Add interrupt info to debugfs
drm/i915/bdw: Support 64b relocations
drm/i915/bdw: dispatch updates (64b related)
drm/i915/bdw: Update MI_FLUSH_DW
drm/i915/bdw: debugfs updates
drm/i915/bdw: Update relevant error state
drm/i915/bdw: Make gen8_gmch_probe
drm/i915/bdw: Create gen8_gtt_pte_t
drm/i915/bdw: Add GTT functions
drm/i915/bdw: Support BDW caching
drm/i915/bdw: Implement Full Force Miss disables
drm/i915/bdw: PPGTT init & cleanup
drm/i915/bdw: Initialize the PDEs
drm/i915/bdw: Implement PPGTT clear range
drm/i915/bdw: Implement PPGTT insert
drm/i915/bdw: Implement PPGTT enable
drm/i915/bdw: unleash PPGTT
drm/i915/bdw: Render ring flushing
drm/i915/bdw: BSD init for gen8 also
drm/i915/bdw: ppgtt info in debugfs
drm/i915/bdw: Implement WaSwitchSolVfFArbitrationPriority
drm/i915/bdw: Use The GT mailbox for IPS enable/disable
drm/i915/bdw: Support eDP PSR
drm/i915/bdw: Use HSW formula for ring freq scaling
drm/i915/bdw: Don't wait for c0 threads on forcewake
drm/i915/bdw: Create a separate BDW rps enable
drm/i915/bdw: Disable semaphores
drm/i915/bdw: Implement edp PSR workarounds
drm/i915/bdw: BWGTLB clock gate disable
drm/i915/bdw: Disable centroid pixel perf optimization
drm/i915/bdw: Sampler power bypass disable
drm/i915/bdw: Limit SDE poly depth FIFO to 2
drm/i915/bdw: conservative SBE VUE cache mode
drm/i915/bdw: WaSingleSubspanDispatchOnAALinesAndPoints
Damien Lespiau (2):
drm/i915/bdw: Broadwell has 3 pipes
drm/i915/bdw: Broadwell has a max port clock of 300Mhz on HDMI
Daniel Vetter (1):
drm/i915/bdw: Disable PPGTT for now
Paulo Zanoni (11):
drm/i915/bdw: add IS_BROADWELL macro
drm/i915/bdw: add Broadwell sprite/plane/cursor checks
drm/i915/bdw: Broadwell also has the "power down well"
drm/i915/bdw: pretend we have LPT LP on Broadwell
drm/i915/bdw: get the correct LCPLL frequency on Broadwell
drm/i915/bdw: on Broadwell, the panel fitter is on the pipe
drm/i915/bdw: Broadwell has PIPEMISC
drm/i915/bdw: add BDW DDI buf translations for eDP
drm/i915/bdw: add support for BDW DP voltage swings and pre-emphasis
drm/i915/bdw: BDW also has only 2 FDI lanes
drm/i915/bdw: check DPD on port D when setting the DDI buffers
Ville Syrjälä (3):
drm/i915/bdw: Don't muck with gtt_size on Gen8 when PPGTT setup fails
drm/i915/bdw: Use pipe CSC on Broadwell
drm/i915/bdw: Add Broadwell display FIFO limits
arch/x86/kernel/early-quirks.c | 12 +
drivers/gpu/drm/i915/i915_debugfs.c | 109 ++++++-
drivers/gpu/drm/i915/i915_drv.c | 34 +-
drivers/gpu/drm/i915/i915_drv.h | 36 ++-
drivers/gpu/drm/i915/i915_gem.c | 3 +
drivers/gpu/drm/i915/i915_gem_context.c | 3 +
drivers/gpu/drm/i915/i915_gem_execbuffer.c | 35 +-
drivers/gpu/drm/i915/i915_gem_gtt.c | 500 +++++++++++++++++++++++++++--
drivers/gpu/drm/i915/i915_gpu_error.c | 2 +
drivers/gpu/drm/i915/i915_irq.c | 327 +++++++++++++++++++
drivers/gpu/drm/i915/i915_reg.h | 117 ++++++-
drivers/gpu/drm/i915/intel_ddi.c | 126 ++++++--
drivers/gpu/drm/i915/intel_display.c | 80 ++++-
drivers/gpu/drm/i915/intel_dp.c | 55 +++-
drivers/gpu/drm/i915/intel_hdmi.c | 2 +-
drivers/gpu/drm/i915/intel_pm.c | 168 +++++++++-
drivers/gpu/drm/i915/intel_ringbuffer.c | 187 ++++++++++-
drivers/gpu/drm/i915/intel_sprite.c | 5 +-
drivers/gpu/drm/i915/intel_uncore.c | 56 +++-
include/drm/i915_drm.h | 4 +
include/drm/i915_pciids.h | 27 ++
21 files changed, 1771 insertions(+), 117 deletions(-)
--
1.8.4.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next reply other threads:[~2013-11-03 4:08 UTC|newest]
Thread overview: 145+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-03 4:06 Ben Widawsky [this message]
2013-11-03 4:06 ` [PATCH 01/62] drm/i915/bdw: IS_GEN8 definition Ben Widawsky
2013-11-03 4:07 ` [PATCH 02/62] drm/i915/bdw: Handle forcewake for writes on gen8 Ben Widawsky
2013-11-04 14:19 ` Chris Wilson
2013-11-05 9:24 ` Mika Kuoppala
2013-11-03 4:07 ` [PATCH 03/62] drm/i915/bdw: Disable PPGTT for now Ben Widawsky
2013-11-04 14:44 ` Chris Wilson
2013-11-03 4:07 ` [PATCH 04/62] drm/i915/bdw: Add device IDs Ben Widawsky
2013-11-03 21:58 ` Chris Wilson
2013-11-04 0:36 ` [PATCH 04/62] [v6] " Ben Widawsky
2013-11-04 14:49 ` Chris Wilson
2013-11-04 15:49 ` Daniel Vetter
2013-11-04 16:04 ` Chris Wilson
2013-11-04 16:56 ` Ben Widawsky
2013-11-04 0:43 ` [PATCH 04/62] " Ben Widawsky
2013-11-04 0:47 ` [PATCH 04/62] [v7] " Ben Widawsky
2013-11-05 14:45 ` Mika Kuoppala
2013-11-03 4:07 ` [PATCH 05/62] drm/i915/bdw: Fences on gen8 look just like gen7 Ben Widawsky
2013-11-03 4:07 ` [PATCH 06/62] drm/i915/bdw: Swizzling support Ben Widawsky
2013-11-05 9:59 ` Mika Kuoppala
2013-11-03 4:07 ` [PATCH 07/62] drm/i915/bdw: HW context support Ben Widawsky
2013-11-03 4:07 ` [PATCH 08/62] drm/i915/bdw: Clock gating init Ben Widawsky
2013-11-03 4:07 ` [PATCH 09/62] drm/i915/bdw: display stuff Ben Widawsky
2013-11-06 8:13 ` Daniel Vetter
2013-11-03 4:07 ` [PATCH 10/62] drm/i915/bdw: support GMS and GGMS changes Ben Widawsky
2013-11-04 0:53 ` [PATCH 10/62] [v5] " Ben Widawsky
2013-11-03 4:07 ` [PATCH 11/62] drm/i915/bdw: Implement interrupt changes Ben Widawsky
2013-11-06 8:39 ` Daniel Vetter
2013-11-03 4:07 ` [PATCH 12/62] drm/i915/bdw: Add interrupt info to debugfs Ben Widawsky
2013-11-03 4:07 ` [PATCH 13/62] drm/i915/bdw: Support 64b relocations Ben Widawsky
2013-11-03 4:07 ` [PATCH 14/62] drm/i915/bdw: dispatch updates (64b related) Ben Widawsky
2013-11-05 15:50 ` Paulo Zanoni
2013-11-03 4:07 ` [PATCH 15/62] drm/i915/bdw: Update MI_FLUSH_DW Ben Widawsky
2013-11-03 4:07 ` [PATCH 16/62] drm/i915/bdw: debugfs updates Ben Widawsky
2013-11-04 14:28 ` Chris Wilson
2013-11-05 3:03 ` Ben Widawsky
2013-11-05 16:40 ` Paulo Zanoni
2013-11-03 4:07 ` [PATCH 17/62] drm/i915/bdw: Update relevant error state Ben Widawsky
2013-11-05 17:03 ` Paulo Zanoni
2013-11-03 4:07 ` [PATCH 18/62] drm/i915/bdw: Make gen8_gmch_probe Ben Widawsky
2013-11-04 22:01 ` Imre Deak
2013-11-05 3:32 ` [PATCH 18/62] [v6] " Ben Widawsky
2013-11-03 4:07 ` [PATCH 19/62] drm/i915/bdw: Create gen8_gtt_pte_t Ben Widawsky
2013-11-04 14:36 ` Chris Wilson
2013-11-04 22:03 ` Imre Deak
2013-11-03 4:07 ` [PATCH 20/62] drm/i915/bdw: Add GTT functions Ben Widawsky
2013-11-04 22:22 ` Imre Deak
2013-11-06 8:28 ` Bloomfield, Jon
2013-11-03 4:07 ` [PATCH 21/62] drm/i915/bdw: Support BDW caching Ben Widawsky
2013-11-04 14:39 ` Chris Wilson
2013-11-05 3:56 ` [PATCH 21/62] [v4] " Ben Widawsky
2013-11-05 15:19 ` [PATCH 21/62] " Imre Deak
2013-11-03 4:07 ` [PATCH 22/62] drm/i915/bdw: Implement Full Force Miss disables Ben Widawsky
2013-11-05 15:41 ` Imre Deak
2013-11-05 16:17 ` Daniel Vetter
2013-11-06 9:33 ` Daniel Vetter
2013-11-03 4:07 ` [PATCH 23/62] drm/i915/bdw: PPGTT init & cleanup Ben Widawsky
2013-11-04 14:58 ` Imre Deak
2013-11-05 4:47 ` [PATCH] " Ben Widawsky
2013-11-03 4:07 ` [PATCH 24/62] drm/i915/bdw: Initialize the PDEs Ben Widawsky
2013-11-04 14:10 ` Damien Lespiau
2013-11-05 5:20 ` [PATCH 24/62] [v3] " Ben Widawsky
2013-11-03 4:07 ` [PATCH 25/62] drm/i915/bdw: Implement PPGTT clear range Ben Widawsky
2013-11-03 4:07 ` [PATCH 26/62] drm/i915/bdw: Implement PPGTT insert Ben Widawsky
2013-11-03 4:07 ` [PATCH 27/62] drm/i915/bdw: Implement PPGTT enable Ben Widawsky
2013-11-04 14:47 ` Damien Lespiau
2013-11-05 6:29 ` [PATCH 27/62] [v7] " Ben Widawsky
2013-11-03 4:07 ` [PATCH 28/62] drm/i915/bdw: unleash PPGTT Ben Widawsky
2013-11-03 4:07 ` [PATCH 29/62] drm/i915/bdw: Render ring flushing Ben Widawsky
2013-11-03 4:07 ` [PATCH 30/62] drm/i915/bdw: BSD init for gen8 also Ben Widawsky
2013-11-03 4:07 ` [PATCH 31/62] drm/i915/bdw: Don't muck with gtt_size on Gen8 when PPGTT setup fails Ben Widawsky
2013-11-03 4:07 ` [PATCH 32/62] drm/i915/bdw: ppgtt info in debugfs Ben Widawsky
2013-11-03 4:07 ` [PATCH 33/62] drm/i915/bdw: add IS_BROADWELL macro Ben Widawsky
2013-11-03 4:07 ` [PATCH 34/62] drm/i915/bdw: Broadwell has 3 pipes Ben Widawsky
2013-11-03 4:07 ` [PATCH 35/62] drm/i915/bdw: add Broadwell sprite/plane/cursor checks Ben Widawsky
2013-11-03 4:07 ` [PATCH 36/62] drm/i915/bdw: Broadwell also has the "power down well" Ben Widawsky
2013-11-03 11:05 ` Ville Syrjälä
2013-11-03 11:24 ` Daniel Vetter
2013-11-03 11:25 ` Ville Syrjälä
2013-11-03 4:07 ` [PATCH 37/62] drm/i915/bdw: pretend we have LPT LP on Broadwell Ben Widawsky
2013-11-03 11:19 ` Ville Syrjälä
2013-11-03 4:07 ` [PATCH 38/62] drm/i915/bdw: get the correct LCPLL frequency " Ben Widawsky
2013-11-03 11:07 ` Ville Syrjälä
2013-11-03 4:07 ` [PATCH 39/62] drm/i915/bdw: on Broadwell, the panel fitter is on the pipe Ben Widawsky
2013-11-03 11:19 ` Ville Syrjälä
2013-11-03 4:07 ` [PATCH 40/62] drm/i915/bdw: Broadwell has PIPEMISC Ben Widawsky
2013-11-03 11:11 ` Ville Syrjälä
2013-11-03 4:07 ` [PATCH 41/62] drm/i915/bdw: Use pipe CSC on Broadwell Ben Widawsky
2013-11-03 4:07 ` [PATCH 42/62] drm/i915/bdw: Implement WaSwitchSolVfFArbitrationPriority Ben Widawsky
2013-11-03 11:07 ` Ville Syrjälä
2013-11-03 17:44 ` Ben Widawsky
2013-11-04 14:23 ` Ville Syrjälä
2013-11-03 4:07 ` [PATCH 43/62] drm/i915/bdw: Add BDW DDI buffer translation values Ben Widawsky
2013-11-04 23:59 ` Ben Widawsky
2013-11-03 4:07 ` [PATCH 44/62] drm/i915/bdw: add BDW DDI buf translations for eDP Ben Widawsky
2013-11-05 0:09 ` Ben Widawsky
2013-11-03 4:07 ` [PATCH 45/62] drm/i915/bdw: add support for BDW DP voltage swings and pre-emphasis Ben Widawsky
2013-11-05 0:45 ` Ben Widawsky
2013-11-05 13:01 ` Paulo Zanoni
2013-11-06 3:15 ` Todd Previte
2013-11-03 4:07 ` [PATCH 46/62] drm/i915/bdw: BDW also has only 2 FDI lanes Ben Widawsky
2013-11-03 4:07 ` [PATCH 47/62] drm/i915/bdw: check DPD on port D when setting the DDI buffers Ben Widawsky
2013-11-05 0:46 ` Ben Widawsky
2013-11-03 4:07 ` [PATCH 48/62] drm/i915/bdw: Add Broadwell display FIFO limits Ben Widawsky
2013-11-04 9:39 ` Jani Nikula
2013-11-04 13:59 ` Ville Syrjälä
2013-11-03 4:07 ` [PATCH 49/62] drm/i915/bdw: Use The GT mailbox for IPS enable/disable Ben Widawsky
2013-11-04 10:15 ` Jani Nikula
2013-11-03 4:07 ` [PATCH 50/62] drm/i915/bdw: Support eDP PSR Ben Widawsky
2013-11-04 10:34 ` Jani Nikula
2013-11-05 6:45 ` [PATCH 50/62] [v5] " Ben Widawsky
2014-03-04 9:31 ` Kumar, Kiran S
2014-03-05 6:31 ` Ben Widawsky
2013-11-03 4:07 ` [PATCH 51/62] drm/i915/bdw: Use HSW formula for ring freq scaling Ben Widawsky
2013-11-06 13:34 ` Daniel Vetter
2013-11-03 4:07 ` [PATCH 52/62] drm/i915/bdw: Don't wait for c0 threads on forcewake Ben Widawsky
2013-11-04 13:47 ` Jani Nikula
2013-11-03 4:07 ` [PATCH 53/62] drm/i915/bdw: Broadwell has a max port clock of 300Mhz on HDMI Ben Widawsky
2013-11-04 13:33 ` Jani Nikula
2013-11-03 4:07 ` [PATCH 54/62] drm/i915/bdw: Create a separate BDW rps enable Ben Widawsky
2013-11-04 21:04 ` Jesse Barnes
2013-11-03 4:07 ` [PATCH 55/62] drm/i915/bdw: Disable semaphores Ben Widawsky
2013-11-04 18:18 ` Jesse Barnes
2013-11-05 3:45 ` [PATCH 55/62] [v2] " Ben Widawsky
2013-11-03 4:07 ` [PATCH 56/62] drm/i915/bdw: Implement edp PSR workarounds Ben Widawsky
2013-11-05 17:19 ` Jesse Barnes
2013-11-06 15:44 ` Daniel Vetter
2013-11-03 4:07 ` [PATCH 57/62] drm/i915/bdw: BWGTLB clock gate disable Ben Widawsky
2013-11-05 17:22 ` Jesse Barnes
2013-11-03 4:07 ` [PATCH 58/62] drm/i915/bdw: Disable centroid pixel perf optimization Ben Widawsky
2013-11-04 13:20 ` Paulo Zanoni
2013-11-05 6:52 ` [PATCH] " Ben Widawsky
2013-11-05 17:24 ` Jesse Barnes
2013-11-03 4:07 ` [PATCH 59/62] drm/i915/bdw: Sampler power bypass disable Ben Widawsky
2013-11-03 4:07 ` [PATCH 60/62] drm/i915/bdw: Limit SDE poly depth FIFO to 2 Ben Widawsky
2013-11-03 4:07 ` [PATCH 61/62] drm/i915/bdw: conservative SBE VUE cache mode Ben Widawsky
2013-11-03 4:08 ` [PATCH 62/62] drm/i915/bdw: WaSingleSubspanDispatchOnAALinesAndPoints Ben Widawsky
2013-11-03 8:45 ` [PATCH 00/62] Broadwell kernel driver support Daniel Vetter
2013-11-04 14:15 ` Jani Nikula
2013-11-04 15:04 ` Damien Lespiau
2013-11-05 15:14 ` Daniel Vetter
2013-11-05 15:54 ` Imre Deak
2013-11-03 11:47 ` [PATCH 63/62] drm/i915/bdw: Enable trickle feed on Broadwell ville.syrjala
2013-11-04 15:05 ` Damien Lespiau
2013-11-05 7:11 ` [PATCH 64/62] drm/i915/bdw: Change dp aux timeout to 600us on DDIA Ben Widawsky
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=1383451680-11173-1-git-send-email-benjamin.widawsky@intel.com \
--to=benjamin.widawsky@intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox