Hello List, I am trying to solve bug 58556 [1], but I will need some help as I don't understand all that is going on. The system is composed of an NV96 (9600 GT) and an NVAC (9400 M) card; acceleration is disabled, otherwise the system hangs at boot after initialising the NV96 card. The problem consist of a complete garbage screen in console mode, and a one-third gabage screen in GUI. It appeared in commit 20abd1634a6e2eedb84ca977adea56b8aa06cc3e, as it was initialising some structures only when acceleration was on, even if it was later used in both cases. These structures changed in commit ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69, solving the initial issue but the problem still remains. After a few tests, it seems nouveau_channel_new is key to get a correct screen, though it is only called when acceleration is on; I didn't find which structures initialised by nouveau_channel_new are needed to get a clean screen, nor did I find any clues in debug messages. Does anyone have some clues about how it (should) works, or could give me some pointers? Thanks in advance for your help, Pierre Moreau [1]: https://bugs.freedesktop.org/show_bug.cgi?id=58556 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20140131/76f790c1/attachment-0001.html>
On Fri, Jan 31, 2014 at 8:09 AM, <pierre.morrow at free.fr> wrote:> Hello List, > > I am trying to solve bug 58556 [1], but I will need some help as I don't > understand all that is going on.Unfortunately this is a *massive* bug... and confused by the "other" very similar but apparently not identical bug in the system.> > The system is composed of an NV96 (9600 GT) and an NVAC (9400 M) card; > acceleration is disabled, otherwise the system hangs at boot after > initialising the NV96 card. > The problem consist of a complete garbage screen in console mode, and a > one-third gabage screen in GUI.What happens if you only enable acceleration on the NVAC card? (e.g. by hacking up nouveau to ignore the other one entirely). Wasn't there some thing where the NV96 card was effectively disabled but still appearing in PCI space? Or I might be thinking of a different mac situation...> > It appeared in commit 20abd1634a6e2eedb84ca977adea56b8aa06cc3e, as it was > initialising some structures only when acceleration was on, even if it was > later used in both cases. These structures changed in commit > ebb945a94bba2ce8dff7b0942ff2b3f2a52a0a69, solving the initial issue but the > problem still remains.As you probably saw, this is a MASSIVE commit. What exactly was the problem with 20abd1634a?> > After a few tests, it seems nouveau_channel_new is key to get a correct > screen, though it is only called when acceleration is on; I didn't find > which structures initialised by nouveau_channel_new are needed to get a > clean screen, nor did I find any clues in debug messages.Can you go into some detail on what these tests were that yielded a successful outcome? IIRC nouveau_channel_new is called to create a new... channel, which is used by drm clients. If you don't have acceleration, that whole api is disabled, so it shouldn't come up. I guess accel_init also initializes drm->channel which is the kernel channel for doing stuff. [Although TBH I'm not entirely sure how things work without acceleration enabled... but I think there's a non-fifo way to show images on the screen.] -ilia
----- Mail original -----> De: "Ilia Mirkin" <imirkin at alum.mit.edu> > ?: "pierre morrow" <pierre.morrow at free.fr> > Cc: nouveau at lists.freedesktop.org > Envoy?: Vendredi 31 Janvier 2014 21:16:40 > Objet: Re: [Nouveau] Help needed for bug 58556> Unfortunately this is a *massive* bug... and confused by the "other" > very similar but apparently not identical bug in the system.> What happens if you only enable acceleration on the NVAC card? (e.g. > by hacking up nouveau to ignore the other one entirely). Wasn't there > some thing where the NV96 card was effectively disabled but still > appearing in PCI space? Or I might be thinking of a different mac > situation...Well, if I disable acceleration for the NV96 card, it doesn't hang after initialising it, but I get spammed (I think it's PAGE_NOT_PRESENT errors, like [1], but my screen goes garbage at that point, so I can't read anything) later on, and I don't get to login. BTW, what could I do to get boot logs even if the system did not make it trough (apart from recording with my phone...)?> As you probably saw, this is a MASSIVE commit. What exactly was the > problem with 20abd1634a?The vblank structure was a little bit modified, and psw->vblank would be initialised only when acceleration is on (it was always initialised before), though it would be used inside functions called even when acceleration is off. You can see it in comments 18 [2] and 20 [3].> Can you go into some detail on what these tests were that yielded a > successful outcome? IIRC nouveau_channel_new is called to create a > new... channel, which is used by drm clients. If you don't have > acceleration, that whole api is disabled, so it shouldn't come up. I > guess accel_init also initializes drm->channel which is the kernel > channel for doing stuff. [Although TBH I'm not entirely sure how > things work without acceleration enabled... but I think there's a > non-fifo way to show images on the screen.]My tests were pretty bruteforcing ones: * comment all nouveau_accel_init content, and uncomment block by block until it works; * then comment all nouveau_channel_new content, and uncomment function by function until it works; * and finally, I did the same inside nouveau_channel_init (for this function, only the vram creation, gart creation and dma variables initialisation were enough to get a clean screen) . To sum up what pieces of nouveau_accel_init were needed to get a clean screen: * return if card is an NV96 one; * init fence; * run nouveau_channel_new: * nouveau_channel_ind * nouveau_channel_init, precisely these parts: * vram creation; * gart creation; * dma variables initialisation.> -iliaPierre Moreau [1]: nouveau E[PFB][0000:03:00:0] trapped write at 0x0000546000 on channel 0x0000fee0 [unknown] BAR/PFIFO_WRITE/FB reason: PAGE_NOT_PRESENT [2]: https://bugs.freedesktop.org/show_bug.cgi?id=58556#c18 [3]: https://bugs.freedesktop.org/show_bug.cgi?id=58556#c20 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20140131/c638909a/attachment.html>