** Description changed: [Impact] * A bad named define made timerfd_create be in the code but not available * two smaller fixes to be backported from upstream that change the define names; This will enable the timerfd_create in qemu-user [Test Case] - * Compile the attached source code using your host C compiler. - => https://launchpadlibrarian.net/401131808/timerfd_support_test.c - * Run the resulting binary. - > It should run for 3 seconds and print timer information. (sanity test) - * Compile the attached source code using a PowerPC cross compiler with - static linking enabled (to make the remaining steps simpler). - * Run the resulting binary using the unpatched qemu-user or qemu-user-static - executable for your selected PowerPC architecture. - > It should exit immediately complaining about an unsupported syscall. - * Run the same binary using the patched qemu-user or qemu-user-static - executable for your selected PowerPC architecture. - > It should behave as the host version did. - > If you chose a big-endian PowerPC architecture, the "timer expirations" - output may be "72057594037927936" instead of "1" because the bytes read - were in host byte order instead of target byte order. + * Compile the attached source code using your host C compiler. + => https://launchpadlibrarian.net/401131808/timerfd_support_test.c + $ apt install build-essential + $ gcc -Wall timertest.c -o timertest + * Run the resulting binary. + It should run for 3 seconds and print timer information. (sanity + test) + $ ./timertest + * Compile the attached source code using a PowerPC cross compiler with + static linking enabled (to make the remaining steps simpler). + $ apt install gcc-powerpc64-linux-gnu + $ powerpc64-linux-gnu-gcc -static -Wall timertest.c -o timertest + * Run the resulting binary using the unpatched qemu-user or qemu-user- + static executable for your selected PowerPC architecture. It should + exit immediately complaining about an unsupported syscall. + $ apt install qemu-user + $ qemu-ppc64 ./timertest + qemu: Unsupported syscall: 306 + timerfd_create(CLOCK_REALTIME): Function not implemented + + * Run the same binary using the patched qemu-user or qemu-user-static + executable for your selected PowerPC architecture. + It should behave as the host version did. + + Note: If you chose a big-endian PowerPC architecture, the "timer + expirations" output may be "72057594037927936" instead of "1" because + the bytes read were in host byte order instead of target byte order. + [Regression Potential] * The headers are only used internally so no outside regression should happen. * Even then only the names changed but the number stayed, that means even if it would be an external ABI (it isn't) the number would be the same * Internally the old define was only used when defining it, but not used (see grep in comment #1) * The one regression I could think of is software running in qemu-user today and working by having a path like "does this have timerfd create -> no, ok then do A", with the change this might become "-> yes, so do B" and if that B is broken there would be a regression, but I'd consider it unlikely since all versions after Xenials 2.5 had the new variant and I have seen no complaints about it. [Other Info] * n/a --- QEMU erroneously fails to detect support for the timerfd_create syscall when running user-mode emulation of PowerPC targets. QEMU supports the timerfd_create syscall, but because the PowerPC target syscall header has it named "timerfd" instead of "timerfd_create", support is erroneously not enabled. This notably affects anything that uses Boost.Asio with deadline timers because it uses timerfds under the hood. I have attached a patch to fix the problem. For now I have a custom- built qemu-user-static.deb file with this fix implemented, but I would appreciate it if you could officially backport this patch to 16.04 LTS (Xenial) so our developers can use the official package repositories.
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1807743 Title: QEMU timerfd_create support on PowerPC To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/1807743/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
