On 23 May 2015 at 18:14, Roman Bogorodskiy <bogorodskiy(a)gmail.com> wrote:
Daniel P. Berrange wrote:
> On Fri, May 22, 2015 at 05:59:49PM +0200, Michal Privoznik wrote:
> > On 22.05.2015 16:39, Dimitri John Ledkov wrote:
> > > On 22 May 2015 at 13:53, Michal Privoznik <mprivozn(a)redhat.com>
wrote:
> > >> On 22.05.2015 14:18, Daniel P. Berrange wrote:
> > >>> On Fri, May 22, 2015 at 01:13:40PM +0100, Dimitri John Ledkov
wrote:
> > >>>> # VIR_TEST_VERBOSE=1 VIR_TEST_DEBUG=1 ./qemuxml2argvtest
2>&1 | grep NUMA
> > >>>> 61) QEMU XML-2-ARGV hugepages-pages
> > >>>> ... libvirt: error : unsupported configuration: NUMA node 1
is
> > >>>> unavailable
> > >>>> 64) QEMU XML-2-ARGV hugepages-shared
> > >>>> ... libvirt: error : unsupported configuration: NUMA node 1
is
> > >>>> unavailable
> > >>>> 331) QEMU XML-2-ARGV numatune-memnode
> > >>>> ... libvirt: error : unsupported configuration: NUMA node 1
is
> > >>>> unavailable
> > >>>> 333) QEMU XML-2-ARGV numatune-memnode-no-memory
> > >>>> ... libvirt: error : unsupported configuration: NUMA node 3
is
> > >>>> unavailable
> > >>>> 336) QEMU XML-2-ARGV numatune-auto-prefer
> > >>>> ... libvirt: error : unsupported configuration: NUMA node 1
is
> > >>>> unavailable
> > >>>> 449) QEMU XML-2-ARGV memory-hotplug-dimm
> > >>>> ... libvirt: error : unsupported configuration: NUMA node 1
is
> > >>>> unavailable
> > >>>> 450) QEMU XML-2-ARGV memory-hotplug-dimm-addr
> > >>>> ... libvirt: error : unsupported configuration: NUMA node 1
is
> > >>>> unavailable
> > >>>>
> > >>>> So the test fails, but I don't believe I'm compiling
libvirt with
> > >>>> numad support... So I don't understand what is being
asserted here.
> > >>>
> > >>> Can you tell us more about what platform you are building on, and
> > >>> particularly what compiler & linker you are using
> > >>
> > >> And what arguments do you pass to configure.
<snip>
> > >
> >
> > So even though you are building with numactl, it seems to me like you
> > don't have numa_bitmask_isbitset(). Can you check config.log to see if
> > HAVE_NUMA_BITMASK_ISBITSET is defined to 1? If my guess is right, this
> > causes us to not mock virNumaNodeIsAvailable() and therefore we run the
> > original function which checks real host the build is ran on.
>
> Or is this not the same as the issue with inline that was seen with
> clang before ?
Yeah, it looks quite similar to that one.
By the way, clang doesn't do much inlining with -O0, I guess that could
be similar in gcc, so it should be a quick check to see if that's a
compiler problem.
It appears to be caused by optimisation flag, specifically:
export CFLAGS='-fno-semantic-interposition'
./configure --with-libvirtd --with-interface --with-numactl
--with-test=yes && make clean; make -j4 V=1; make -C tests check -j4
V=1
fails, yet:
export CFLAGS='-fsemantic-interposition'
./configure --with-libvirtd --with-interface --with-numactl
--with-test=yes && make clean; make -j4 V=1; make -C tests check -j4
V=1
Passes with gcc-5.1.
The docs for the flag are at:
https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Optimize-Options.html#index-...
"...With -fno-semantic-interposition the compiler assumes that if
interposition happens for functions the overwriting function will have
precisely the same semantics (and side effects). Similarly if
interposition happens for variables, the constructor of the variable
will be the same. The flag has no effect for functions explicitly
declared inline (where it is never allowed for interposition to change
semantics) and for symbols explicitly declared weak."
I will stop using "-fno-semantic-interposition" for now, but do you
think this is something that could be fixed in either numactl and/or
libvirt codebase? It is desirable to use -fno-semantic-interposition.
--
Regards,
Dimitri.
Pura Vida!
https://clearlinux.org
Open Source Technology Center
Intel Corporation (UK) Ltd. - Co. Reg. #1134945 - Pipers Way, Swindon SN3 1RJ.