[libvirt] [PATCH] libxl: always enable pae for x86_64 HVM

Jim Fehlig jfehlig at suse.com
Thu Jan 12 14:59:01 UTC 2017


On 01/12/2017 07:34 AM, Daniel P. Berrange wrote:
> On Thu, Jan 12, 2017 at 07:31:29AM -0700, Jim Fehlig wrote:
>> On 01/12/2017 02:06 AM, Martin Kletzander wrote:
>>> On Wed, Jan 11, 2017 at 05:45:27PM -0700, Jim Fehlig wrote:
>>>> For HVM domains, pae is only set in libxl_domain_build_info when
>>>> explicitly specified in the hypervisor <features> config. This is
>>>> fine for i686 machines, but is incorrect behavior for x86_64 machines
>>>> where pae must always be enabled. See the following discussion for
>>>> additional details
>>>>
>>>> https://www.redhat.com/archives/libvir-list/2017-January/msg00254.html
>>>> Signed-off-by: Jim Fehlig <jfehlig at suse.com>
>>>> ---
>>>> src/libxl/libxl_domain.c | 6 ++++++
>>>> 1 file changed, 6 insertions(+)
>>>>
>>>> diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c
>>>> index fbe7ee5..a5314b0 100644
>>>> --- a/src/libxl/libxl_domain.c
>>>> +++ b/src/libxl/libxl_domain.c
>>>> @@ -410,6 +410,12 @@ libxlDomainDefPostParse(virDomainDefPtr def,
>>>>     if (xenDomainDefAddImplicitInputDevice(def) < 0)
>>>>         return -1;
>>>>
>>>> +    /* For x86_64 HVM, always enable pae */
>>>> +    if (def->os.type == VIR_DOMAIN_OSTYPE_HVM &&
>>>> +        def->os.arch == VIR_ARCH_X86_64) {
>>>> +        def->features[VIR_DOMAIN_FEATURE_PAE] = VIR_TRISTATE_SWITCH_ON;
>>>> +    }
>>>> +
>>>
>>> This will even rewrite explicit <pae enabled='no/>
>>
>> According to docs/schemas/domaincommon.rng, pae is not a tristate :-). One
>> of the options for solving this problem is to make it one
>>
>> https://www.redhat.com/archives/libvir-list/2017-January/msg00254.html
>
> Heh, the schema is wrong then, since the code treats all features
> the same way, as tri-states :-)

src/conf/domain_conf.c treats them differently. E.g. see the features switch 
statement in the parse function

http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/conf/domain_conf.c;h=52aee2b020c12fd016fc14c1f4d7d2594e170817;hb=HEAD#l16997

# cat test.xml | grep pae
     <pae state='off'/>
# virt-xml-validate test.xml
Relax-NG validity error : Extra element features in interleave
test.xml:19: element features: Relax-NG validity error : Element domain failed 
to validate content
test.xml fails to validate
# virsh define test.xml
Domain test-hvm defined from test.xml

# virsh dumpxml test-hvm | grep pae
     <pae/>

Regards,
Jim




More information about the libvir-list mailing list