Re: [libvirt] [Qemu-devel] pvpanic device should not be automatically included as an internal device

On 08/01/2013 08:18 AM, Gerd Hoffmann wrote:
On 08/01/13 15:08, Marcel Apfelbaum wrote:
Hi,
The problem with pvpanic being an internal device is that VMs running operating systems without a driver for this device will have problems when qemu will be upgraded (from qemu without this pvpanic).
The outcome may be, for example: in Windows(let's say XP) the Device manager will open a "new device" wizard and the device will appear as an unrecognized device.
Only happens when also changing the machine type on upgrade as it is turned off on old machine types.
But, yes, pvpanic will show up as "Unknown device" without driver and with the funky yellow exclamation mark in device manager in windows guests. Newer windows versions don't kick the "new device" wizard. But still I have my doubts that it is a good idea to add it unconditionally ...
Automatic devices with no command line argument have proven to be a nightmare for libvirt as well. Although the just-released libvirt 1.1.1 now supports the <on_crash> element for controlling the command line parameters of qemu related to how qemu will behave when the pvpanic device is triggered, I would also welcome having the ability to control whether the guest even has a pvpanic device exposed, just as we can control whether a guest has a memballoon device exposed. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On Thu, Aug 01, 2013 at 10:26:53AM -0600, Eric Blake wrote:
On 08/01/2013 08:18 AM, Gerd Hoffmann wrote:
On 08/01/13 15:08, Marcel Apfelbaum wrote:
Hi,
The problem with pvpanic being an internal device is that VMs running operating systems without a driver for this device will have problems when qemu will be upgraded (from qemu without this pvpanic).
The outcome may be, for example: in Windows(let's say XP) the Device manager will open a "new device" wizard and the device will appear as an unrecognized device.
Only happens when also changing the machine type on upgrade as it is turned off on old machine types.
But, yes, pvpanic will show up as "Unknown device" without driver and with the funky yellow exclamation mark in device manager in windows guests. Newer windows versions don't kick the "new device" wizard. But still I have my doubts that it is a good idea to add it unconditionally ...
Automatic devices with no command line argument have proven to be a nightmare for libvirt as well. Although the just-released libvirt 1.1.1 now supports the <on_crash> element for controlling the command line parameters of qemu related to how qemu will behave when the pvpanic device is triggered, I would also welcome having the ability to control whether the guest even has a pvpanic device exposed, just as we can control whether a guest has a memballoon device exposed.
A natural way to do this would be with -device pvpanic. I'm not sure why it wasn't done like this from the beginning, but it shouldn't be hard to redo, hopefully we can fix this bug in time for 1.6. -- MST

On Thu, 2013-08-01 at 19:31 +0300, Michael S. Tsirkin wrote:
On Thu, Aug 01, 2013 at 10:26:53AM -0600, Eric Blake wrote:
On 08/01/2013 08:18 AM, Gerd Hoffmann wrote:
On 08/01/13 15:08, Marcel Apfelbaum wrote:
Hi,
The problem with pvpanic being an internal device is that VMs running operating systems without a driver for this device will have problems when qemu will be upgraded (from qemu without this pvpanic).
The outcome may be, for example: in Windows(let's say XP) the Device manager will open a "new device" wizard and the device will appear as an unrecognized device.
Only happens when also changing the machine type on upgrade as it is turned off on old machine types.
But, yes, pvpanic will show up as "Unknown device" without driver and with the funky yellow exclamation mark in device manager in windows guests. Newer windows versions don't kick the "new device" wizard. But still I have my doubts that it is a good idea to add it unconditionally ...
Automatic devices with no command line argument have proven to be a nightmare for libvirt as well. Although the just-released libvirt 1.1.1 now supports the <on_crash> element for controlling the command line parameters of qemu related to how qemu will behave when the pvpanic device is triggered, I would also welcome having the ability to control whether the guest even has a pvpanic device exposed, just as we can control whether a guest has a memballoon device exposed.
A natural way to do this would be with -device pvpanic. I'm not sure why it wasn't done like this from the beginning, but it shouldn't be hard to redo, hopefully we can fix this bug in time for 1.6.
I'll come up with something, hopefully in time. Marcel

On 08/01/2013 06:26 PM, Eric Blake wrote:
On 08/01/2013 08:18 AM, Gerd Hoffmann wrote:
On 08/01/13 15:08, Marcel Apfelbaum wrote:
Hi,
The problem with pvpanic being an internal device is that VMs running operating systems without a driver for this device will have problems when qemu will be upgraded (from qemu without this pvpanic).
The outcome may be, for example: in Windows(let's say XP) the Device manager will open a "new device" wizard and the device will appear as an unrecognized device.
Only happens when also changing the machine type on upgrade as it is turned off on old machine types.
But, yes, pvpanic will show up as "Unknown device" without driver and with the funky yellow exclamation mark in device manager in windows guests. Newer windows versions don't kick the "new device" wizard. But still I have my doubts that it is a good idea to add it unconditionally ...
Automatic devices with no command line argument have proven to be a nightmare for libvirt as well. Although the just-released libvirt 1.1.1 now supports the <on_crash> element for controlling the command line parameters of qemu related to how qemu will behave when the pvpanic device is triggered, I would also welcome having the ability to control whether the guest even has a pvpanic device exposed, just as we can control whether a guest has a memballoon device exposed.
This is quite different from memballoon. pvpanic is a single I/O port, it doesn't use up a PCI slot (thus causing conflicts with other devices at the same address). Perhaps this issue is simply fixed by making the _STA method return 0x0B instead of 0x0F (i.e. turning off the "show in user interface" bit). Paolo

On 08/01/2013 04:23 PM, Paolo Bonzini wrote:
Automatic devices with no command line argument have proven to be a nightmare for libvirt as well. Although the just-released libvirt 1.1.1 now supports the <on_crash> element for controlling the command line parameters of qemu related to how qemu will behave when the pvpanic device is triggered, I would also welcome having the ability to control whether the guest even has a pvpanic device exposed, just as we can control whether a guest has a memballoon device exposed.
This is quite different from memballoon.
pvpanic is a single I/O port, it doesn't use up a PCI slot (thus causing conflicts with other devices at the same address).
Perhaps this issue is simply fixed by making the _STA method return 0x0B instead of 0x0F (i.e. turning off the "show in user interface" bit).
That may "fix" the issue of a windows guest showing the yellow ! mark, but what if, down the road, someone writes an actual windows driver that is aware of that port and how to make a windows BSOD write a panic notification to the port? How does a user go about installing such a driver if the device is not exposed in the user interface list of devices? -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On 08/02/2013 12:42 AM, Eric Blake wrote:
On 08/01/2013 04:23 PM, Paolo Bonzini wrote:
Automatic devices with no command line argument have proven to be a nightmare for libvirt as well. Although the just-released libvirt 1.1.1 now supports the <on_crash> element for controlling the command line parameters of qemu related to how qemu will behave when the pvpanic device is triggered, I would also welcome having the ability to control whether the guest even has a pvpanic device exposed, just as we can control whether a guest has a memballoon device exposed.
This is quite different from memballoon.
pvpanic is a single I/O port, it doesn't use up a PCI slot (thus causing conflicts with other devices at the same address).
Perhaps this issue is simply fixed by making the _STA method return 0x0B instead of 0x0F (i.e. turning off the "show in user interface" bit).
That may "fix" the issue of a windows guest showing the yellow ! mark, but what if, down the road, someone writes an actual windows driver that is aware of that port and how to make a windows BSOD write a panic notification to the port? How does a user go about installing such a driver if the device is not exposed in the user interface list of devices?
The user can still manually install a driver even for a device that is not exposed. Having to manually specify the pvpanic device would be yet another knob that nobody uses. Panic notification is a useful feature that should be supported with no particular intervention from the user. Paolo

On Fri, Aug 02, 2013 at 10:31:11AM +0200, Paolo Bonzini wrote:
On 08/02/2013 12:42 AM, Eric Blake wrote:
On 08/01/2013 04:23 PM, Paolo Bonzini wrote:
Automatic devices with no command line argument have proven to be a nightmare for libvirt as well. Although the just-released libvirt 1.1.1 now supports the <on_crash> element for controlling the command line parameters of qemu related to how qemu will behave when the pvpanic device is triggered, I would also welcome having the ability to control whether the guest even has a pvpanic device exposed, just as we can control whether a guest has a memballoon device exposed.
This is quite different from memballoon.
pvpanic is a single I/O port, it doesn't use up a PCI slot (thus causing conflicts with other devices at the same address).
Perhaps this issue is simply fixed by making the _STA method return 0x0B instead of 0x0F (i.e. turning off the "show in user interface" bit).
That may "fix" the issue of a windows guest showing the yellow ! mark, but what if, down the road, someone writes an actual windows driver that is aware of that port and how to make a windows BSOD write a panic notification to the port? How does a user go about installing such a driver if the device is not exposed in the user interface list of devices?
The user can still manually install a driver even for a device that is not exposed.
Having to manually specify the pvpanic device would be yet another knob that nobody uses. Panic notification is a useful feature that should be supported with no particular intervention from the user.
Yep, that was the big motivation behind doing it as an I/O port that we could have enabled by default, as opposed to a virtio serial device or some other paravirt device that required explicit configuration. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
participants (5)
-
Daniel P. Berrange
-
Eric Blake
-
Marcel Apfelbaum
-
Michael S. Tsirkin
-
Paolo Bonzini