-
Notifications
You must be signed in to change notification settings - Fork 70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GT 540M (nvc1): thread lockup, high CPU utilization #5
Comments
This is bad. I suspect that Gdev accesses Nouveau in a wrong way. It's certainly fixable, but I'm wondering how to fix it. I don't have 540M at my hand. However I have GTX 560 Ti with me. I can try to install your v3.5-rc5. Is it possible for you to put your kernel somewhere online I can access? |
The patch is on my Github for of gdev, in the The patch is identical to the one in your repository, except that Anyways, I compiled the kernel with that patch on the machine with GTX 560 Ti, and the following appeared in
The X server was completely unable to start with It seems some change in upstream nouveau causes the gdev patch to misbehave. Looking at the git log of the nouveau drivers in the kernel tree, there are several recent commits concerning PFIFO behaviour, the biggest of which is I find it a bit strange that the unknown PFIFO status is triggered even without loading the gdev module (on my laptop, it only occurs after context creation). |
Hi Kris, Thanks for the patch. I take a look. Regarding the error you encountered above, I would appreciate if you could post on #nouveau at IRC. Do you have an IRC account? Almost all Nouveau matters are discussed there. Shinpei |
I've been able to reproduce the issue initially described here with my GTX 550 Ti card. Working backwards, I've determined that the breakage occurred between v3.3 and v3.4 (v3.3 works, v3.4 behaves as described above). |
Actually, I'm quite surprised that v3.3 even works, as the latest version that I confirmed working with Gdev was v3.0. v3.4 must have introduced some features and hence they changed the functionality of Nouveau more or less. I'll look into the change history and update Gdev to work with it. Thanks! Shinpei |
Fixed. |
Could you post the commit which fixed this issue? I met the same problem when running an old version of gdev ( More specifically, Thanks! |
I am trying to get gdev run on my laptop with nVidia GT 540M which has Optimus features.
I had some success with porting the gdev-nouveau patch for a recent kernel (v3.5-rc5), as some older kernels seem to suffer from a regression that prevents nouveau from correctly loading the VBIOS of Optimus card.
I can get gdev load and initialize scheduling on my card.
I added some
printf
statemets to the (user-mode)madd
in order to trach exection but not interfere by using a debugger or similar tools.When I try to run it,
cuInit
andcuDeviceGet
runs successfully. Things start to get interesting withcuCtxCreate
, the first call that actually "does something" with the GPU. Although it returns successfully, the followingdmesg
output is produced:Lines marked by
***
were added by me, and complement the messages that would be printed in case of error. To sum up, the card gets into me sounknown state occurs, but some further memory allocations succeed and the CUDA context can be created.The test program continues from this point. However,
cuModuleLoad
never returns and the CPU core on whichmadd
runs gets stuck with 100% utilization. I cannot kill the test application with aSIGTERM
, nor aSIGKILL
, so I think it could be safely concluded that the kernel is stuck waiting for some spinlock.Because what
gdev_raw_ctx_new
does is basically some buffer object allocation withgdev_drv_bo_alloc
, I attempted fiddling with that method a bit. Setting an alignment value (0x1000
) does not help. I haven't much knowledge about the inner workings of nouveau, nor implementation details of nVidia card, and thegdev_drv_bo_alloc
-- comparing it with other code in v3.5-rc5's nouveau -- looked otherwise idiomatic to me, I cannot thing about anything else that could be done to fix this problem.Do you have any idea how could I get gdev work on my machine? The other card I have access to is GTX 560 Ti (nvc3), which is even newer and I imagine has even... lighter support in nouveau. Although of course I will try gdev on that machine too: the lack of Optimus might help a bit. But currently I only have remote access to that machine and random kernel panics could annoy the system administrators deeply.
I also tried the pscnv driver, but had even less success: it loads an invalid VBIOS from PCIROM, thus a
default:
case withBUG(1)
gets hit when pscnv tries to set the clock frequency for the card. (I wrote a patch for Bumblebee, the script that makes use of Optimus under Linux, to load pscnv. I will, for obvious reasons, only submit that patch to the Bumblebee git repo when I can actually load pscnv without a kernel panic.)The text was updated successfully, but these errors were encountered: