Disable SSE optimizations on i386/amd64 for SlowBcopy.

It is supposed to be slow, and when such instructions are used to copy
data from/to mapped video memory, some hypervisors (e.g. KVM,
Microsoft Hyper-V) can generate SIGILL or SIGBUS exceptions, causing
Xorg to crash.

Bug report to OpenBSD by Max Parmer, fix from FreeBSD (Dimitry Andric)
via kettenis@

ok kettenis@
This commit is contained in:
matthieu 2017-08-07 19:17:56 +00:00
parent 38475bb3b2
commit b8da768ee9
2 changed files with 8 additions and 2 deletions

View File

@ -7,6 +7,11 @@ libmisc_la_SOURCES = SlowBcopy.c
AM_CPPFLAGS = $(XORG_INCS)
AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
if I386_VIDEO
NOSSE_CFLAGS = -mno-sse
endif
AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS) $(NOSSE_CFLAGS)
EXTRA_DIST = $(I386_SRCS) $(PORTIO_SRCS)

View File

@ -475,7 +475,8 @@ libmisc_la_SOURCES = SlowBcopy.c
#AM_LDFLAGS = -r
AM_CPPFLAGS = $(XORG_INCS)
AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
@I386_VIDEO_TRUE@NOSSE_CFLAGS = -mno-sse
AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS) $(NOSSE_CFLAGS)
EXTRA_DIST = $(I386_SRCS) $(PORTIO_SRCS)
all: all-am