sgx.git
13 years agogpu: pvr: fix lockdep problem
Imre Deak [Thu, 29 Apr 2010 11:28:37 +0000 (14:28 +0300)]
gpu: pvr: fix lockdep problem

On the CLK_PRE_RATE_CHANGE:
1. lock A           <- __blocking_notifier_call_chain:nh->rwsem
2. lock B           <- vdd2_pre_post_func:gPVRSRVLock
3. unlock A

On the CLK_POST_RATE_CHANGE/CLK_ABORT_RATE_CHANGE:
4. lock A
5. unlock B
6. unlock A

The above has an ABA lock pattern which triggers the warning. This can't
lead to a dead lock though since at 3. we always release A, before it's
again acquired at 4. To avoid the warning use a wait queue based approach
so that we can unlock B before 3.

Fixes: NB#166168 - PVR: possible circular locking dependency detected

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: more accurate error reporting when clk_set_rate fails
Imre Deak [Wed, 28 Apr 2010 12:02:19 +0000 (15:02 +0300)]
gpu: pvr: more accurate error reporting when clk_set_rate fails

We reported a rounded-down MHz value when clk_set_rate failed,
but this didn't make the reason clear when the Hz value didn't
match exactly any supported rate. So report Hz values instead.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: support for user data in events
Topi Pohjolainen [Tue, 27 Apr 2010 11:14:21 +0000 (13:14 +0200)]
gpu: pvr: support for user data in events

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: enable render complete events
Topi Pohjolainen [Tue, 27 Apr 2010 11:14:20 +0000 (13:14 +0200)]
gpu: pvr: enable render complete events

In DRM style events are associated with the driver private
part of the driver file descriptor. In order for the poll
and read methods to access the event list one needs to pass
the file private through the IOCTL stack.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: support for render complete events
Topi Pohjolainen [Tue, 27 Apr 2010 11:14:19 +0000 (13:14 +0200)]
gpu: pvr: support for render complete events

In DRM vertical blank event style, add support for userspace
to register for events signaling completion of rendering.
Driver is augmented with a list of pending events each
representing request to monitor a particular render completion.
Interrupt handler checks for the list and for the corresponding
state of the target surface. Once a complete render is
encountered, the handler simply moves the corresponding event
from the pending list to the unread list.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: support for polling events
Topi Pohjolainen [Tue, 27 Apr 2010 11:14:18 +0000 (13:14 +0200)]
gpu: pvr: support for polling events

In DRM style provide means for userspace to monitor availability
of events via the poll syscall.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: support for events
Topi Pohjolainen [Tue, 27 Apr 2010 11:14:17 +0000 (13:14 +0200)]
gpu: pvr: support for events

In DRM vertical blank event style, introduce support for the
driver to issue and for the userspace to read events. Driver
file node is extended with a list holding unread events and
with a wait queue representing processes interested receiving
events.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: replace boolean by flags in blits complete query
Topi Pohjolainen [Tue, 27 Apr 2010 11:14:16 +0000 (13:14 +0200)]
gpu: pvr: replace boolean by flags in blits complete query

In preparation for adding third mode of query. In DRM one
has a specific IOCTL for requesting the DRM kernel driver to
issue events when a particular vertical blanking period
passes. Here one aims to introduce similar IOCTL for requesting
PVR kernel driver to issue events whenever a particular frame
gets rendered in full. And instead of introducing entirely new
IOCTL, one instead aims to extend an existing call with a new
mode. This is accomplished by replacing the boolean selector
with an integer.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: round the SGX fclock rate to the nearest supported
Imre Deak [Tue, 20 Apr 2010 12:00:39 +0000 (15:00 +0300)]
gpu: pvr: round the SGX fclock rate to the nearest supported

This is needed since clk_set_rate accepts only exact values.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: remove support for broken LINUX_MEM_AREAS_DEBUG
Imre Deak [Tue, 13 Apr 2010 23:38:05 +0000 (02:38 +0300)]
gpu: pvr: remove support for broken LINUX_MEM_AREAS_DEBUG

Since implementation of the relevant function is missing, enabling
this will lead to a build problem. Hence removing it.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: fix PDUMP configuartion in release build
Imre Deak [Tue, 6 Apr 2010 08:54:16 +0000 (11:54 +0300)]
gpu: pvr: fix PDUMP configuartion in release build

