From: Kevin Stange <kevin@steadfast.net>
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: George Dunlap <George.Dunlap@eu.citrix.com>,
xen-devel@lists.xenproject.org
Subject: Re: PCI Device Subtree Change from Traditional to Upstream
Date: Fri, 5 Jan 2018 14:56:16 -0600 [thread overview]
Message-ID: <4eb0ad8b-059e-7cb0-3523-aa499570afcd@steadfast.net> (raw)
In-Reply-To: <7cd695d9-860f-2322-ffdb-66fd4c2223bc@steadfast.net>
On 01/05/2018 11:10 AM, Kevin Stange wrote:
> On 01/04/2018 03:16 PM, Kevin Stange wrote:
>> On 01/04/2018 06:52 AM, Anthony PERARD wrote:
>>> On Wed, Jan 03, 2018 at 05:10:54PM -0600, Kevin Stange wrote:
>>>> On 01/03/2018 11:57 AM, Anthony PERARD wrote:
>>>>> On Wed, Dec 20, 2017 at 11:40:03AM -0600, Kevin Stange wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I've been working on transitioning a number of Windows guests under HVM
>>>>>> from using QEMU traditional to QEMU upstream as is recommended in the
>>>>>> documentation. When I move these guests, the PCI subtree for Xen
>>>>>> devices changes and Windows creates a totally new copy of each device.
>>>>>> Windows tracks down the storage without issue, but it treats the new
>>>>>> instance of the NIC driver as a new device and clears the network
>>>>>> configuration even though the MAC address is unchanged. Manually
>>>>>> booting the guest back on the traditional device model reactivates the
>>>>>> original PCI subtree and the old network configuration with it.
>>>>>>
>>>>>> The only thing that I have been able to find that's substantially
>>>>>> different comparing the device trees is that the device instance ID
>>>>>> values differ on the parent Xen PCI device:
>>>>>>
>>>>>> PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\3&267A616A&3&18
>>>>>>
>>>>>> PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01\3&267A616A&3&10
>>>>>>
>>>>>> Besides actually setting the guest to boot using QEMU traditional, is
>>>>>> there a way to convince Windows to treat these devices as the same? A
>>>>>> patch-based solution would be acceptable to me if there is one, but I
>>>>>> don't understand the code well enough to create my own solution.
>>>>>
>>>>> Hi Kevin,
>>>>>
>>>>> I've got a patch to QEMU that seems to do the trick:
>>>>>
>>>>> From: Anthony PERARD <anthony.perard@citrix.com>
>>>>> Subject: [PATCH] xen-platform: Hardcode PCI slot to 3
>>>>>
>>>>> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
>>>>> ---
>>>>> hw/i386/pc_piix.c | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>>>>> index 5e47528993..93e3a9a916 100644
>>>>> --- a/hw/i386/pc_piix.c
>>>>> +++ b/hw/i386/pc_piix.c
>>>>> @@ -405,7 +405,7 @@ static void pc_xen_hvm_init(MachineState *machine)
>>>>>
>>>>> bus = pci_find_primary_bus();
>>>>> if (bus != NULL) {
>>>>> - pci_create_simple(bus, -1, "xen-platform");
>>>>> + pci_create_simple(bus, PCI_DEVFN(3, 0), "xen-platform");
>>>>> }
>>>>> }
>>>>> #endif
>>>>>
>>>>>
>>>>> The same thing could be done by libxl, by providing specific command
>>>>> line options to qemu. (I think that could even be done via a different
>>>>> config file for the guest.)
>>>>
>>>> This patch doesn't seem to work for me. It seems like the device model
>>>> process is exiting immediately, but I haven't been able to find any
>>>> information as to what is going wrong. I tested with Xen 4.6.6 and the
>>>> QEMU packaged with that release. Should I try it on a different version
>>>> of Xen and QEMU?
>>>
>>> What this patch does is asking QEMU to insert the PCI card
>>> "xen-platform" into the 3rd PCI slot. My guess is that failed because
>>> there is already a PCI device there.
>>>
>>> You could check qemu's logs, it's in
>>> /var/log/xen/qemu-dm-${guest_name}.log
>>
>> The log file in question only says:
>>
>> qemu: terminating on signal 1 from pid 8865
>>
>>> Let's try something else, instead of patching QEMU, we can patch libxl,
>>> that might work better. Can you try this patch? (I've only test
>>> compiled.) I've write the patch for Xen 4.6, since that the version you
>>> are using.
>>
>> This isn't doing the trick either, with the same misbehavior. The log
>> file is the same in both cases.
>
> I'm getting confusing behavior here. I tried to boot a guest using a
> build with the second patch and behaves the way the first one did, with
> the qemu-system-i386 process exiting and preventing the guest from ever
> booting. However, I tried to downgrade the packages to completely
> unpatched version in preparation to reboot again and once the older copy
> of the runtime is installed, the qemu-system-i386 starts properly using
> the command line arguments that libxl had specified and the system comes
> up with the correct PCI subtree.
>
> This leads me to believe something about my build is screwed up somehow
> such that my qemu-system-i386 is broken. I'm quite sure I'm not
> applying any extra patches to it that weren't otherwise in the CentOS
> virt packages.
George pointed me at the fact I had failed to pull in the seabios
package from CentOS virt. The version from RHEL is broken and that was
my issue. Sorry for generating extra noise as a result.
I can confirm that patch 2 (and probably patch 1, really) work around
the issue for me. Thank you for the help!
It would be nice if there was a way to set default or override options
to domains from a configuration file that is read by libxl, qemu, or
libvirt but I see no code or documentation to support that right now.
--
Kevin Stange
Chief Technology Officer
Steadfast | Managed Infrastructure, Datacenter and Cloud Services
800 S Wells, Suite 190 | Chicago, IL 60607
312.602.2689 X203 | Fax: 312.602.2688
kevin@steadfast.net | www.steadfast.net
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
next prev parent reply other threads:[~2018-01-05 20:56 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-20 17:40 PCI Device Subtree Change from Traditional to Upstream Kevin Stange
2017-12-20 17:44 ` George Dunlap
2018-01-03 17:57 ` Anthony PERARD
2018-01-03 23:10 ` Kevin Stange
2018-01-04 12:52 ` Anthony PERARD
2018-01-04 13:26 ` Paul Durrant
2018-01-04 21:17 ` Kevin Stange
2018-01-05 9:03 ` Paul Durrant
2018-01-05 17:05 ` Kevin Stange
2018-01-04 21:16 ` Kevin Stange
2018-01-05 17:10 ` Kevin Stange
2018-01-05 20:56 ` Kevin Stange [this message]
2018-01-25 17:54 ` George Dunlap
2018-01-25 18:04 ` Anthony PERARD
2018-01-25 18:14 ` George Dunlap
2018-01-26 10:38 ` Paul Durrant
2019-04-08 9:46 ` George Dunlap
2019-04-08 9:46 ` [Xen-devel] " George Dunlap
2019-04-08 9:51 ` Paul Durrant
2019-04-08 9:51 ` [Xen-devel] " Paul Durrant
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4eb0ad8b-059e-7cb0-3523-aa499570afcd@steadfast.net \
--to=kevin@steadfast.net \
--cc=George.Dunlap@eu.citrix.com \
--cc=anthony.perard@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.