From: Eduardo Habkost <ehabkost@redhat.com>
To: Jiri Denemark <jdenemar@redhat.com>
Cc: thomas.lendacky@amd.com,
"Daniel P. Berrangé" <berrange@redhat.com>,
libvir-list@redhat.com, qemu-devel@nongnu.org,
luwei.kang@intel.com, "Robert Hoo" <robert.hu@linux.intel.com>,
kai.huang@intel.com, robert.hu@intel.com,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Jiri Denemark" <jdenemar@redhat.com>,
"Richard Henderson" <rth@twiddle.net>
Subject: Re: [RFC] cpu_map: Remove pconfig from Icelake-Server CPU model
Date: Mon, 30 Sep 2019 11:11:04 -0300 [thread overview]
Message-ID: <20190930141104.GA4084@habkost.net> (raw)
In-Reply-To: <20190930102453.GO4884@orkuz.int.mamuti.net>
CCing qemu-devel and QEMU developers.
On Mon, Sep 30, 2019 at 12:24:53PM +0200, Jiri Denemark wrote:
> On Thu, Sep 26, 2019 at 18:43:05 -0300, Eduardo Habkost wrote:
> > The pconfig feature never worked, and adding "pconfig=off" to the
> > QEMU command-line triggers a regression in QEMU 3.1.1 and 4.0.0.
> >
> > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> > ---
> > I'm sending this as an RFC because I couldn't test it properly,
> > and because I don't know what are the consequences of changing
> > cpu_map between libvirt versions.
> > ---
> > src/cpu_map/x86_Icelake-Server.xml | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/cpu_map/x86_Icelake-Server.xml b/src/cpu_map/x86_Icelake-Server.xml
> > index fb15977a59..188a781282 100644
> > --- a/src/cpu_map/x86_Icelake-Server.xml
> > +++ b/src/cpu_map/x86_Icelake-Server.xml
> > @@ -56,7 +56,9 @@
> > <feature name='pat'/>
> > <feature name='pcid'/>
> > <feature name='pclmuldq'/>
> > - <feature name='pconfig'/>
> > + <!-- 'pconfig' was added by accident in QEMU 3.1.0 but never worked.
> > + It was removed in QEMU 3.1.1 and 4.0.0. See QEMU commits
> > + 76e5a4d58357 and 712f807e1965 for details -->
> > <feature name='pdpe1gb'/>
> > <feature name='pge'/>
> > <feature name='pku'/>
>
> IIUC this never worked and a domain started with Icelake-Server CPU
> model would actually end up running with pconfig=off, right? In that
> case removing pconfig from Icelake-Server would not cause any issues
> when a domain is started. However, I'm afraid migration would be broken.
>
> If a domain is started by new libvirt (with this patch in) using
> Icelake-Server CPU model possibly with additional features added or
> removed, but without pconfig being explicitly mentioned, libvirt would
> not disable pconfig when updating active definition according to the
> actual CPU created by QEMU. This is because libvirt did not ask for
> pconfig (either explicitly or implicitly via the CPU model). When such
> domain gets migrated to an older libvirt (which thinks pconfig is part
> of Icelake-Server), it will complain that QEMU disabled pconfig while
> the source domain was running with pconfig enabled (which is an
> incorrect result caused by inconsistent view of the CPU model).
>
> Thus we would need to add a hack which would explicitly disable pconfig
> in the domain definition used for migration to make sure the destination
> libvirtd knows pconfig was disabled. New libvirt would just drop the
> disabled pconfig feature from the CPU definition before starting a
> domain.
>
> [1] From this point of view we could just keep the CPU model in libvirt
> untouched. This way pconfig would always be explicitly disabled when a
> domain is running and the host-model CPU definition would also show it
> as explicitly disabled.
>
> [2] However starting a domain with Icelake-Server so that it can be
> migrated or saved/restored on QEMU in 3.1.1 and 4.0.0 would be
> impossible. This can be solved by a different hack, which would drop
> pconfig=off from QEMU command line.
>
> [3] But if pconfig was removed from QEMU and never returned back, we
> could remove it from any domain XML we see (virQEMUCapsCPUFilterFeatures
> mentions several other features which we handle this way).
>
> That said, I think [3] would be the best option. But if QEMU cannot or
> doesn't want to remove pconfig completely, I'd go with [1] as the hack
> in [2] would be too ugly and confusing.
From the QEMU side, [3] is better, as pconfig was added by
accident in 3.1.0 and it would be simpler to not re-add it.
This might be a problem if there are plans to eventually make KVM
support pconfig, though. Paolo, Robert, are there plans to
support pconfig in KVM in the future?
--
Eduardo
next parent reply other threads:[~2019-09-30 14:12 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20190926214305.17690-1-ehabkost@redhat.com>
[not found] ` <20190930102453.GO4884@orkuz.int.mamuti.net>
2019-09-30 14:11 ` Eduardo Habkost [this message]
2019-09-30 14:31 ` [RFC] cpu_map: Remove pconfig from Icelake-Server CPU model Hu, Robert
2019-09-30 15:16 ` Paolo Bonzini
2019-09-30 16:16 ` Jiri Denemark
2019-10-01 9:20 ` Paolo Bonzini
2019-10-03 14:28 ` [libvirt] " Jiri Denemark
2019-10-01 0:51 ` Huang, Kai
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=20190930141104.GA4084@habkost.net \
--to=ehabkost@redhat.com \
--cc=berrange@redhat.com \
--cc=jdenemar@redhat.com \
--cc=kai.huang@intel.com \
--cc=libvir-list@redhat.com \
--cc=luwei.kang@intel.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=robert.hu@intel.com \
--cc=robert.hu@linux.intel.com \
--cc=rth@twiddle.net \
--cc=thomas.lendacky@amd.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).