Michael Darling
2015-Aug-10 04:41 UTC
Re: [libvirt-users] machine='pc-q35-2.1' and sata controller
What's the status of the SATA controller migration bug? Are the patches for it expected to be in 2.4? Looks like they didn't make it into 2.3. Since you last wrote, if the SATA controller patches aren't in yet, is there any new way to avoid the SATA controller device, if you have no SATA devices? Thank you. === REPLYING TO == On 02/23/2015 02:26 PM, Thomas Stein wrote:> Hello. > > I'm not able to disable the sata controller on a machine='pc-q35-2.1' type VM. > Whenever i delete: > > <controller type='sata' index='0'> > <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' > function='0x2'/> > </controller> > > it gets added again when i close the editor. > > The reason i would like to delete the sata controller is this error while > trying to migrate the machine: > > 2015-02-23 19:04:11.181+0000: 1972: error : qemuMonitorJSONCheckError:381 : > internal error: unable to execute QEMU command 'migrate': State blocked by > non-migratable device '0000:00:1f.2/ich9_ahci' > > Someone has an idea to solve this? >Yep. You have described the situation perfectly. Here are my notes from libvirt commit c27b0bb171d9bdac10a93492a2a99eaa22746694, which fixed the handling of "default" devices in the Q35 machinetype: sata - a q35 machine always has a sata controller implicitly added at slot 0x1F, function 2. There is no way to avoid this controller, so we always add it. Note that the xml2xml tests for the pcie-root and q35 cases were changed to use DO_TEST_DIFFERENT() so that we can check for the sata controller being automatically added. This is especially important because we can't check for it in the xml2argv output (it has no effect on that output since it's an implicit device). So basically when you specify a q35 machinetype, you get a SATA controller at 00:1f.2 even though you have added no commandline args to ask for it. And unlike the default network device (which libvirt can eliminate by adding "-net none" to the qemu commandline), there is no way to avoid this device. And it is also true that any machine with a SATA controller can't be migrated because of problems with the driver. I just talked to the person responsible for fixing these bugs in qemu, and he said that the patches will go upstream "soon", and that he hopes they will be in qemu 2.3. In the meantime, the only way to avoid this problem is to switch to an i440fx-based machinetype (this will require removing all the pci controllers from your config as well as removing all <address type='pci' .../> elements within all devices in the domain; libvirt will then reassign PCI addresses in the guest appropriate to the new machine type. IMPORTANT: If the guest is running MS Windows, this may require a new "activation"; best to keep a copy of the old config and an image of the disk just in case there are problems!)
Laine Stump
2015-Aug-10 05:05 UTC
Re: [libvirt-users] machine='pc-q35-2.1' and sata controller
On 08/10/2015 12:41 AM, Michael Darling wrote:> What's the status of the SATA controller migration bug? Are the patches for it expected to be in 2.4? > Looks like they didn't make it into 2.3.That's a question better suited for the qemu developers than us. I'm Cc'ing John Snow, who authored the qemu patches. John?> Since you last wrote, if the SATA controller patches aren't in yet, is there any new way > to avoid the SATA controller device, if you have no SATA devices?No, it is impossible for libvirt to remove the SATA controller - as I explained in the email you replied to, if you start up a q35-based qemu virtual machine, it will have a SATA controller at 00:1f.2 and there is no way provided by qemu to prevent this, so we just have to live with it until it's fixed in qemu.
John Snow
2015-Aug-10 12:41 UTC
Re: [libvirt-users] machine='pc-q35-2.1' and sata controller
On 08/10/2015 01:05 AM, Laine Stump wrote:> On 08/10/2015 12:41 AM, Michael Darling wrote: >> What's the status of the SATA controller migration bug? Are the patches for it expected to be in 2.4? >> Looks like they didn't make it into 2.3. > > That's a question better suited for the qemu developers than us. I'm > Cc'ing John Snow, who authored the qemu patches. John? >All of the issues I am aware of have been fixed for 2.4. If you run into issues, please report them to me and qemu-devel@nongnu.org. Thanks!>> Since you last wrote, if the SATA controller patches aren't in yet, is there any new way >> to avoid the SATA controller device, if you have no SATA devices? > > No, it is impossible for libvirt to remove the SATA controller - as I > explained in the email you replied to, if you start up a q35-based qemu > virtual machine, it will have a SATA controller at 00:1f.2 and there is > no way provided by qemu to prevent this, so we just have to live with it > until it's fixed in qemu. >-- —js