| Summary: | Cannot boot earlier kernels; cannot run opengl drivers after upgrade before reboot | ||
|---|---|---|---|
| Product: | Fedora | Reporter: | Jonathan Larmour <jifl-rfbugzilla> |
| Component: | nvidia-kmod | Assignee: | Nicolas Chauvet <kwizart> |
| Status: | RESOLVED WONTFIX | ||
| Severity: | normal | CC: | fedora, s.adam |
| Priority: | P5 | ||
| Version: | 12 | ||
| Hardware: | x86_64 | ||
| OS: | GNU/Linux | ||
| namespace: | |||
|
Description
Jonathan Larmour
2010-05-28 01:30:51 CEST
(In reply to comment #0) > I had a problem with the latest F12 kernel and wanted to boot a previous kernel > - which was still available via GRUB. But the nvidia driver wouldn't work > because xorg-x11-drv-nvidia and xorg-x11-drv-nvidia-libs are tied to the > kmod-nvidia version. All of those packages had been updated by yum. This should work so long as the nVidia driver has not changed versions. Within the same nVidia driver release, you should be able to switch kernel versions provided you installed the kmod packages for that kernel. > I had to go through a complicated procedure to add the kmod-nvidia module for > the earlier kernel, and downgrade xorg-x11-drv-nvidia and > xorg-x11-drv-nvidia-libs to boot the earlier kernel. This doesn't seem very > good, especially if rpmfusion clears away old versions from its yum repo. You may be interested in akmod-nvidia; it will rebuild a kmod for you on startup if one isn't installed for the kernel you're booting. > I suspect this is also the cause of a problem which occurs after yum upgrades > to a new kernel, but before rebooting, OpenGL no longer works - presumably the > installed GL drivers no longer match the running kernel. Sorry, there isn't much we can do about this - a reboot is always required after nVidia driver updates. > In the same way that upgrading a kernel doesn't automatically erase older > kernels, can something similar be done for the nvidia kmod packages? The kmod packages themselves should not be removed automatically, but they may be getting uninstalled if yum is automatically removing old kernels. > For the xorg-x11-drv-nvidia code, that is perhaps more complicated, but maybe > setting up symlinks in post-install scripts would at least allow users to > change more easily. xorg-x11-drv-nvidia-libs should nearly work as-is, except > that the .so symlinks should go and be replaced by a post-install run of > ldconfig I think. It's not the file locations that are the problem, it's that it requires an Xorg restart or in the case of the kmod, we need to reload the module which all can only be done if the X server is terminated... The easiest way to do this for all users is just to ask them to reboot. There are other technical issues as well, but this is the most prevalent one. (In reply to comment #1) > (In reply to comment #0) > > I had a problem with the latest F12 kernel and wanted to boot a previous kernel > > - which was still available via GRUB. But the nvidia driver wouldn't work > > because xorg-x11-drv-nvidia and xorg-x11-drv-nvidia-libs are tied to the > > kmod-nvidia version. All of those packages had been updated by yum. > This should work so long as the nVidia driver has not changed versions. Within > the same nVidia driver release, you should be able to switch kernel versions > provided you installed the kmod packages for that kernel. Ah yes it had changed versions. > > I had to go through a complicated procedure to add the kmod-nvidia module for > > the earlier kernel, and downgrade xorg-x11-drv-nvidia and > > xorg-x11-drv-nvidia-libs to boot the earlier kernel. This doesn't seem very > > good, especially if rpmfusion clears away old versions from its yum repo. > You may be interested in akmod-nvidia; it will rebuild a kmod for you on > startup if one isn't installed for the kernel you're booting. I assuming the module source will be compatible with older kernel versions, then that sounds like exactly what I need, thanks! > > I suspect this is also the cause of a problem which occurs after yum upgrades > > to a new kernel, but before rebooting, OpenGL no longer works - presumably the > > installed GL drivers no longer match the running kernel. > Sorry, there isn't much we can do about this - a reboot is always required > after nVidia driver updates. If the nvidia driver has the same API, it shouldn't need a reboot. If it has a different API, then the shared libs should get a different version. In which case if nvidia drivers with different APIs could co-exist, then the problem would go away. That's why I was thinking out loud what may be needed to ensure the RPMs could be installed simultaneously. > > In the same way that upgrading a kernel doesn't automatically erase older > > kernels, can something similar be done for the nvidia kmod packages? > The kmod packages themselves should not be removed automatically, but they may > be getting uninstalled if yum is automatically removing old kernels. It may "just" be when the nvidia driver API has changed - I'll have to pay more attention to the specific versions on update. > > For the xorg-x11-drv-nvidia code, that is perhaps more complicated, but maybe > > setting up symlinks in post-install scripts would at least allow users to > > change more easily. xorg-x11-drv-nvidia-libs should nearly work as-is, except > > that the .so symlinks should go and be replaced by a post-install run of > > ldconfig I think. > It's not the file locations that are the problem, it's that it requires an Xorg > restart or in the case of the kmod, we need to reload the module which all can > only be done if the X server is terminated... The easiest way to do this for > all users is just to ask them to reboot. There are other technical issues as > well, but this is the most prevalent one. Again, if the xorg libs for different driver versions could overlap, then this may be able to be mostly solved. The running X server would be linked against shared libs of the older version, and it can use the older versions of everything else. The only time it would go wrong would be if the X server was restarted, in which case the loaded kernel module wouldn't match. But rebooting when you've already restarted X isn't as big a deal - it's less likely to affect users. Or there could be more "other technical issues" of which I'm blissfully unaware and I'm on a hiding to nothing :). >If the nvidia driver has the same API, it shouldn't need a reboot. If it has a
>different API, then the shared libs should get a different version. In which
>case if nvidia drivers with different APIs could co-exist, then the problem
>would go away. That's why I was thinking out loud what may be needed to ensure
>the RPMs could be installed simultaneously.
Either or not the driver share the same ABI, what the drivers checks is that the kernel module exactly match the xorg driver version.
That's often needed when userland need to match the kernel land counterpart even in opensource cases.
Our policy is then to :
- update the driver for a given kernel, push it to testing.
- build for the next kernel, push both to stable once such kernel is in updates.
That what each time we have a driver for the current kernel and the previous. If you want to have an update for another kernel, you need to have the corresponding kernel-devel and the related akmod.
There is nothing much we can do to improve that.
Now about the reload of the kernel module, it can only be done in level 3. Once you are in level 3, it doesnt make a much a difference over a reboot. If that's make a difference for you, then that's not a problem either because you will know how to do this manually.
For the record, even if I know how to do change the driver version, I won't do that. kernel page are huge and need to be continuous for the driver memory, so it's always better to reboot anyway.
|