PDUMP can be enabled in release builds too, but so far it was only enabled
in debug builds, so fix this.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: remove unrelevant comments about caller ID
Imre Deak [Mon, 5 Apr 2010 23:16:06 +0000 (02:16 +0300)]
gpu: pvr: remove unrelevant comments about caller ID

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: remove unused function args from SGXTestActivePowerEvent
Imre Deak [Mon, 5 Apr 2010 23:14:32 +0000 (02:14 +0300)]
gpu: pvr: remove unused function args from SGXTestActivePowerEvent

See the similar commits earlier in the patchset to see why this is
justified.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: remove unused function args from SGXPostActivePowerEvent
Imre Deak [Mon, 5 Apr 2010 23:09:40 +0000 (02:09 +0300)]
gpu: pvr: remove unused function args from SGXPostActivePowerEvent

See the similar commits earlier on why this is justified.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: no need to delay queue processing in SGXPostActivePowerEvent
Imre Deak [Mon, 5 Apr 2010 23:06:52 +0000 (02:06 +0300)]
gpu: pvr: no need to delay queue processing in SGXPostActivePowerEvent

At the moment processing of the command queue is delayed in case
SGXPostActivePowerEvent in the HW interrupt code path. This would be
only justified in case of being in interrupt context. This might have
been the case at one point in the history, but now HW interrupts
result in a work scheduled and thus calling the queue processing
function is safe in all cases.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: no need to check for retry failures in SGXTestActivePowerEvent
Imre Deak [Mon, 5 Apr 2010 23:02:29 +0000 (02:02 +0300)]
gpu: pvr: no need to check for retry failures in SGXTestActivePowerEvent

Powering off can't fail now with a 'retry' error, so we can't have the
corresponding condition here. See the similar commits earlier in the
patchset for a more detailed explanation.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: no need to check for IRQ context in SGXCommandComplete
Imre Deak [Mon, 5 Apr 2010 22:48:58 +0000 (01:48 +0300)]
gpu: pvr: no need to check for IRQ context in SGXCommandComplete

This function isn't called in IRQ context from anywhere, so remove
the related checks.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: no need to check for retry failures in SGXScheduleCCBCommandKM
Imre Deak [Mon, 5 Apr 2010 22:43:29 +0000 (01:43 +0300)]
gpu: pvr: no need to check for retry failures in SGXScheduleCCBCommandKM

Powering on the device can't fail any more with a 'retry' error so we can't
have the corresponding condition here. See the similar commit earlier in the
patchset for a more detailed explanation.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: remove unused function args from HWRecoveryResetSGX
Imre Deak [Mon, 5 Apr 2010 22:08:25 +0000 (01:08 +0300)]
gpu: pvr: remove unused function args from HWRecoveryResetSGX

See the similar commits earlier in the patchset on why this is
justified.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: no need to check for retry failures in PVRSRVMISR
Imre Deak [Mon, 5 Apr 2010 22:03:48 +0000 (01:03 +0300)]
gpu: pvr: no need to check for retry failures in PVRSRVMISR

ProcessQueues can't fail any more with a 'retry' error, so checking for
this is not needed. Previously ProcessQueues could fail if sQProcessResource
is locked by someone else. Since sQProcessResource is removed by a previous
change in this patchset that race condition can't happen.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: remove unused function args from PVRSRVProcessQueues
Imre Deak [Mon, 5 Apr 2010 22:01:56 +0000 (01:01 +0300)]
gpu: pvr: remove unused function args from PVRSRVProcessQueues

See the earlier commit with a similar change on why this is justified.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: remove unused function args from PVRSRVSetDevicePowerStateKM
Imre Deak [Mon, 5 Apr 2010 21:49:06 +0000 (00:49 +0300)]
gpu: pvr: remove unused function args from PVRSRVSetDevicePowerStateKM

The CallerID parameter was anyway a horrible concept in terms of
understanding what the function is supposed to do when ISR_ID, KERNEL_ID
or TIMER_ID is passed. Function arguments should never have such "high
level" meaning, but rather denote much more concrete things. In this case
for example whether we should mutex_lock() or mutex_trylock() for a
certain lock. Better yet we should have separate functions for the two
cases to keep the function body as simple as possible.

Happily the CallerID and RetainMutex arguments are unused now, so they
can be removed.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: remove sQProcessResource/OSLockResource interface
Imre Deak [Mon, 5 Apr 2010 21:24:41 +0000 (00:24 +0300)]
gpu: pvr: remove sQProcessResource/OSLockResource interface

The relevent parts are already protected by pvr_lock(), so no
need for sQProcessResource, which was anyway racy and required
the occasional retrying of any operations performed on the
protected object.

