Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:Update
libvirt.6841
ff3112f3-qemu-hugepage-align-fix.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ff3112f3-qemu-hugepage-align-fix.patch of Package libvirt.6841
commit ff3112f3dc2c276a7e387ff7bb86f4fbbdf7bf2c Author: Martin Kletzander <mkletzan@redhat.com> Date: Fri Sep 23 11:31:30 2016 +0200 qemu: Only use memory-backend-file with NUMA if needed If this reminds you of a commit message from around a year ago, it's 41c2aa729f0af084ede95ee9a06219a2dd5fb5df and yes, we're dealing with "the same thing" again. Or f309db1f4d51009bad0d32e12efc75530b66836b and it's similar. There is a logic in place that if there is no real need for memory-backend-file, qemuBuildMemoryBackendStr() returns 0. However that wasn't the case with hugepage backing. The reason for that was that we abused the 'pagesize' variable for storing that information, but we should rather have a separate one that specifies whether we really need the new object for hugepage backing. And that variable should be set only if this particular NUMA cell needs special treatment WRT hugepages. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1372153 Signed-off-by: Martin Kletzander <mkletzan@redhat.com> Index: libvirt-2.0.0/src/qemu/qemu_command.c =================================================================== --- libvirt-2.0.0.orig/src/qemu/qemu_command.c +++ libvirt-2.0.0/src/qemu/qemu_command.c @@ -2935,6 +2935,7 @@ qemuBuildMemoryBackendStr(unsigned long int ret = -1; virJSONValuePtr props = NULL; bool nodeSpecified = virDomainNumatuneNodeSpecified(def->numa, guestNode); + bool needHugepage = !!pagesize; *backendProps = NULL; *backendType = NULL; @@ -2957,10 +2958,10 @@ qemuBuildMemoryBackendStr(unsigned long mode = VIR_DOMAIN_NUMATUNE_MEM_STRICT; if (pagesize == 0) { + bool thisHugepage = false; + /* Find the huge page size we want to use */ for (i = 0; i < def->mem.nhugepages; i++) { - bool thisHugepage = false; - hugepage = &def->mem.hugepages[i]; if (!hugepage->nodemask) { @@ -2982,6 +2983,7 @@ qemuBuildMemoryBackendStr(unsigned long if (thisHugepage) { /* Hooray, we've found the page size */ + needHugepage = true; break; } } @@ -3088,7 +3090,7 @@ qemuBuildMemoryBackendStr(unsigned long } /* If none of the following is requested... */ - if (!pagesize && !userNodeset && !memAccess && !nodeSpecified && !force) { + if (!needHugepage && !userNodeset && !memAccess && !nodeSpecified && !force) { /* report back that using the new backend is not necessary * to achieve the desired configuration */ ret = 1; Index: libvirt-2.0.0/tests/qemuxml2argvdata/qemuxml2argv-hugepages-pages2.args =================================================================== --- libvirt-2.0.0.orig/tests/qemuxml2argvdata/qemuxml2argv-hugepages-pages2.args +++ libvirt-2.0.0/tests/qemuxml2argvdata/qemuxml2argv-hugepages-pages2.args @@ -10,12 +10,10 @@ QEMU_AUDIO_DRV=none \ -M pc \ -m 1024 \ -smp 2 \ --object memory-backend-file,id=ram-node0,prealloc=yes,\ -mem-path=/dev/hugepages2M/libvirt/qemu,size=268435456 \ --numa node,nodeid=0,cpus=0,memdev=ram-node0 \ --object memory-backend-file,id=ram-node1,prealloc=yes,\ -mem-path=/dev/hugepages2M/libvirt/qemu,size=805306368 \ --numa node,nodeid=1,cpus=1,memdev=ram-node1 \ +-mem-prealloc \ +-mem-path /dev/hugepages2M/libvirt/qemu \ +-numa node,nodeid=0,cpus=0,mem=256 \ +-numa node,nodeid=1,cpus=1,mem=768 \ -uuid ef1bdff4-27f3-4e85-a807-5fb4d58463cc \ -nographic \ -nodefaults \
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor