| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that the code is compatible in semantics, flip the switch.
Use ww_mutex instead of the homegrown implementation.
ww_mutex uses -EDEADLK to signal that the caller has to back off,
and -EALREADY to indicate this buffer is already held by the caller.
ttm used -EAGAIN and -EDEADLK for those, respectively. So some changes
were needed to handle this correctly.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
cli->mutex was inverted with reservations, and multiple reservations were
used without a ticket, fix both. This commit had to be done after the previous
commit, because otherwise ttm_eu_* calls would use a different seqno counter..
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Acked-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
This commit converts the source of the val_seq counter to
the ww_mutex api. The reservation objects are converted later,
because there is still a lockdep splat in nouveau that has to
resolved first.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds support for a generic reservations framework that can be
hooked up to ttm and dma-buf and allows easy sharing of reservations
across devices.
The idea is that a dma-buf and ttm object both will get a pointer
to a struct reservation_object, which has to be reserved before
anything is done with the contents of the dma-buf.
Changes since v1:
- Fix locking issue in ticket_reserve, which could cause mutex_unlock
to be called too many times.
Changes since v2:
- All fence related calls and members have been taken out for now,
what's left is the bare minimum to be useful for ttm locking conversion.
Changes since v3:
- Removed helper functions too. The documentation has an example
implementation for locking. With the move to ww_mutex there is no
need to have much logic any more.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Mutexes should not be acquired in interrupt context. While the trylock
fastpath is arguably safe on all implementations, the slowpath
unlock path definitely isn't.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
handler
Mutexes should not be acquired in interrupt context. While the trylock
fastpath is arguably safe on all implementations, the slowpath
unlock path definitely isn't.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
handler
Mutexes should not be acquired in interrupt context. While the trylock
fastpath is arguably safe on all implementations, the slowpath
unlock path definitely isn't. This fixes the following lockdep splat:
[ 13.044313] ------------[ cut here ]------------
[ 13.044367] WARNING: at /c/kernel-tests/src/tip/kernel/mutex.c:858 mutex_trylock+0x87/0x220()
[ 13.044378] DEBUG_LOCKS_WARN_ON(in_interrupt())
[ 13.044378] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.10.0-rc4-00296-ga2963dd #20
[ 13.044379] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
[ 13.044390] 0000000000000009 ffff88000de039f8 ffffffff81fc86d5 ffff88000de03a38
[ 13.044395] ffffffff810d511b ffff880000000018 ffff88000f33c690 0000000000000001
[ 13.044398] 00000000000003f0 ffff88000f4677c8 0000000000000000 ffff88000de03a98
[ 13.044400] Call Trace:
[ 13.044412] <IRQ> [<ffffffff81fc86d5>] dump_stack+0x19/0x1b
[ 13.044441] [<ffffffff810d511b>] warn_slowpath_common+0x6b/0x90
[ 13.044445] [<ffffffff810d51a6>] warn_slowpath_fmt+0x46/0x50
[ 13.044448] [<ffffffff81fd34d7>] mutex_trylock+0x87/0x220
[ 13.044482] [<ffffffff8186484d>] cirrus_dirty_update+0x1cd/0x330
[ 13.044486] [<ffffffff818649e8>] cirrus_imageblit+0x38/0x50
[ 13.044506] [<ffffffff8165782e>] soft_cursor+0x22e/0x240
[ 13.044510] [<ffffffff81656c31>] bit_cursor+0x581/0x5b0
[ 13.044525] [<ffffffff815de9f4>] ? vsnprintf+0x124/0x670
[ 13.044529] [<ffffffff81651333>] ? get_color.isra.16+0x43/0x130
[ 13.044532] [<ffffffff81653fca>] fbcon_cursor+0x18a/0x1d0
[ 13.044535] [<ffffffff816566b0>] ? update_attr.isra.2+0xa0/0xa0
[ 13.044556] [<ffffffff81754b82>] hide_cursor+0x32/0xa0
[ 13.044565] [<ffffffff81755bd3>] vt_console_print+0x103/0x3b0
[ 13.044569] [<ffffffff810d58ac>] ? print_time+0x9c/0xb0
[ 13.044576] [<ffffffff810d5960>] ? print_prefix+0xa0/0xc0
[ 13.044580] [<ffffffff810d63f6>] call_console_drivers.constprop.6+0x146/0x1f0
[ 13.044593] [<ffffffff815f9b38>] ? do_raw_spin_unlock+0xc8/0x100
[ 13.044597] [<ffffffff810d6f27>] console_unlock+0x2f7/0x460
[ 13.044600] [<ffffffff810d787a>] vprintk_emit+0x59a/0x5e0
[ 13.044615] [<ffffffff81fb676c>] printk+0x4d/0x4f
[ 13.044650] [<ffffffff82ba5511>] print_local_APIC+0x28/0x41c
[ 13.044672] [<ffffffff8114db55>] generic_smp_call_function_single_interrupt+0x145/0x2b0
[ 13.044688] [<ffffffff8106f9e7>] smp_call_function_single_interrupt+0x27/0x40
[ 13.044697] [<ffffffff81fd8f72>] call_function_single_interrupt+0x72/0x80
[ 13.044707] <EOI> [<ffffffff81078166>] ? native_safe_halt+0x6/0x10
[ 13.044717] [<ffffffff811425cd>] ? trace_hardirqs_on+0xd/0x10
[ 13.044738] [<ffffffff8104f669>] default_idle+0x59/0x120
[ 13.044742] [<ffffffff810501e8>] arch_cpu_idle+0x18/0x40
[ 13.044754] [<ffffffff811320c5>] cpu_startup_entry+0x235/0x410
[ 13.044763] [<ffffffff81f9e781>] rest_init+0xd1/0xe0
[ 13.044766] [<ffffffff81f9e6b5>] ? rest_init+0x5/0xe0
[ 13.044778] [<ffffffff82b93ec2>] start_kernel+0x425/0x493
[ 13.044781] [<ffffffff82b93810>] ? repair_env_string+0x5e/0x5e
[ 13.044786] [<ffffffff82b93595>] x86_64_start_reservations+0x2a/0x2c
[ 13.044789] [<ffffffff82b93688>] x86_64_start_kernel+0xf1/0x100
[ 13.044799] ---[ end trace 113ad28772af4058 ]---
Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Having nouveau builtin would still allow ACPI_VIDEO to be used as external module
if some of the deps for acpi_video have not been met, which would result in a linking
failure. Solve this by selecting all dependencies as well.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Acked-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Shouldn't happen, and we invert the struct_mutex with reservation here,
potentially leading to deadlocks. Once reservations become lockdep annotated,
lockdep will go splat on this.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Acked-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
|
|
| |
Add missing calls, and fix a leak from forgetting to call the unpin function.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Acked-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
| |
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Acked-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
| |
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Acked-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Changes since v1:
- Fixup compiler warning in unpin function.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
into drm-next
This is the pull request for radeon for 3.11. Highlights include:
- Support for CIK (Sea Islands) asics: 3D, compute, UVD
- DPM (Dynamic Power Management) support for 6xx-SI
- ASPM support for 6xx-SI
- Assorted bug fixes
* 'drm-next-3.11' of git://people.freedesktop.org/~agd5f/linux: (168 commits)
drm/radeon/SI: fix TDP adjustment in set_power_state
drm/radeon/NI: fix TDP adjustment in set_power_state
drm/radeon: fix endian issues in atombios dpm code
drm/radeon/dpm: fix UVD clock setting on SI
drm/radeon/dpm: fix UVD clock setting on cayman
drm/radeon/dpm: add support for setting UVD clock on rv6xx
drm/radeon/dpm: add support for setting UVD clock on rs780
drm/radeon: fix typo in ni_print_power_state
drm/radeon: fix typo in cik_select_se_sh()
drm/radeon/si: fix typo in function name
drm/radeon/dpm: fix typo in setting uvd clock
drm/radeon/dpm: add dpm_set_power_state failure output (si)
add dpm_set_power_state failure output (7xx-ni)
drm/radeon/dpm: add dpm_set_power_state failure output (7xx-ni)
drm/radeon/dpm: add dpm_enable failure output (si)
drm/radeon/dpm: add dpm_enable failure output (7xx-ni)
drm/radeon/kms: add dpm support for SI (v7)
drm/radeon: switch SI to use radeon_ucode.h
drm/radeon: add SI to r600_is_internal_thermal_sensor()
drm/radeon/dpm/rs780: properly catch errors in dpm setup
...
|
| |
| |
| |
| |
| |
| | |
Fixes hangs with DPM in some cases.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| | |
Fixes hangs with DPM in some cases.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| | |
The rv770 version was using the wrong power state type.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This adds dpm support for SI asics. This includes:
- dynamic engine clock scaling
- dynamic memory clock scaling
- dynamic voltage scaling
- dynamic pcie gen1/gen2/gen3 switching
- power containment
- shader power scaling
Set radeon.dpm=1 to enable.
v2: enable hainan support, rebase
v3: guard acpi stuff
v4: fix 64 bit math
v5: fix 64 bit div harder
v6: fix thermal interrupt check noticed by Jerome
v7: attempt fix state enable
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| | |
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| | |
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| | |
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| | |
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| | |
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| | |
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| | |
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| | |
We weren't properly catching errors in dpm_enable()
and dpm_set_power_state().
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| | |
The arrays items are variable sized.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| | |
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| | |
Add a helper function to determine the preferred
pcie gen based on the card, system, and circumstance.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| | |
Add a way to look up the bootup mvdd. Required for DPM on SI.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Validate the voltages against the voltage requirements of the
dispclk. We currently don't adjust the disp clock so it never
changes, but we need to filter out voltage levels that are too
low none the less.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| | |
Forgot to free some structs when allocation fails for some
tables.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Use the new fixed point functions for leakage
calculations on cayman.
v2: fix up 64 bit math
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Required for certain driver calculations. Code
was written by Christian König and ported to the
drm by me.
v2: fix 64 bit divides
v3: fix 64 bit for real (math64.h)
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|