The OSLockResource interface thus becomes unused, so remove it
too.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: remove sPowerStateChangeResource lock
Imre Deak [Mon, 5 Apr 2010 21:12:43 +0000 (00:12 +0300)]
gpu: pvr: remove sPowerStateChangeResource lock

This lock was only created / destroyed, but nowhere actually used.
Remove it.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: remove PVRSRVPowerLock()
Imre Deak [Mon, 5 Apr 2010 20:56:34 +0000 (23:56 +0300)]
gpu: pvr: remove PVRSRVPowerLock()

For the relevant paths we already hold pvr_lock(), so we this lock
is unnecessary.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: fix locking on the DVFS path
Imre Deak [Mon, 5 Apr 2010 20:18:24 +0000 (23:18 +0300)]
gpu: pvr: fix locking on the DVFS path

The HW state is protected by pvr_lock(), so acquire it for the
duration of clock rate changes. We can also remove PVRSRVDvfsLock()
that thus becomes unneded.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: fix locking on SGX load calculating thread
Imre Deak [Mon, 5 Apr 2010 15:08:05 +0000 (18:08 +0300)]
gpu: pvr: fix locking on SGX load calculating thread

psDeviceNodeList et al is protected by pvr_lock, so we need to
acquire it here.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: enable debug trace for basic debug build
Imre Deak [Tue, 6 Apr 2010 09:09:47 +0000 (12:09 +0300)]
gpu: pvr: enable debug trace for basic debug build

Enable debug messages for basic debug type builds.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: add option for extra debugging information
Imre Deak [Thu, 1 Apr 2010 14:44:37 +0000 (17:44 +0300)]
gpu: pvr: add option for extra debugging information

This is basically a sed -i 's/\<DEBUG\>/CONFIG_PVR_DEBUG_EXTRA' *.[ch] .

Currently a driver built in debug mode will only work together with the
relevant PVR/OGLES user space libraries being built in debug mode too.
This is becuase the ABI is different in debug and release build.

This is not very flexible when one wants to only debug the kernel driver
and not care about the user space part, let alone figuring out where to
get the sources for that and rebuild it in debug mode too.

Mark the current user space dependent debug code parts with a new
CONFIG_PVR_DEBUG_EXTRA option instead of DEBUG, so that later we can
selectively add back basic debugging facilities like debug traces and
mark them with CONFIG_PVR_DEBUG.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
CC: Mark Underwood <mark.underwood@imgtec.com>
CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@nokia.com>
13 years agogpu: pvr: dump process info at HW recovery reset
Carsten Valdemar Munk [Wed, 15 Dec 2010 14:33:26 +0000 (09:33 -0500)]
gpu: pvr: dump process info at HW recovery reset

Print process ID and command name during HW recovery reset.

Based on a patch from Mark Underwood <mark.underwood@imgtec.com>.

Forward port to 2.6.35

Signed-off-by: Imre Deak <imre.deak@nokia.com>
Signed-off-by: Carsten Munk <carsten@maemo.org>
13 years agogpu: pvr: add helpers to look up resource context and proc info
Imre Deak [Tue, 30 Mar 2010 12:36:24 +0000 (15:36 +0300)]
gpu: pvr: add helpers to look up resource context and proc info

These are needed by an upcoming patch showing process info.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: clean up FreeResourceByCriteria
Imre Deak [Tue, 30 Mar 2010 13:26:40 +0000 (16:26 +0300)]
gpu: pvr: clean up FreeResourceByCriteria

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: add support for finding the BM context from the DL
Mark Underwood [Mon, 15 Mar 2010 12:01:29 +0000 (13:01 +0100)]
gpu: pvr: add support for finding the BM context from the DL

This allows us to find the BM context from the value of the directory list.
This is required for the next patch.

Signed-off-by: Mark Underwood <mark.underwood@imgtec.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: make sure the device is powered on in SGX_MISRHandler
Imre Deak [Wed, 31 Mar 2010 20:01:36 +0000 (23:01 +0300)]
gpu: pvr: make sure the device is powered on in SGX_MISRHandler

While SGX_MISRHandler is scheduled another code path of the driver
(IOCTL, SGXOSTimer) can race with it and turn the power off before
it starts to execute.

