mbox series

[v3,0/2] OpenBSD: Let QEMU 4.0 be usable from OpenBSD 6.0 and onwards

Message ID 20190307142822.8531-1-philmd@redhat.com (mailing list archive)
Headers show
Series OpenBSD: Let QEMU 4.0 be usable from OpenBSD 6.0 and onwards | expand

Message

Philippe Mathieu-Daudé March 7, 2019, 2:28 p.m. UTC
Since OpenBSD 6.0, the W^X protection is enforced by default.
TCG is incompatible with this protection, to be able to use the
QEMU binary, this protection has to be disabled.
The OpenBSD ports seens to have downstream patches to be able to
use QEMU, but these patches were never upstreamed.
This series allow to run QEMU when built from the mainstream sources.

I salvaged the minimum patches required to be able to run OpenBSD
from a previous series, which aimed at running the QEMU QTest suite
on OpenBSD. Sadly it seems there is not much interest in having this
OS covered by tests (except by Peter Maydell).

v2: https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg07513.html
v1: https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg06676.html

Philippe Mathieu-Daudé (2):
  oslib-posix: Ignore fcntl("/dev/null", F_SETFL, O_NONBLOCK) failure
  configure: Disable W^X on OpenBSD

 configure          | 11 +++++++++++
 util/oslib-posix.c | 12 ++++++++++++
 2 files changed, 23 insertions(+)

Comments

Thomas Huth March 7, 2019, 2:57 p.m. UTC | #1
On 07/03/2019 15.28, Philippe Mathieu-Daudé wrote:
> Since OpenBSD 6.0 [1], W^X is enforced by default [2].
> TCG requires WX access. Disable W^X if it is available.
> This fixes:
> 
>   # lm32-softmmu/qemu-system-lm32
>   Could not allocate dynamic translator buffer
> 
>   # sysctl kern.wxabort=1
>   kern.wxabort: 0 -> 1
>   # lm32-softmmu/qemu-system-lm32
>   mmap: Not supported
>   Abort trap (core dumped)
>   # gdb -q lm32-softmmu/qemu-system-lm32 qemu-system-lm32.core
>   (gdb) bt
>   #0  0x000017e3c156c50a in _thread_sys___syscall () at {standard input}:5
>   #1  0x000017e3c15e5d7a in *_libc_mmap (addr=Variable "addr" is not available.) at /usr/src/lib/libc/sys/mmap.c:47
>   #2  0x000017e17d9abc8b in alloc_code_gen_buffer () at /usr/src/qemu/accel/tcg/translate-all.c:1064
>   #3  0x000017e17d9abd04 in code_gen_alloc (tb_size=0) at /usr/src/qemu/accel/tcg/translate-all.c:1112
>   #4  0x000017e17d9abe81 in tcg_exec_init (tb_size=0) at /usr/src/qemu/accel/tcg/translate-all.c:1149
>   #5  0x000017e17d9897e9 in tcg_init (ms=0x17e45e456800) at /usr/src/qemu/accel/tcg/tcg-all.c:66
>   #6  0x000017e17d9891b8 in accel_init_machine (acc=0x17e3c3f50800, ms=0x17e45e456800) at /usr/src/qemu/accel/accel.c:63
>   #7  0x000017e17d989312 in configure_accelerator (ms=0x17e45e456800, progname=0x7f7fffff07b0 "lm32-softmmu/qemu-system-lm32") at /usr/src/qemu/accel/accel.c:111
>   #8  0x000017e17d9d8616 in main (argc=1, argv=0x7f7fffff06b8, envp=0x7f7fffff06c8) at vl.c:4325
> 
> [1] https://www.openbsd.org/faq/upgrade60.html
> [2] https://undeadly.org/cgi?action=article&sid=20160527203200
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>  configure | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/configure b/configure
> index cefeb8fcce..abfd60923a 100755
> --- a/configure
> +++ b/configure
> @@ -5835,6 +5835,17 @@ if test "$mingw32" = "yes" ; then
>      done
>  fi
>  
> +# Disable OpenBSD W^X if available
> +if test "$tcg" = "yes" && test "$targetos" = "OpenBSD"; then
> +    cat > $TMPC <<EOF
> +    int main(void) { return 0; }
> +EOF

