2010/2/18 Rafał Miłecki <zaj...@gmail.com>:
> W dniu 18 lutego 2010 20:29 użytkownik Alex Deucher
> <alexdeuc...@gmail.com> napisał:
>> 2010/2/17 Rafał Miłecki <zaj...@gmail.com>:
>>> We kept requested and current modes in many places, depending on current 
>>> state.
>>> That was useless, one place for holding that is enough.
>>>
>>> Signed-off-by: Rafał Miłecki <zaj...@gmail.com>
>>> ---
>>> Tested on my RV620, no problems. Alex: can you review this patch? It's your
>>> code I modify/remove in it.
>>
>> NACK.  Why are you replacing pointers with copies of of the power
>> state structs?  The idea is to keep one array of power states and
>> pointers to the current one, default one, and requested one.  Then
>> comparing power states is just comparing pointers and when you change
>> the power state, you just update the pointer rather then memcpying the
>> entire struct.
>
> Then first of all we would need to reduce modes pointers. Keeping mode
> pointer in every state struct is/was useless.

What do you mean?   There is not a pointer to every state.  There are
only 3 (1. current, 2. requested 3. default) and they are not useless.

You have power states which defines the global state of a particular
power state and then each power state has a set of 1 or more clock
modes.  So within a power state you can switch between clock modes.
You need a set of clock pointers to track the current clock mode and
the requested clock mode.  You also need to know the current and
requested power state so you need pointers there as well.  We could
get rid of the default pointers, but that's mostly there for
convenience to avoid having to look up the default state when we need
it.

For example, say you had the following power tables:

1. 3d power state:
a. low clock mode
b. medium clock mode
c. high clock mode

2. battery power state
a. low clock mode
b. medium clock mode
c. high clock mode

3. default power state
a. low clock mode
b. medium clock mode
c. high clock mode


By default state 3 would be selected so the current state would be '3'
and the current clock mode would be a say 'a'.  The current state
pointer would point to '3' and the current clock mode pointer would
point to 'a'.  If you then went on battery, you'd want power state
'2'.  At that point, the requested state pointer points to '2' and one
of the clock modes gets selected, lets say 'c', so the requested clock
mode pointer points to 'c'.  When we change the power state, we
compare the current and requested power state pointers, if they are
the same, no need to change anything.  if they are different, we make
the changes, then set the current power state pointer to the requested
power state pointer and the current clock mode pointer to the
requested clock mode pointer.  Now say we are in power state '2' and
clock mode 'c' (the high clock for power state '2') and the system
goes idle; at the point we will want to stay in power state '2', but
select clock mode 'a' (the low clock for power state '2').  So we
compare the current and requested clock mode pointers and if they are
not equal, we change the clock mode, at which time we update the
current clock mode pointers to point to the requested clock.


>
> About introduced solution (keeping struct and memcpy to it) I
> introduced that to make hacking requested mode possible. Info from
> AtomBIOS about PCIE lanes seem to be useless (I've never seen anything
> else than 16) so I want to hack found mode for DPMS OFF to use 1 PCIE
> lane. Without keeping whole struct it would be impossible without
> overwriting original entry in array and loosing original info.

That's fine for a local hack, but we don't want that upstream.  If you
are planning to hack all the power tables, then why even use them?
I'm not sure we really change the lanes that often if at all on r6xx+.
 In my experience, a lot of cards lock up when change the lanes or
fail to change properly which results in getting stuck at lower
numbers of lanes.

Alex

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to