When this happens we get the following oops backtrace:

 HWRecoveryResetSGX: SGX Hardware Recovery triggered
 Unhandled fault: external abort on non-linefetch (0x1008)
 PC is at HWRecoveryResetSGX+0x74/0x1b8 [pvrsrvkm]
 LR is at preempt_schedule+0x44/0x54
 (HWRecoveryResetSGX+0x0/0x1b8) from (SGX_MISRHandler+0x5c/0x60)
 (SGX_MISRHandler+0x0/0x60) from (PVRSRVMISR+0x44/0xa0)
  r5:bf0a29cc r4:dfbbbcc0
 (PVRSRVMISR+0x0/0xa0) from (MISRWrapper+0x14/0x18)
  r5:00000002 r4:00000000
 (MISRWrapper+0x0/0x18) from (worker_thread+0x1d0/0x2cc)
 (worker_thread+0x0/0x2cc) from (kthread+0x88/0x90)
 (kthread+0x0/0x90) from (do_exit+0x0/0x680)

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: remove unused per device variable
Imre Deak [Wed, 31 Mar 2010 16:51:04 +0000 (19:51 +0300)]
gpu: pvr: remove unused per device variable

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: fix indent error
Imre Deak [Wed, 31 Mar 2010 16:40:42 +0000 (19:40 +0300)]
gpu: pvr: fix indent error

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: BUG if pvr_lock is not held in HWRecoveryResetSGX
Imre Deak [Wed, 31 Mar 2010 14:08:51 +0000 (17:08 +0300)]
gpu: pvr: BUG if pvr_lock is not held in HWRecoveryResetSGX

Adding the check only to this one place, more can be added later.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: fix locking in pvr_dbg_reset
Imre Deak [Wed, 31 Mar 2010 14:19:22 +0000 (17:19 +0300)]
gpu: pvr: fix locking in pvr_dbg_reset

HWRecoverResetSGX needs to be called with the pvr_lock held.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: acquire the pvr lock on the SGX HW recovery path
Imre Deak [Wed, 31 Mar 2010 12:50:28 +0000 (15:50 +0300)]
gpu: pvr: acquire the pvr lock on the SGX HW recovery path

We need to take the lock protecting all SW and HW state tracking
objects on the recovery reset path, since we are accessing objects
like the SGX command queue, or the per process memory and resource
management contexts.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: fix locking on the HW interrupt path
Imre Deak [Wed, 31 Mar 2010 13:56:53 +0000 (16:56 +0300)]
gpu: pvr: fix locking on the HW interrupt path

- take pvr_lock in the interrupt handling work (MISR) thread, as from
  there we can call functions accessing HW and SW state tracking objects.
  An example is the SGX HW recovery function.

- make SGXOSTimerCancel asynchronous. This is safe now as a previous
  patch made sure that the timer will not run after cancelled. We can't
  do synchronous cancellation, because there would be an ABBA lockdep
  problem involving the SGXOSTimer's mutex and pvr_lock:

  MISR / IOCTL thread:
    1. pvr_lock in PVRSRV_BridgeDispatchKM
    2. timer's lock through SGXPrePowerState -> SGXOSTimerCancel

  SGXOSTimer's thread:
    1. timer's lock already taken when SGXOSTimer is called
    2. pvr_lock in SGXOSTimer

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: bail out from SGXOSTimer if it's been canceled
Imre Deak [Wed, 31 Mar 2010 14:53:20 +0000 (17:53 +0300)]
gpu: pvr: bail out from SGXOSTimer if it's been canceled

At the moment cancelling the timer is done in a synchronous way, so
we don't need to have the extra check. But a later patch will add
additional locking around the HW interrupt from where the timer can
be cancelled as well. Because of lock dependency issues described
in that patch we have to switch to an asynchronous way of cancelling
this timer and it means we need to have the extra check.

Also reset the flag indicating that the timer is cancelled when
destroying it. Currently we are both cancelling and destroying the
timer, but we really should just require calling the destroy function.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: add pvr_lock/remove unneeded lock headers
Imre Deak [Wed, 31 Mar 2010 11:55:54 +0000 (14:55 +0300)]
gpu: pvr: add pvr_lock/remove unneeded lock headers

- Add a public interface for accessing this lock. It has been used
  as a public interface anyway and an upcoming patch needs to access
  it as well.

- Remove headers becoming unnecessary by this refactoring.

Note:
  Currently this lock provides for a course level locking protecting
  all HW and SW state tracking objects. We'll need to revise the use
  of the following additional locks in the driver. Their existance
  might not be justified, in which case we could just substitute
  them with pvr_lock:

  PVRSRVDvfsLock
  PVRSRVPowerLock

Signed-off-by: Imre Deak <imre.deak@nokia.com>
13 years agogpu: pvr: add support to set board specific max SGX functional clk rate
Imre Deak [Fri, 19 Mar 2010 22:08:32 +0000 (23:08 +0100)]
gpu: pvr: add support to set board specific max SGX functional clk rate

