Age | Commit message (Collapse) | Author | Files | Lines |
|
The !irqs_disabled() check triggers on PREEMPT_RT even with
i915_sched_engine::lock acquired. The reason is the lock is transformed
into a sleeping lock on PREEMPT_RT and does not disable interrupts.
There is no need to check for disabled interrupts. The lockdep
annotation below already check if the lock has been acquired by the
caller and will yell if the interrupts are not disabled.
Remove the !irqs_disabled() check.
Reported-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
execlists_dequeue() is invoked from a function which uses
local_irq_disable() to disable interrupts so the spin_lock() behaves
like spin_lock_irq().
This breaks PREEMPT_RT because local_irq_disable() + spin_lock() is not
the same as spin_lock_irq().
execlists_dequeue_irq() and execlists_dequeue() has each one caller
only. If intel_engine_cs::active::lock is acquired and released with the
_irq suffix then it behaves almost as if execlists_dequeue() would be
invoked with disabled interrupts. The difference is the last part of the
function which is then invoked with enabled interrupts.
I can't tell if this makes a difference. From looking at it, it might
work to move the last unlock at the end of the function as I didn't find
anything that would acquire the lock again.
Reported-by: Clark Williams <williams@redhat.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
|
|
Disabling interrupts and invoking the irq_work function directly breaks
on PREEMPT_RT.
PREEMPT_RT does not invoke all irq_work from hardirq context because
some of the user have spinlock_t locking in the callback function.
These locks are then turned into a sleeping locks which can not be
acquired with disabled interrupts.
Using irq_work_queue() has the benefit that the irqwork will be invoked
in the regular context. In general there is "no" delay between enqueuing
the callback and its invocation because the interrupt is raised right
away on architectures which support it (which includes x86).
Use irq_work_queue() + irq_work_sync() instead invoking the callback
directly.
Reported-by: Clark Williams <williams@redhat.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
|
|
The order of the header files is important. If this header file is
included after tracepoint.h was included then the NOTRACE here becomes a
nop. Currently this happens for two .c files which use the tracepoitns
behind DRM_I915_LOW_LEVEL_TRACEPOINTS.
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|
Luca Abeni reported this:
| BUG: scheduling while atomic: kworker/u8:2/15203/0x00000003
| CPU: 1 PID: 15203 Comm: kworker/u8:2 Not tainted 4.19.1-rt3 #10
| Call Trace:
| rt_spin_lock+0x3f/0x50
| gen6_read32+0x45/0x1d0 [i915]
| g4x_get_vblank_counter+0x36/0x40 [i915]
| trace_event_raw_event_i915_pipe_update_start+0x7d/0xf0 [i915]
The tracing events use trace_i915_pipe_update_start() among other events
use functions acquire spinlock_t locks which are transformed into
sleeping locks on PREEMPT_RT. A few trace points use
intel_get_crtc_scanline(), others use ->get_vblank_counter() wich also
might acquire a sleeping locks on PREEMPT_RT.
At the time the arguments are evaluated within trace point, preemption
is disabled and so the locks must not be acquired on PREEMPT_RT.
Based on this I don't see any other way than disable trace points on
PREMPT_RT.
Reported-by: Luca Abeni <lucabe72@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
The !in_atomic() check in _wait_for_atomic() triggers on PREEMPT_RT
because the uncore::lock is a spinlock_t and does not disable
preemption or interrupts.
Changing the uncore:lock to a raw_spinlock_t doubles the worst case
latency on an otherwise idle testbox during testing. Therefore I'm
currently unsure about changing this.
Link: https://lore.kernel.org/all/20211006164628.s2mtsdd2jdbfyf7g@linutronix.de/
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
Commit
8d7849db3eab7 ("drm/i915: Make sprite updates atomic")
started disabling interrupts across atomic updates. This breaks on PREEMPT_RT
because within this section the code attempt to acquire spinlock_t locks which
are sleeping locks on PREEMPT_RT.
According to the comment the interrupts are disabled to avoid random delays and
not required for protection or synchronisation.
If this needs to happen with disabled interrupts on PREEMPT_RT, and the
whole section is restricted to register access then all sleeping locks
need to be acquired before interrupts are disabled and some function
maybe moved after enabling interrupts again.
This includes:
- prepare_to_wait() + finish_wait() due its wake queue.
- drm_crtc_vblank_put() -> vblank_disable_fn() drm_device::vbl_lock.
- skl_pfit_enable(), intel_update_plane(), vlv_atomic_update_fifo() and
maybe others due to intel_uncore::lock
- drm_crtc_arm_vblank_event() due to drm_device::event_lock and
drm_device::vblank_time_lock.
Don't disable interrupts on PREEMPT_RT during atomic updates.
[bigeasy: drop local locks, commit message]
Signed-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
Mario Kleiner suggest in commit
ad3543ede630f ("drm/intel: Push get_scanout_position() timestamping into kms driver.")
a spots where preemption should be disabled on PREEMPT_RT. The
difference is that on PREEMPT_RT the intel_uncore::lock disables neither
preemption nor interrupts and so region remains preemptible.
The area covers only register reads and writes. The part that worries me
is:
- __intel_get_crtc_scanline() the worst case is 100us if no match is
found.
- intel_crtc_scanlines_since_frame_timestamp() not sure how long this
may take in the worst case.
It was in the RT queue for a while and nobody complained.
Disable preemption on PREEPMPT_RT during timestamping.
[bigeasy: patch description.]
Cc: Mario Kleiner <mario.kleiner.de@gmail.com>
Signed-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
__timeline_mark_lock().
This is a revert of commits
d67739268cf0e ("drm/i915/gt: Mark up the nested engine-pm timeline lock as irqsafe")
6c69a45445af9 ("drm/i915/gt: Mark context->active_count as protected by timeline->mutex")
The existing code leads to a different behaviour depending on whether
lockdep is enabled or not. Any following lock that is acquired without
disabling interrupts (but needs to) will not be noticed by lockdep.
This it not just a lockdep annotation but is used but an actual mutex_t
that is properly used as a lock but in case of __timeline_mark_lock()
lockdep is only told that it is acquired but no lock has been acquired.
It appears that its purpose is just satisfy the lockdep_assert_held()
check in intel_context_mark_active(). The other problem with disabling
interrupts is that on PREEMPT_RT interrupts are also disabled which
leads to problems for instance later during memory allocation.
Add a CONTEXT_IS_PARKED bit to intel_engine_cs and set_bit/clear_bit it
instead of mutex_acquire/mutex_release. Use test_bit in the two
identified spots which relied on the lockdep annotation.
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
|
|
Signed-off-by: Windsome Zeng <windsome.zeng@starfivetech.com>
|
|
|
|
camera.
Signed-off-by: Windsome Zeng <windsome.zeng@starfivetech.com>
|
|
|
|
CR_6347 display : hdmi: fix hotplug hang
See merge request sdk/linux!960
|
|
will drop 50% performance. Just do real flush data while cursor is about to change.
Other plane: According to the behavior of L2 cache controller in U74, only the last 2MB data is needed to be flushed.
For 4K resolution, it will reduce flush loops from 518400 to 32768 on each frame update.
Signed-off-by: Windsome Zeng <windsome.zeng@starfivetech.com>
|
|
Fixed the probability of hdmi crash after repeated insertion and removal
Signed-off-by: keith.zhao <keith.zhao@starfivetech.com>
|
|
accelerator-sc7a20
mention: this patch is to solve the problem that radxa 8inch use i2c addr 0x19 which conflict with accelerator-sc7a20.
Then enable accelerator-sc7a20
1.update radxa panel startup process to support both radxa 10inch and radxa 8inch in one driver
2.add accelerator-sc7a20 i2c probe process into radxa panel driver
Signed-off-by: Shengyang Chen <shengyang.chen@starfivetech.com>
|
|
CR 7073 vf2 515: riscv: drm: panel: mass production radxa 10inch panel support
See merge request sbc/linux!164
|
|
|
|
change radxa 10inch support from sample to mass production
Signed-off-by: Shengyang Chen <shengyang.chen@starfivetech.com>
|
|
When echo disk > /sys/power/state , do reset
the hdmi will fail to show the console log.
it is caused by a reset used share way to get
and it will fail to set the reset hardware
fix this by use reset_control_get_exclusive
Signed-off-by: Keith Zhao <keith.zhao@starfivetech.com>
|
|
|
|
run gl-marke-es2-wayland will trigger warning, to fix up it,
we remove fences check
Signed-off-by: shanlong.li <shanlong.li@starfivetech.com>
|
|
|
|
fix vout compile warning
Signed-off-by: Shengyang Chen <shengyang.chen@starfivetech.com>
|
|
|
|
add 1600x720 resolution for hdmi
Signed-off-by: Shengyang Chen shengyang.chen@starfivetech.com
|
|
add 2560x1080 resolution for hdmi
Signed-off-by: Shengyang Chen <shengyang.chen@starfivetech.com>
|
|
Note: From this version, the IMG DDK will be upgraded to 1.19.
|
|
For production use case, we should turn off PVRSRV_NEED_PVR_ASSERT
Signed-off-by: Clement <clement@starfivetech.com>
|
|
Signed-off-by: Clement <clement@starfivetech.com>
|
|
|
|
replace the condition to avoid kernel panic
Signed-off-by: Keith Zhao <keith.zhao@starfivetech.com>
|
|
|
|
after wake up hdmi , need wait 500ms to read the hdmi connect status
or it will read a error value
Signed-off-by: keith <keith.zhao@starfivetech.com>
|
|
fix 4k console bug by disabling pixclk mode larger then 297M
Signed-off-by: Shengyang Chen <shengyang.chen@starfivetech.com>
|
|
|
|
It seems to have dependency issue.
Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
|
|
|
|
1、use the gpio15 as a irq to wake up hdmi
2、Expand the hdmi resolution range with dynamic parameter configuration
Signed-off-by: keith <keith.zhao@starfivetech.com>
|
|
add radxa 10inch driver for vf2
Signed-off-by: keith <keith.zhao@starfivetech.com>
Signed-off-by: Shengyang Chen <shengyang.chen@starfivetech.com>
|
|
version JH7110_515_SDK_v4.8.1 for JH7110 EVB board
1. linux:
Merge branch 'CR_4844_PCIe_515_Kevin.xie' into 'jh7110-5.15.y-devel'
Merge branch 'CR_4874_Copyright_515_william.qiu' into 'jh7110-5.15.y-devel'
Merge branch 'CR_4450_vout_515_changhuang.liang' into 'jh7110-5.15.y-devel'
Merge branch 'CR_4114_thermal_5.15_ziv.xu' into 'jh7110-5.15.y-devel'
Merge branch 'CR_4657_SDK_keep_the_same_host_driver_code_5.15_ziv.xu' into 'jh7110-5.15.y-devel'
|
|
after the kernel start , run modetest to display will fail
fix this issue
Signed-off-by: keith <keith.zhao@starfivetech.com>
|
|
version JH7110_515_SDK_v4.8.0 for JH7110 EVB board
1. linux: Merge branch 'CR_4802_EVB_VOUT_buildWarning_keith.zhao' into 'jh7110-5.15.y-devel'
|
|
fix the warning message during the vout build
Signed-off-by: keith <keith.zhao@starfivetech.com>
|
|
version JH7110_515_SDK_v4.7.0 for JH7110 EVB board
1. #4284: linux: enable cached memory for IMG GPU driver
2. #4563: linux: optimized memcpy Write a C version of memcpy function
3. #4617: linux: support sensor imx708
|
|
For vf2 platform, pgprot table does not support cacheable bit.
This patch worksaround the bit by allocating cacheable when pvr driver
request cacheable memory map without the pgprot table bit set.
Signed-off-by: Tien Hock Loh <tienhock.loh@starfivetech.com>
|
|
PDUMP is disabled to improve performance of GPU as PDUMP is used for
debugging purposes.
Signed-off-by: joyce.ooi <joyce.ooi@starfivetech.com>
|
|
PDUMP is disabled to improve performance of GPU as PDUMP is used for
debugging purposes.
Signed-off-by: joyce.ooi <joyce.ooi@starfivetech.com>
|