Junwei Zhang
bbf0b34578
drm/amdgpu: remove the unnecessary parameter adev for amdgpu_sa_bo_new()
...
Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-11-16 17:01:32 -05:00
Christian König
680513cc0a
drm/amdgpu: wait interruptible when semaphores are disabled v2
...
Otherwise debugging locked up processes isn't possible.
v2: rebased
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com > (v1)
2015-11-16 17:01:15 -05:00
Nicolas Pitre
c24ca5be76
drm/mgag200/mgag200_mode.c: fix wrong do_div() usage
...
do_div() is meant to be used with an unsigned dividend.
Signed-off-by: Nicolas Pitre <nico@linaro.org >
2015-11-16 12:39:55 -05:00
Nicolas Pitre
8cb87c0407
nouveau/nvkm/subdev/clk/gk20a.c: fix wrong do_div() usage
...
do_div() must only be used with a u64 dividend.
Signed-off-by: Nicolas Pitre <nico@linaro.org >
2015-11-16 12:37:54 -05:00
Chunming Zhou
43c27fb5c2
drm/amdgpu: update pd while updating vm as well
...
Change-Id: I93a861cd6707f7d91672b9e19757cc50008cd7a2
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-11-16 11:06:00 -05:00
Christian König
5d82730af7
drm/amdgpu: fix handling order in scheduler CS
...
We need to clear parser.ibs and num_ibs before amd_sched_fence_create,
otherwise the IB could be freed twice if fence creates fails.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-11-16 11:05:59 -05:00
Christian König
e284022163
drm/amdgpu: fix incorrect mutex usage v3
...
Before this patch the scheduler fence was created when we push the job
into the queue, so we could only get the fence after pushing it.
The mutex now was necessary to prevent the thread pushing the jobs to
the hardware from running faster than the thread pushing the jobs into
the queue.
Otherwise the thread pushing jobs into the queue would have accessed
possible freed up memory when it tries to get a reference to the fence.
So what you get in the end is thread A:
mutex_lock(&job->lock);
...
Kick of thread B.
...
mutex_unlock(&job->lock);
And thread B:
mutex_lock(&job->lock);
....
mutex_unlock(&job->lock);
kfree(job);
I'm actually not sure if I'm still up to date on this, but this usage
pattern used to be not allowed with mutexes. See here as well
https://lwn.net/Articles/575460/ .
v2: remove unrelated changes, fix missing owner
v3: rebased, add more commit message
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:58 -05:00
Christian König
4a56228337
drm/amdgpu: cleanup scheduler fence get/put dance
...
The code was correct, but getting two references when the ownership
is linearly moved on is a bit awkward and just overhead.
Signed: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:58 -05:00
Chunming Zhou
7034decf6a
drm/amdgpu: add command submission workflow tracepoint
...
OGL needs these tracepoints to investigate performance issue.
Change-Id: I5e58187d061253f7d665dfce8e4e163ba91d3e2b
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com >
2015-11-16 11:05:57 -05:00
Flora Cui
5f2e816b29
drm/amdgpu: update Fiji's tiling mode table
...
Change-Id: I925c15015390113f7e27746ec5751eaa6a92c2a7
Signed-off-by: Flora Cui <Flora.Cui@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:56 -05:00
Rex Zhu
c305fd5fff
drm/amdgpu: fix bug that can't enter thermal interrupt for bonaire.
...
Set reversed bit to enable/disable thermal interrupt.
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-11-16 11:05:56 -05:00
Arnd Bergmann
e1b35f6103
drm/amdgpu: fix seq_printf format string
...
The amdgpu driver has a debugfs interface that shows the amount of
VRAM in use, but the newly added code causes a build error on
all 32-bit architectures:
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:1076:17: warning: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'long long int' [-Wformat=]
This fixes the format string to use "%llu" for printing 64-bit
numbers, which works everywhere, as long as we also cast to 'u64'.
Unlike atomic64_t, u64 is defined as 'unsigned long long' on
all architectures.
Signed-off-by: Arnd Bergmann <arnd@arndb.de >
Fixes: a2ef8a9749 ("drm/amdgpu: add vram usage into debugfs")
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:55 -05:00
Maxim Sheviakov
515c752dab
drm/radeon: fix quirk for MSI R7 370 Armor 2X
...
There was a typo in the original.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=92865
Signed-off-by: Maxim Sheviakov <mrader3940@yandex.ru >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:54 -05:00
Jay Cornwall
a80b30476d
drm/amdgpu: Fix default page access routing
...
The VM default page (used when a VM translation fails) is allocated in
system memory. The VM is misconfigured to interpret the physical address
as referencing a VRAM physical page.
Route default page accesses to system memory.
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Jay Cornwall <jay@jcornwall.me >
Cc: <stable@vger.kernel.org > # v4.2+
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:53 -05:00
Alex Deucher
24dd2f64c5
drm/radeon: unconditionally set sysfs_initialized
...
Avoids spew on resume for systems where sysfs may
fail even on init.
bug:
https://bugzilla.kernel.org/show_bug.cgi?id=106851
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-11-16 11:05:53 -05:00
Christian König
7e52a81c2f
drm/amdgpu: cleanup amdgpu_cs_parser handling
...
No need any more to allocate that structure dynamically, just put it on the
stack. This is a start to cleanup some of the scheduler fallouts.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:52 -05:00
Christian König
e4a58a28b5
drm/amdgpu: fix leaking the IBs on error
...
Fixing a memory leak when the scheduler is enabled.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:51 -05:00
Chunming Zhou
f5617f9dde
drm/amd: add kmem cache for sched fence
...
Change-Id: I45bb8ff10ef05dc3b15e31a77fbcf31117705f11
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-11-16 11:05:51 -05:00
Chunming Zhou
b49c84a576
drm/amdgpu: add kmem cache for amdgpu fence
...
Change-Id: I5ad8dd156ccf27a6f18004aa0a215a0925b6e67b
Signed-off-by: Chunming Zhou <David1.Zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
2015-11-16 11:05:50 -05:00
Flora Cui
451f698bca
drm/amdgpu: update fiji_mgcg_cgcg_init table
...
Change-Id: If44b8057741c78208f1976f60f31b535c944d0bd
Signed-off-by: Flora Cui <Flora.Cui@amd.com >
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com >
2015-11-16 11:05:49 -05:00
Christian König
16ae42feb0
drm/amdgpu: use common fence for amdgpu_vm_fence
...
Just cleanup the function parameters.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:49 -05:00
Christian König
b56c22853e
drm/amdgpu: use fence_is_later() for vm_flush as well v2
...
v2: remove superfluous check
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com > (v1)
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
2015-11-16 11:05:48 -05:00
Christian König
c2776afe74
drm/amdgpu: use a timer for fence fallback
...
Less overhead than a work item and also adds proper cleanup handling.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:47 -05:00
Christian König
935c186aae
drm/amdgpu: remove fence trace points
...
Mostly unused and replaced by the common trace points.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:46 -05:00
Flora Cui
fa6760482b
drm/amdgpu: update Fiji's mmPA_SC_RASTER_CONFIG value
...
Change-Id: I6d138306a878450e5bf8a77a2f1aacc380a39fe5
Signed-off-by: Flora Cui <Flora.Cui@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:46 -05:00
Michel Dänzer
938204985c
drm/radeon: Only prompt for enabling PAT when we'd allow write-combining
...
No use bothering users about this for whom we disable write-combining for
other reasons anyway.
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:45 -05:00
Michel Dänzer
a28bbd5824
drm/radeon: Always disable RADEON_GEM_GTT_UC along with RADEON_GEM_GTT_WC
...
Write-combining is a CPU feature. From the GPU POV, these both simply
mean no GPU<->CPU cache coherency.
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:44 -05:00
Michel Dänzer
96ea47c0ec
drm/radeon: Disable uncacheable CPU mappings of GTT with RV6xx
...
They reportedly cause random GPU hangs.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91268
Reviewed-by: Christian König <christian.koenig@amd.com >
Cc: stable@vger.kernel.org
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-11-16 11:05:43 -05:00
Ville Syrjälä
1f38089cb7
drm/i915: Model PSR AUX register selection more like the normal AUX code
...
v2: Split up the ctl vs. data reg handling like in the normal AUX code
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
Link: http://patchwork.freedesktop.org/patch/msgid/1447266856-30249-8-git-send-email-ville.syrjala@linux.intel.com
2015-11-16 16:01:31 +02:00
Ville Syrjälä
443a389f43
drm/i915: Add dev_priv->psr_mmio_base
...
Drop the EDP_PSR_BASE() thing, and just stick the PSR register offset
under dev_priv, like we for DSI and GPIO for example.
TODO: could probably move a bunch of this kind of stuff into the device
info instead...
v2: Drop the spurious whitespace change (Jani)
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1447266856-30249-7-git-send-email-ville.syrjala@linux.intel.com
2015-11-16 16:01:30 +02:00
Ville Syrjälä
330e20ec77
drm/i915: Store aux data reg offsets in intel_dp->aux_ch_data_reg[]
...
Rather than computing on demand, store also the aux data reg
offsets under intel_dp.
v2: Duplicate some code to make things less magic (Jani)
v3: Use PORT_B registers for invalid ports in g4x_aux_data_reg()
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
Link: http://patchwork.freedesktop.org/patch/msgid/1447266856-30249-6-git-send-email-ville.syrjala@linux.intel.com
2015-11-16 16:01:06 +02:00
Ville Syrjälä
da00bdcfb2
drm/i915: Remove the magic AUX_CTL is at DP + foo tricks
...
Currently we determine the location of the AUX registers in a confusing
way. First we assume the PCH registers are used always, but then we
override it for everything but HSW/BDW to use DP+0x10. Very confusing.
Let's just make it straightforward and simply add a few functions to
pick the right AUX_CTL based on the DP port.
To deal with VLV/CHV we'll include the display_mmio_offset into the
AUX register defines.
v2: Reorder patches (Chris)
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk > (v1)
Link: http://patchwork.freedesktop.org/patch/msgid/1447266856-30249-5-git-send-email-ville.syrjala@linux.intel.com
2015-11-16 16:00:34 +02:00
Ville Syrjälä
750a951fd3
drm/i915: Parametrize AUX registers
...
v2: Keep some MISSING_CASE() stuff (Jani)
s/-1/-PIPE_B/ in the register macro
Fix typo in patch subject
v3: Use PORT_B registers for invalid ports in g4x_aux_ctl_reg() (Jani)
v4: Reorder patches (Chris)
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Jani Nikula <jani.nikula@intel.com > (v3)
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk > (v3)
Link: http://patchwork.freedesktop.org/patch/msgid/1447266856-30249-4-git-send-email-ville.syrjala@linux.intel.com
2015-11-16 16:00:14 +02:00
Ville Syrjälä
a121f4e5fa
drm/i915: Replace the aux ddc name switch statement with kasprintf()
...
Use kasprintf() to generate the "DPDDC-<port>" name for the aux helper.
To deal with errors properly make intel_dp_aux_init() return something,
and adjust the caller to match. It seems we were also missing a
intel_dp_mst_encoder_cleanup() call on edp (non-port A) init failures,
so add that too.
The whole error/cleanup ordering doesn't feel entirely sane to me, but
I'll leave that part alone for now.
v2: Use kasprintf() instead of a table, reorder patches (Chis)
Cc: Chris Wilson <chris@chris-wilson.co.uk >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1447266856-30249-3-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com >
2015-11-16 15:59:50 +02:00
Ville Syrjälä
f3c6a3a70d
drm/i915: Replace aux_ch_ctl_reg check with port check
...
Instead of checking what aux_ch_ctl_reg is, we can simply check the port
when determining the right timeout value to program.
v2: Reorder patches to reduce churn (Chris)
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk > (v1)
Link: http://patchwork.freedesktop.org/patch/msgid/1447266856-30249-2-git-send-email-ville.syrjala@linux.intel.com
2015-11-16 15:59:37 +02:00
Imre Deak
fd0fe6acf1
drm/i915: get runtime PM reference around GEM set_caching IOCTL
...
After Damien's D3 fix I started to get runtime suspend residency for the
first time and that revealed a breakage on the set_caching IOCTL path
that accesses the HW but doesn't take an RPM ref. Fix this up.
Signed-off-by: Imre Deak <imre.deak@intel.com >
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com >
Cc: stable@vger.kernel.org
Link: http://patchwork.freedesktop.org/patch/msgid/1446665132-22491-1-git-send-email-imre.deak@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2015-11-16 15:32:08 +02:00
Mika Kuoppala
500a3d2eb3
drm/i915: Fix GT frequency rounding
...
When we set and later readback a frequency value through
sysfs interface, igt/pm_rpm assumes that we get same value back
if it matches hw granularity.
On bxt we have found out that this is not always the case.
Currently frequency - hw ratio - frequency conversions round down,
with few exceptions on platforms that have more specific conversions.
On bxt the supported range can be for example from 100Mhz to 650Mhz.
Midpoint is then calculated by test to be 375 which pm_rps uses to find a
closest hw supported frequency. That is 366 (ratio 22),
which it then writes back. But as the rounding down kicks in,
driver actually sets 350 instead of 366, as 366 is 2/3 below 22 * 50/3.
Fix this by rounding to closest instead of rounding down in
freq-ratio-freq conversions.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92768
Testcase: igt/pm_rps/basic-api
Tested-by: Bob Paauwe <bob.j.paauwe@intel.com >
Cc: Bob Paauwe <bob.j.paauwe@intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Bob Paauwe <bob.j.paauwe@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1447435781-23416-1-git-send-email-mika.kuoppala@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2015-11-16 15:25:34 +02:00
Jani Nikula
1b9448b071
drm/i915: quirk backlight present on Macbook 4, 1
...
Unsurprisingly macbooks have backlights, just the VBT doesn't seem to
know it in this case.
Reported-and-tested-by: Daniel Nicoletti <dantti12@gmail.com >
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88325
Fixes: c675949ec5 ("drm/i915: do not setup backlight if not available according to VBT")
Cc: stable@vger.kernel.org # v3.15+
Reviewed-by: Ander Conselvan de Oliveira <conselvan2@gmail.com >
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1446716999-1796-1-git-send-email-jani.nikula@intel.com
2015-11-16 14:48:14 +02:00
Ville Syrjälä
f44e26593a
drm/i915: Fix crtc_y assignment in intel_find_initial_plane_obj()
...
Let's set crtc_y to 0 instead of setting src_y twice.
Multiple assignments in one statement is a good way to hide bugs.
Please don't do that.
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Fixes: be5651f2d5 ("drm/i915: Update missing properties in find_initial_plane_obj")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1447434973-12369-1-git-send-email-ville.syrjala@linux.intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2015-11-16 14:38:12 +02:00
Linus Torvalds
be4773e6a1
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
...
Pull drm sti driver updates from Dave Airlie:
"The sti driver had a requirement on some patches in Greg's tree, they
are in, so I see no problems just merging this one now"
* 'drm-next' of git://people.freedesktop.org/~airlied/linux:
drm/sti: load HQVDP firmware the first time HQVDP's plane is used
drm/sti: fix typo issue in sti_mode_config_init
drm/sti: set mixer background color through module param
drm/sti: Remove local fbdev emulation Kconfig option
drm/sti: remove redundant sign extensions
drm/sti: hdmi use of_get_i2c_adapter_by_node interface
drm/sti: hdmi fix i2c adapter device refcounting
drm/sti: Do not export symbols
drm/sti: Build monolithic driver
drm/sti: Use drm_crtc_vblank_*() API
drm/sti: Store correct CRTC index in events
drm/sti: Select FW_LOADER
drm/sti: Constify function pointer structs
2015-11-13 09:12:38 -08:00
jim.bride@linux.intel.com
d1c0a0019a
drm/i915/skl: Update DDI translation tables for SKL
...
While comparing the B-Spec with the code I noticed that several
values in these tables have been updated in the spec, so I
changed the code to match..
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Signed-off-by: Jim Bride <jim.bride@linux.intel.com >
Reviewed-by: Ander Conselvan de Oliveira <conselvan2@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1446852654-883-1-git-send-email-jim.bride@linux.intel.com
2015-11-13 13:25:59 +02:00
Ander Conselvan de Oliveira
e4d4c05bfb
drm/i915: Fix SKL i_boost level
...
The i_boost level in the DDI translation tables are stored per level.
However, skl_ddi_set_iboos() would choose an entry of that table based
on the port argument.
Cc: Jim Bride <jim.bride@linux.intel.com >
Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com >
Reviewed-by: Jim Bride <jim.bride@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1447247754-802-1-git-send-email-ander.conselvan.de.oliveira@intel.com
2015-11-13 11:50:45 +02:00
Dave Airlie
f20780f3e8
Merge branch 'drm-sti-next-2015-11-03' of http://git.linaro.org/people/benjamin.gaignard/kernel into drm-next
...
sti/drm changes
Add better support for firmware loading
lots of fixes.
* 'drm-sti-next-2015-11-03' of http://git.linaro.org/people/benjamin.gaignard/kernel :
drm/sti: load HQVDP firmware the first time HQVDP's plane is used
drm/sti: fix typo issue in sti_mode_config_init
drm/sti: set mixer background color through module param
drm/sti: Remove local fbdev emulation Kconfig option
drm/sti: remove redundant sign extensions
drm/sti: hdmi use of_get_i2c_adapter_by_node interface
drm/sti: hdmi fix i2c adapter device refcounting
drm/sti: Do not export symbols
drm/sti: Build monolithic driver
drm/sti: Use drm_crtc_vblank_*() API
drm/sti: Store correct CRTC index in events
drm/sti: Select FW_LOADER
drm/sti: Constify function pointer structs
2015-11-13 10:08:19 +10:00
Mark Yao
5bad7d29a7
Revert "drm/rockchip: Convert the probe function to the generic drm_of_component_probe()"
...
This reverts commit 52f5eb6094 .
Rockchip drm can't work with generic drm_of_component_probe now
Signed-off-by: Mark Yao <mark.yao@rock-chips.com >
Acked-by: Liviu Dudau <Liviu.Dudau@arm.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2015-11-13 09:59:46 +10:00
Ville Syrjälä
0c545ac481
drm: Don't oops in drm_calc_timestamping_constants() if drm_vblank_init() wasn't called
...
Seems the crtc helpers call drm_calc_timestamping_constants()
unconditionally even if the driver didn't initialize vblank support by
calling drm_vblank_init(). That used to be OK since the constants were
stored under drm_crtc.
However I broke this with
commit eba1f35dfe ("drm: Move timestamping constants into drm_vblank_crtc")
when I moved the constants to live inside the drm_vblank_crtc struct
instead. If drm_vblank_init() isn't called, we don't allocate these
structures, and so drm_calc_timestamping_constants() will oops.
Fix it by adding a check into drm_calc_timestamping_constants() to see
if vblank support was initialized at all. And to keep in line with other
such checks, also toss in a check and warn for the case where vblank
support was initialized, but the wrong number of crtcs was specified.
Fixes the following sort of oops:
BUG: unable to handle kernel NULL pointer dereference at 00000000000000b0
IP: [<ffffffffa014b266>] drm_calc_timestamping_constants+0x86/0x130 [drm]
PGD 0
Oops: 0002 [#1 ] SMP
Modules linked in: sr_mod cdrom mgag200(+) i2c_algo_bit drm_kms_helper ahci syscopyarea sysfillrect sysimgblt libahci fb_sys_fops bnx2x ttm tg3(+) mdio drm ptp sd_mod libata i2c_core pps_core libcrc32c hpsa dm_mirror dm_region_hash dm_log dm_mod
CPU: 0 PID: 418 Comm: kworker/0:2 Not tainted 4.3.0+ #1
Hardware name: HP ProLiant DL380 Gen9, BIOS P89 06/09/2015
Workqueue: events work_for_cpu_fn
task: ffff88046ca95500 ti: ffff88007830c000 task.ti: ffff88007830c000
RIP: 0010:[<ffffffffa014b266>] [<ffffffffa014b266>] drm_calc_timestamping_constants+0x86/0x130 [drm]
RSP: 0018:ffff88007830f4e8 EFLAGS: 00010246
RAX: 0000000000fe4c00 RBX: ffff88006a849160 RCX: 0000000000000540
RDX: 0000000000000000 RSI: 000000000000fde8 RDI: ffff88006a849000
RBP: ffff88007830f518 R08: ffff88007830c000 R09: 00000001b87e3712
R10: 00000000000050c4 R11: 0000000000000000 R12: 0000000000fe4c00
R13: ffff88006a849000 R14: 0000000000000000 R15: 000000000000fde8
FS: 0000000000000000(0000) GS:ffff88046f800000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000000000b0 CR3: 00000000019d6000 CR4: 00000000001406f0
Stack:
ffff88007830f518 ffff88006a849000 ffff880c69b90340 ffff880c69b90000
ffff880c69b90348 ffff880c69b90340 ffff88007830f748 ffffffffa042f7e7
ffff88006a849090 0000000000000000 ffff88006a849160 0000000000000000
Call Trace:
[<ffffffffa042f7e7>] drm_crtc_helper_set_mode+0x3d7/0x4b0 [drm_kms_helper]
[<ffffffffa04307d4>] drm_crtc_helper_set_config+0x8d4/0xb10 [drm_kms_helper]
[<ffffffffa01548d4>] drm_mode_set_config_internal+0x64/0x100 [drm]
[<ffffffffa043c342>] drm_fb_helper_pan_display+0xa2/0x280 [drm_kms_helper]
[<ffffffff81392c7b>] fb_pan_display+0xbb/0x170
[<ffffffff8138cf70>] bit_update_start+0x20/0x50
[<ffffffff8138b81b>] fbcon_switch+0x39b/0x590
[<ffffffff8140a3d0>] redraw_screen+0x1a0/0x240
[<ffffffff8140b30e>] do_bind_con_driver+0x2ee/0x310
[<ffffffff8140b651>] do_take_over_console+0x141/0x1b0
[<ffffffff81387377>] do_fbcon_takeover+0x57/0xb0
[<ffffffff8138c98b>] fbcon_event_notify+0x60b/0x750
[<ffffffff810a5599>] notifier_call_chain+0x49/0x70
[<ffffffff810a58dd>] __blocking_notifier_call_chain+0x4d/0x70
[<ffffffff810a5916>] blocking_notifier_call_chain+0x16/0x20
[<ffffffff8139282b>] fb_notifier_call_chain+0x1b/0x20
[<ffffffff81394881>] register_framebuffer+0x1f1/0x330
[<ffffffffa043d9aa>] drm_fb_helper_initial_config+0x27a/0x3d0 [drm_kms_helper]
[<ffffffffa0469b4d>] mgag200_fbdev_init+0xdd/0xf0 [mgag200]
[<ffffffffa0468586>] mgag200_modeset_init+0x176/0x1e0 [mgag200]
[<ffffffffa0464659>] mgag200_driver_load+0x3f9/0x580 [mgag200]
[<ffffffffa014e067>] drm_dev_register+0xa7/0xb0 [drm]
[<ffffffffa015054f>] drm_get_pci_dev+0x8f/0x1e0 [drm]
[<ffffffffa046937b>] mga_pci_probe+0x9b/0xc0 [mgag200]
[<ffffffff813662d5>] local_pci_probe+0x45/0xa0
[<ffffffff8109afe4>] work_for_cpu_fn+0x14/0x20
[<ffffffff8109e13c>] process_one_work+0x14c/0x3c0
[<ffffffff8109eaa4>] worker_thread+0x244/0x470
[<ffffffff8168bfba>] ? __schedule+0x2aa/0x760
[<ffffffff8109e860>] ? rescuer_thread+0x310/0x310
[<ffffffff810a4438>] kthread+0xd8/0xf0
[<ffffffff810a4360>] ? kthread_park+0x60/0x60
[<ffffffff8169030f>] ret_from_fork+0x3f/0x70
[<ffffffff810a4360>] ? kthread_park+0x60/0x60
Code: f6 31 d2 41 89 c2 8b 83 b4 00 00 00 0f af c1 48 98 48 69 c0 40 42 0f 00 48 f7 f6 f6 43 74 10 41 89 c4 75 26 f6 05 9a 6f 03 00 01 <45> 89 96 b0 00 00 00 45 89 a6 ac 00 00 00 75 35 48 83 c4 08 5b
RIP [<ffffffffa014b266>] drm_calc_timestamping_constants+0x86/0x130 [drm]
RSP <ffff88007830f4e8>
CR2: 00000000000000b0
Cc: Jeff Moyer <jmoyer@redhat.com >
Reported-by: Jeff Moyer <jmoyer@redhat.com >
References: http://lists.freedesktop.org/archives/dri-devel/2015-November/094217.html
Fixes: eba1f35dfe ("drm: Move timestamping constants into drm_vblank_crtc")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
2015-11-13 09:55:00 +10:00
Animesh Manna
ca1283d502
drm/i915/skl: Removed assert for csr-fw-loading check during disabling dc6
...
As during disabling dc6 no need to check for csr firmware
loading status, so removed the assert call (Requested by Damien).
Cc: Damien Lespiau <damien.lespiau@intel.com >
Signed-off-by: Animesh Manna <animesh.manna@intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Tested-by: Daniel Stone <daniels@collabora.com > # SKL
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1446069547-24760-14-git-send-email-imre.deak@intel.com
2015-11-12 17:32:06 +02:00
Imre Deak
f514c2d842
drm/i915/gen9: flush DMC fw loading work during system suspend
...
Currently during system s/r we enable/disable DC6, so before we do so
make sure that the firmware loading is complete.
Note that whether we need to enable DC6 for S3/S4 is still open. At
least the firmware program is lost during S3 and we need to reprogram it
after resuming. Until this is clarified we keep the current behavior and
enable/disable DC6.
Signed-off-by: Imre Deak <imre.deak@intel.com >
Reviewed-by: Animesh Manna <animesh.manna@intel.com >
Tested-by: Daniel Stone <daniels@collabora.com > # SKL
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1446069547-24760-13-git-send-email-imre.deak@intel.com
2015-11-12 17:31:10 +02:00
Animesh Manna
15e72c1fc1
drm/i915/gen9: Use flush_work to synchronize with dmc loader
...
During driver unload to ensure we dont have any pending task,
flush_work added to complete firmware loading task.
v1: Initial version.
v2: As per review comments from Daniel,
Removed flush_work from skl_set_power_well. As we have taken
power well refernece and rpm count during firmware loading
by using display_power_domain_get/put - this will always
ensure rpm will be blocked if firmware is not loaded.
Cc: Daniel Vetter <daniel.vetter@intel.com >
Cc: Damien Lespiau <damien.lespiau@intel.com >
Cc: Imre Deak <imre.deak@intel.com >
Cc: Sunil Kamath <sunil.kamath@intel.com >
Signed-off-by: Animesh Manna <animesh.manna@intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Tested-by: Daniel Stone <daniels@collabora.com > # SKL
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1446069547-24760-12-git-send-email-imre.deak@intel.com
2015-11-12 17:30:25 +02:00
Daniel Vetter
8144ac59bd
drm/i915: Use request_firmware and our own async work
...
Two benefits:
- We can use FW_LOADER_USERSPACE_FALLBACK.
- We can use flush_work to synchronize with the oustanding worker,
which is a notch more obvious what it does than having a special
completion.
The next patch will properly synchronize against the async loader in
the resume and unload code.
Cc: Damien Lespiau <damien.lespiau@intel.com >
Cc: Imre Deak <imre.deak@intel.com >
Cc: Sunil Kamath <sunil.kamath@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Signed-off-by: Animesh Manna <animesh.manna@intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Tested-by: Daniel Stone <daniels@collabora.com > # SKL
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1446069547-24760-11-git-send-email-imre.deak@intel.com
2015-11-12 17:29:26 +02:00
Daniel Vetter
6a6582bfff
drm/i915/gen9: extract parse_csr_fw
...
The loader function will get a bit more complicated soon, extract the
parsing code to make the control flow clearer. While doing that just
use dev_priv->csr.dmc_payload as the indicator for whether it all
suceeded or not.
v2-v3:
- unchanged
v4:
- rebased on top of latest drm-intel-nightly
Cc: Damien Lespiau <damien.lespiau@intel.com >
Cc: Imre Deak <imre.deak@intel.com >
Cc: Sunil Kamath <sunil.kamath@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Signed-off-by: Animesh Manna <animesh.manna@intel.com >
[imre: remove note about BE cast from commit message, it's not relevant
any more]
Signed-off-by: Imre Deak <imre.deak@intel.com >
Tested-by: Daniel Stone <daniels@collabora.com > # SKL
[Jani: fix checkpatch warn on multiple blank lines]
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/1447341089-2735-1-git-send-email-imre.deak@intel.com
2015-11-12 17:28:27 +02:00