Signed-off-by: Imre Deak <imre.deak@nokia.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
13 years agogpu: pvr: move device registration into board file
Carsten Valdemar Munk [Wed, 15 Dec 2010 14:24:25 +0000 (09:24 -0500)]
gpu: pvr: move device registration into board file

Needed by an upcoming patch adding board specific device parameters.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
Adapt for Nokia N900 MeeGo kernel

Signed-off-by: Carsten Munk <carsten@maemo.org>
13 years agogpu: pvr: compilation fixes for kernel > 2.6.33
Ameya Palande [Wed, 2 Jun 2010 12:04:01 +0000 (15:04 +0300)]
gpu: pvr: compilation fixes for kernel > 2.6.33

Signed-off-by: Ameya Palande <ameya.palande@nokia.com>
13 years agomeego-device-adaptation import version
Nokia [Sat, 19 May 2012 14:13:28 +0000 (17:13 +0300)]
meego-device-adaptation import version

  * PVR: upgrade to version 1.4
  * PVR: fix memory corruption due to incorrect cache flushing
  * pvr: fix SGX HW recovery resets seen during boot
  * pvr: preparation for page flipping
  * PVR: SGX 530r125 support
  * PVR: add support for runtime detection of SGX HW revision
  * PVR: fix SGX power management
  * Fixes: NB#156444 - PVR: kernel crash when binding large texture

13 years ago20100903+0m5
Nokia [Sat, 19 May 2012 13:39:19 +0000 (16:39 +0300)]
20100903+0m5

  * Fixes: NB#149006 - PVR: fix kernel crash due to freeing resource still in
    use
  * Increase stability by removing race conditions in the PVR driver
  * Fixes: NB#150134 - PVR: Fix races in the SGXOSTimer path
  * Fixes: NB#140581 - PVR crashes kernel when flushing the Dcache

13 years ago20094803.3+0m5
Nokia [Sat, 19 May 2012 13:19:45 +0000 (16:19 +0300)]
20094803.3+0m5

  * Fixes: NB#141271 - Reduce MPU wakeups caused by SGX lockup
    monitoring
  * Fixes: NB#140010 - Fix PVR driver's cache flush IOCTL checking
  * Fixes: NB#140591 - Fix PVR driver reading regs when the SGX HW is
    off

13 years ago20094102.3+0m5
Nokia [Sat, 19 May 2012 13:00:19 +0000 (16:00 +0300)]
20094102.3+0m5

  * Fixes: NB#144114 - SGX HW locking up due to errors in PVR driver
    memory mapping
  * Fixes: NB#106381 - PVR kernel driver source incompatible with Linux
    standards

13 years ago20093908+0m5+flat+Lindent
Nokia [Sat, 19 May 2012 12:52:35 +0000 (15:52 +0300)]
20093908+0m5+flat+Lindent

  * Fixes: NB#129392 - fix object reference counting in the PVR video
    driver
  * Fixes: NB#132086 - Framebuffer resets are ignored by the PVR driver
  * Preparation for a change in the SGX library
  * Fixes: NB#129389 - fix random PVR driver breakage
  * Fixes: NB#128247 - fix size checking for PVR memory mapping requests
  * Fixes: NB#126777 - PVR module can cause dead-lock at reboot time
  * Fixes: NB#125756 - PVR triggers a lockdep warning
  * Fixes: NB#111084 - SGX compilation warnings
  * Fixes: NB#122294 - Performance regression in SGX operations caused
    by DVFS
  * Fixes: NB#121668 - PVR: error returned by drm_ttm_create is ignored
  * Fixes: NB#121947 - PVR: memory should not be released twice
  * Fixes: NB#119655 - PVR: random allocation failure for sizes > 4k
  * Introduce a patch related to NB#108042 -
    PVR: wrapped memory space runs out (not a complete fix)
  * Fixes: NB#112118 - Fix PVR breakage when using DVFS
  * Fix crashes due to power/clock state transitions in PVR
  * Fixes: NB#110835 - PVR: lock dependency bug
  * Enable dynamic power management for SGX
  * upgrade to SGX 1.3 (fingers crossed)

13 years ago1.3.13.1607/3_00_00_08+flat+Lindent
Imagination Technologies/TI [Sat, 19 May 2012 12:47:09 +0000 (15:47 +0300)]
1.3.13.1607/3_00_00_08+flat+Lindent