
On Thu, Aug 22, 2013 at 09:16:57PM +0200, Paolo Bonzini wrote:
Il 22/08/2013 19:53, Laszlo Ersek ha scritto:
We should just introduce a simple watchdog device based on virtio and call it a day. Then it's cross platform, solves the guest enumeration problem, and libvirt can detect the presence of the new device. If the guest doesn't initialize the proposed virtio-panic device, then it will lie dormant too, just like the current pvpanic device. That's good.
However a new (standalone) virtio device will take up yet another PCI function (a full device if you want it to be hotpluggable). PCI functions are scarcer than ioports.
Not just that. Panic notifiers are called in a substantially unknown environment, with locks taken or interrupts already set up.
This is why we went for a simple ISA device. Configuration via ACPI follows naturally from there, and anyway any other standard of the day would have had the same problem with Windows. At some point we had ACPI methods instead of a simple ioport write, but we had to remove that because the ACPI subsystem might have had its lock taken.
Also, a virtio watchdog device makes little sense, IMHO. PV makes sense if emulation has insufficient performance, excessive CPU usage, or excessive complexity. We already have both an ISA and a PCI watchdog, and they serve their purpose wonderfully.
I also don't think that panic notifiers & watchdogs are really serving the same purpose. The panic notifier is an alert to a specific known kernel crash. A watchdog is merely a timeout, which is inferred to mean /something/ went wrong. Both have their uses IMHO & we should not conflate the two. 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 :|