You can use write_c_skeleton for this instead.

 Thomas
Daniel P. Berrangé March 7, 2019, 2:57 p.m. UTC | #2
On Thu, Mar 07, 2019 at 03:28:20PM +0100, Philippe Mathieu-Daudé wrote:
> Since OpenBSD 6.0, the W^X protection is enforced by default.
> TCG is incompatible with this protection, to be able to use the
> QEMU binary, this protection has to be disabled.
> The OpenBSD ports seens to have downstream patches to be able to
> use QEMU, but these patches were never upstreamed.
> This series allow to run QEMU when built from the mainstream sources.
> 
> I salvaged the minimum patches required to be able to run OpenBSD
> from a previous series, which aimed at running the QEMU QTest suite
> on OpenBSD. Sadly it seems there is not much interest in having this
> OS covered by tests (except by Peter Maydell).

What were the blocking issues with getting the test fixes accepted in
previous postings ?  Was it simply no one interested in reviewing it
or actual review problems ?

With our increased interest in CI & push to drop build targets which
are not actively maintained, I'd question whether OpenBSD (or any
build target in the same situation) should continue to be supported
if the test suite hasn't worked for several releases in a row & not
enough people are willing to contribute to fix it.

Regards,
Daniel
Philippe Mathieu-Daudé March 7, 2019, 4 p.m. UTC | #3
On 3/7/19 3:57 PM, Daniel P. Berrangé wrote:
> On Thu, Mar 07, 2019 at 03:28:20PM +0100, Philippe Mathieu-Daudé wrote:
>> Since OpenBSD 6.0, the W^X protection is enforced by default.
>> TCG is incompatible with this protection, to be able to use the
>> QEMU binary, this protection has to be disabled.
>> The OpenBSD ports seens to have downstream patches to be able to
>> use QEMU, but these patches were never upstreamed.
>> This series allow to run QEMU when built from the mainstream sources.
>>
>> I salvaged the minimum patches required to be able to run OpenBSD
>> from a previous series, which aimed at running the QEMU QTest suite
>> on OpenBSD. Sadly it seems there is not much interest in having this
>> OS covered by tests (except by Peter Maydell).
> 
> What were the blocking issues with getting the test fixes accepted in
> previous postings ?  Was it simply no one interested in reviewing it
> or actual review problems ?
> 
> With our increased interest in CI & push to drop build targets which
> are not actively maintained, I'd question whether OpenBSD (or any
> build target in the same situation) should continue to be supported
> if the test suite hasn't worked for several releases in a row & not
> enough people are willing to contribute to fix it.

It is true nobody complained about this OS since the 6.0 release on
Sep 1, 2016, more than 2 years ago.

Looking at the mailing archive, Peter is the only one reporting build
failures since.
Paolo Bonzini March 7, 2019, 4:35 p.m. UTC | #4
On 07/03/19 15:28, Philippe Mathieu-Daudé wrote:
> Since OpenBSD 6.0, the W^X protection is enforced by default.
> TCG is incompatible with this protection, to be able to use the
> QEMU binary, this protection has to be disabled.
> The OpenBSD ports seens to have downstream patches to be able to
> use QEMU, but these patches were never upstreamed.
> This series allow to run QEMU when built from the mainstream sources.
> 
> I salvaged the minimum patches required to be able to run OpenBSD
> from a previous series, which aimed at running the QEMU QTest suite
> on OpenBSD. Sadly it seems there is not much interest in having this
> OS covered by tests (except by Peter Maydell).
> 
> v2: https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg07513.html
> v1: https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg06676.html
> 
> Philippe Mathieu-Daudé (2):
>   oslib-posix: Ignore fcntl("/dev/null", F_SETFL, O_NONBLOCK) failure
>   configure: Disable W^X on OpenBSD
> 
>  configure          | 11 +++++++++++
>  util/oslib-posix.c | 12 ++++++++++++
>  2 files changed, 23 insertions(+)
> 

Queued, thanks.

Paolo