Hi,

On 16-06-15 16:02, Ilia Mirkin wrote:
On Tue, Jun 16, 2015 at 5:34 AM, Hans de Goede <hdego...@redhat.com> wrote:
So any hints how to mvoe forward with this are appreciated.

I can only say what I would do... forget about trying to quantify
which cases work and which don't, just take the case that you can
reliably reproduce the problem with. Start up a second xterm (or ssh
in, that might be simpler), and start poking at stuff with
nvapeek/nvapoke. You can look in the driver for what it does when
enabling/disabling vblanks, and you can verify the values of various
registers to see if they're what you expect or not. My bet is the the
vblanks are somehow masked off. The dispnv04 code is pretty
convoluted, and probably an odd call sequence causes it to mess things
up.

Ok, so I've been poking at registers for a couple of hours yesterday
and today, but I've not gotten anywhere.

In the mean time I've learned something about my 2 scenarios, I was
wrong that one works and one does not work, they both work and do
not work some of the time ...

It seems that we're not initializing some register and sometimes this
comes out of reset with a good value and sometimes with a bad value ...

Running nvapeek on interesting register ranges also shows that quite
a few registers contain different values between boots. Some of these
are things seem to be counters for the current line / scanout address,
but others are not. Is this normal for nouveau hardware?

I'm used to most hardware having everything in a consistent state after
a reset.



Also adding a drm.debug=0xf and comparing the successful and failure
cases may prove interesting. [and nouveau.debug=debug for good measure
as well, can't hurt]

Possibly related, likely unrelated during nouveau module (re) load I get
these 2 errors:

[  240.837471] nouveau E[    PBUS][0000:01:00.0] MMIO write of 0x00000000
FAULT at 0x6833c8
[  240.837945] nouveau E[    PBUS][0000:01:00.0] MMIO write of 0x4f4f5c4e
FAULT at 0x6833c8

Where by the addresses listed as being written to (0x00000000 and
0x4f4f5c4e) are different
each module load, so they seem to be taken from uninitialized memory.

How different? This example appears to decode to:

$ ~/src/envytools/rnn/lookup -a 46 6833c8
PRMDIO2.PAL_INDEX => 0

Which is definitely video-related. Perhaps it's something executed by
a VBIOS script? (Or wait, you were thinking that 0x4f4f5c4e is the
address? no, that is the value being written. And it occurs to me that
that is 'N\OO' in fourcc. Probably irrelevant.) You may find 'nvbios'
a useful tool for decoding the bios scripts. Also the 3c8 is
suspiciously similar to the VGA I/O 0x3c4 (?) register? Probably
coincidence.

Ah yes I had the 2 value and address swapped. you're right it is writing
to 0x6833c8 usually 2 times, but sometimes it is writing to that register
a lot of times in a row, usually on a nouveau module reload.

Regards,

Hans
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to