All of lore.kernel.org
 help / color / mirror / Atom feed
* RandR + i915 (HD 4600 / Haswell) -- Cannot switch from internal to 3x external
@ 2015-06-16 15:40 Nathan Schulte
  2015-06-17  8:46 ` Chris Wilson
  0 siblings, 1 reply; 6+ messages in thread
From: Nathan Schulte @ 2015-06-16 15:40 UTC (permalink / raw)
  To: xorg, intel-gfx

[-- Attachment #1: Type: text/plain, Size: 2184 bytes --]

I am running Debian Sid on a laptop machine with an Intel Haswell CPU 
with Intel HD 4600 graphics.

> $ Xorg -version
>
> X.Org X Server 1.17.1
> Release Date: 2015-02-10
> X Protocol Version 11, Revision 0
> Build Operating System: Linux 3.16.0-4-amd64 x86_64 Debian
> Current Operating System: Linux desmas-l 4.0.0-1-amd64 #1 SMP Debian 4.0.2-1 (2015-05-11) x86_64
> Kernel command line: BOOT_IMAGE=/vmlinuz-4.0.0-1-amd64 root=UUID=f5ba8b5c-63aa-4a67-a07c-dd8d3297b2d3 ro quiet
> Build Date: 04 May 2015  11:22:06PM
> xorg-server 2:1.17.1-2 (http://www.debian.org/support)
> Current version of pixman: 0.32.6
> 	Before reporting problems, check http://wiki.x.org
> 	to make sure that you have the latest version.

When using RandR (xrandr, arandr), I am unable to re-configure my 
displays from the one integrated in the machine (eDP1), to three 
external displays (in this case, HDMI1 (DP -> DVI via DP++), HDMI2 (HDMI 
-> DVI), HDMI3 (miniDP -> DVI); the machine has three external 
connectors).  I haven't played with DP and multi-stream transport, but I 
expect it would behave similarly (that is, annoyingly).

> xrandr: cannot find crtc for output HDMI

My work-around is to issue two RandR requests, with the first one 
enabling an external display, and the second one disabling the internal 
display and enabling the rest.  This is rather annoying and conflicts 
with some of the scripts I use to automatically configure my displays 
based upon context and hot-plug (autorandr).

The internal display is 1920x1080, and the three external displays are 
identical monitors with 1920x1200 resolution.  I believe this is key, 
and has to do with the number of available PLLs (2) and encoders (3) in 
the Intel hardware.

I've attached an strace (xrandr.log) of the xrandr command:

> xrandr \
>     --output DP2 --off \
>     --output DP1 --off \
>     --output HDMI3 --mode 1920x1200 --pos 3120x0 --rotate left \
>     --output HDMI2 --mode 1920x1200 --pos 1920x0 --rotate left \
>     --output HDMI1 --primary --mode 1920x1200 --pos 0x410 --rotate normal \
>     --output eDP1 --off \
>     --output VGA1 --off

Any help resolving this issue is greatly appreciated.

--
Nate

[-- Attachment #2: xrandr.log --]
[-- Type: text/x-log, Size: 32342 bytes --]

execve("/usr/bin/xrandr", ["xrandr", "--output", "DP2", "--off", "--output", "DP1", "--off", "--output", "HDMI3", "--mode", "1920x1200", "--pos", "3120x0", "--rotate", "left", "--output", ...], [/* 30 vars */]) = 0
brk(0)                                  = 0x1e18000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f190cfe8000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=104928, ...}) = 0
mmap(NULL, 104928, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f190cfce000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libXrandr.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\34\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=39256, ...}) = 0
mmap(NULL, 2134536, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f190cbc0000
mprotect(0x7f190cbc9000, 2093056, PROT_NONE) = 0
mmap(0x7f190cdc8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7f190cdc8000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libXrender.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\33\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=39480, ...}) = 0
mmap(NULL, 2134760, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f190c9b6000
mprotect(0x7f190c9bf000, 2093056, PROT_NONE) = 0
mmap(0x7f190cbbe000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7f190cbbe000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libX11.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\337\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1319088, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f190cfcd000
mmap(NULL, 3416352, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f190c673000
mprotect(0x7f190c7af000, 2093056, PROT_NONE) = 0
mmap(0x7f190c9ae000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13b000) = 0x7f190c9ae000
mmap(0x7f190c9b5000, 288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f190c9b5000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200U\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1051056, ...}) = 0
mmap(NULL, 3146072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f190c372000
mprotect(0x7f190c472000, 2093056, PROT_NONE) = 0
mmap(0x7f190c671000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xff000) = 0x7f190c671000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\34\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1729984, ...}) = 0
mmap(NULL, 3836448, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f190bfc9000
mprotect(0x7f190c168000, 2097152, PROT_NONE) = 0
mmap(0x7f190c368000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19f000) = 0x7f190c368000
mmap(0x7f190c36e000, 14880, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f190c36e000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libXext.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p7\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=73704, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f190cfcc000
mmap(NULL, 2169560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f190bdb7000
mprotect(0x7f190bdc8000, 2093056, PROT_NONE) = 0
mmap(0x7f190bfc7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x7f190bfc7000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libxcb.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\234\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=138016, ...}) = 0
mmap(NULL, 2233352, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f190bb95000
mprotect(0x7f190bbb6000, 2093056, PROT_NONE) = 0
mmap(0x7f190bdb5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x20000) = 0x7f190bdb5000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14664, ...}) = 0
mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f190b991000
mprotect(0x7f190b994000, 2093056, PROT_NONE) = 0
mmap(0x7f190bb93000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f190bb93000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f190cfcb000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libXau.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14544, ...}) = 0
mmap(NULL, 2109744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f190b78d000
mprotect(0x7f190b790000, 2093056, PROT_NONE) = 0
mmap(0x7f190b98f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f190b98f000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\24\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=22704, ...}) = 0
mmap(NULL, 2117912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f190b587000
mprotect(0x7f190b58c000, 2093056, PROT_NONE) = 0
mmap(0x7f190b78b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x7f190b78b000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f190cfca000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f190cfc9000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f190cfc8000
arch_prctl(ARCH_SET_FS, 0x7f190cfc9700) = 0
mprotect(0x7f190c368000, 16384, PROT_READ) = 0
mprotect(0x7f190b78b000, 4096, PROT_READ) = 0
mprotect(0x7f190b98f000, 4096, PROT_READ) = 0
mprotect(0x7f190bb93000, 4096, PROT_READ) = 0
mprotect(0x7f190bdb5000, 4096, PROT_READ) = 0
mprotect(0x7f190c9ae000, 8192, PROT_READ) = 0
mprotect(0x7f190bfc7000, 4096, PROT_READ) = 0
mprotect(0x7f190c671000, 4096, PROT_READ) = 0
mprotect(0x7f190cbbe000, 4096, PROT_READ) = 0
mprotect(0x7f190cdc8000, 4096, PROT_READ) = 0
mprotect(0x60c000, 4096, PROT_READ)     = 0
mprotect(0x7f190cfea000, 4096, PROT_READ) = 0
munmap(0x7f190cfce000, 104928)          = 0
brk(0)                                  = 0x1e18000
brk(0x1e39000)                          = 0x1e39000
socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0) = 3
connect(3, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X0"}, 20) = 0
getpeername(3, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X0"}, [20]) = 0
uname({sysname="Linux", nodename="desmas-l", ...}) = 0
access("/home/nmschulte/.Xauthority", R_OK) = 0
open("/home/nmschulte/.Xauthority", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0600, st_size=102, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f190cfe7000
read(4, "\1\0\0\10desmas-l\0\0010\0\22MIT-MAGIC-COOKI"..., 4096) = 102
read(4, "", 4096)                       = 0
close(4)                                = 0
munmap(0x7f190cfe7000, 4096)            = 0
getsockname(3, {sa_family=AF_LOCAL, NULL}, [2]) = 0
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"l\0\v\0\0\0\22\0\20\0\0\0", 12}, {"", 0}, {"MIT-MAGIC-COOKIE-1", 18}, {"\0\0", 2}, {"\364\370\307x]\202\271\6\26\2653i\364\36\37{", 16}, {"", 0}], 6) = 48
recvfrom(3, 0x1e19e20, 8, 0, 0, 0)      = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\1\0\v\0\0\0#\1", 8, 0, NULL, NULL) = 8
recvfrom(3, "\10\213\262\0\0\0\200\2\377\377\37\0\0\1\0\0\24\0\377\377\1\7\0\0  \10\377\0\0\0\0"..., 1164, 0, NULL, NULL) = 1164
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"b\0\5\0\f\0\0\0BIG-REQUESTS", 20}], 1) = 20
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\1\0\0\0\0\0\1\205\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\205\0\1\0", 4}], 1)       = 4
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\2\0\0\0\0\0\377\377?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"7\0\5\0\0\0\200\2\16\1\0\0\10\0\0\0\377\377\377\0\24\0\6\0\16\1\0\0\27\0\0\0"..., 44}, {NULL, 0}, {"", 0}], 3) = 44
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\10\4\0\307\0\0\0\37\0\0\0\0\0\0\0\33\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 828
recvmsg(3, 0x7ffcb09b3ae0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"b\0\5\0\t\0\200\2", 8}, {"XKEYBOARD", 9}, {"\0\0\0", 3}], 3) = 20
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\5\0\0\0\0\0\1\207U\211\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b39b0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b39b0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\207\0\2\0\1\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\1\6\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3a60, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3a60, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"b\0\4\0\5\0\0\0", 8}, {"RANDR", 5}, {"\0\0\0", 3}], 3) = 16
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\7\0\0\0\0\0\1\214Y\223\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"b\0\10\0\27\0\0\0", 8}, {"Generic Event Extension", 23}, {"\0", 1}], 3) = 32
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\10\0\0\0\0\0\1\200\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3a00, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3a00, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\200\0\2\0\1\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\t\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3ac0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3ac0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\0\3\0\1\0\0\0\4\0\0\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\n\0\0\0\0\0\1\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3b80, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3b80, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\6\2\0\16\1\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\v\0\0\0\0\0\10\0\10\0\377\177\377\177\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3b50, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3b50, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\10\2\0\16\1\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\f\0L\1\0\0\343I5\0\350\356\1\0\4\0\10\0 \0\0\1\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 1360
recvmsg(3, 0x7ffcb09b3ad0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3ad0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\24\3\0u\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\r\0\7\0\0\0\343I5\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0?\0\0\0\7\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 60
recvmsg(3, 0x7ffcb09b3ae0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3ae0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\34\2\0u\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\16\0\1\0\0\0\343I5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 36
recvmsg(3, 0x7ffcb09b3b10, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3b10, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\33\2\0u\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\17\0\20\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 96
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\24\3\0v\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\20\0\10\0\0\0\343I5\0\0\0\0\0\200\0078\4$\1\0\0\1\0?\0\1\0\7\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 64
recvmsg(3, 0x7ffcb09b3ae0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3ae0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\34\2\0v\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\21\0\1\0\0\0\343I5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 36
recvmsg(3, 0x7ffcb09b3b10, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3b10, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\33\2\0v\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\22\0\20\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 96
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\24\3\0w\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\23\0\7\0\0\0\343I5\0000\f\0\0\0\0\0\0\0\0\0\0\2\0?\0\0\0\7\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 60
recvmsg(3, 0x7ffcb09b3ae0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3ae0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\34\2\0w\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\24\0\1\0\0\0\343I5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 36
recvmsg(3, 0x7ffcb09b3b10, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3b10, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\33\2\0w\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\25\0\20\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 96
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\24\3\0x\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\26\0\1\0\0\0\343I5\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0?\0\0\0\1\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 36
recvmsg(3, 0x7ffcb09b3ae0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3ae0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\34\2\0x\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\27\0\1\0\0\0\343I5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 36
recvmsg(3, 0x7ffcb09b3b10, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3b10, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\33\2\0x\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\30\0\20\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 96
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\t\3\0y\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\31\0\26\0\0\0\343I5\0v\0\0\0X\1\0\0\301\0\0\0\0\0\3\0\21\0\1\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 120
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\26\2\0v\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\32\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3ab0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3ab0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\27\2\0v\0\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\33\0\200\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 1568
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\37\2\0\16\1\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\34\0\0\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\t\3\0z\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\35\0\6\0\0\0\343I5\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\3\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 56
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\37\2\0\16\1\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\36\0\0\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\t\3\0{\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\37\0\6\0\0\0\343I5\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\3\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 56
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\37\2\0\16\1\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0 \0\0\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\t\3\0|\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0!\0\33\0\0\0\343I5\0\0\0\0\0\6\2\0\0D\1\0\0\0\0\3\0\24\0\1\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 140
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\t\3\0}\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\"\0\32\0\0\0\343I5\0\0\0\0\0\6\2\0\0D\1\0\0\0\0\3\0\24\0\1\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 136
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\37\2\0\16\1\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0#\0\0\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\t\3\0~\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0$\0\33\0\0\0\343I5\0\0\0\0\0\6\2\0\0D\1\0\0\0\0\3\0\24\0\1\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 140
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\37\2\0\16\1\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0%\0\0\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\t\3\0\177\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0&\0\5\0\0\0\343I5\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\3\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 52
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\37\2\0\16\1\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0'\0\0\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\t\3\0\200\0\0\0\350\356\1\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0(\0\4\0\0\0\343I5\0\0\0\0\0\0\0\0\0\0\0\0\0\1\5\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 48
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3a70, 0)           = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"\214\37\2\0\16\1\0\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=3, events=POLLIN}], 1, 4294967295) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0)\0\0\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(3, 0x7ffcb09b3aa0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
write(2, "xrandr: ", 8xrandr: )                 = 8
write(2, "cannot find crtc for output HDMI"..., 34cannot find crtc for output HDMI1
) = 34
exit_group(1)                           = ?
+++ exited with 1 +++

[-- Attachment #3: Type: text/plain, Size: 223 bytes --]

_______________________________________________
xorg@lists.x.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.x.org/mailman/listinfo/xorg
Your subscription address: %(user_address)s

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: RandR + i915 (HD 4600 / Haswell) -- Cannot switch from internal to 3x external
  2015-06-16 15:40 RandR + i915 (HD 4600 / Haswell) -- Cannot switch from internal to 3x external Nathan Schulte
@ 2015-06-17  8:46 ` Chris Wilson
  2015-06-17  9:13   ` Chris Wilson
  0 siblings, 1 reply; 6+ messages in thread
From: Chris Wilson @ 2015-06-17  8:46 UTC (permalink / raw)
  To: Nathan Schulte; +Cc: intel-gfx, xorg

On Tue, Jun 16, 2015 at 10:40:17AM -0500, Nathan Schulte wrote:
> I am running Debian Sid on a laptop machine with an Intel Haswell
> CPU with Intel HD 4600 graphics.
> 
> >$ Xorg -version
> >
> >X.Org X Server 1.17.1
> >Release Date: 2015-02-10
> >X Protocol Version 11, Revision 0
> >Build Operating System: Linux 3.16.0-4-amd64 x86_64 Debian
> >Current Operating System: Linux desmas-l 4.0.0-1-amd64 #1 SMP Debian 4.0.2-1 (2015-05-11) x86_64
> >Kernel command line: BOOT_IMAGE=/vmlinuz-4.0.0-1-amd64 root=UUID=f5ba8b5c-63aa-4a67-a07c-dd8d3297b2d3 ro quiet
> >Build Date: 04 May 2015  11:22:06PM
> >xorg-server 2:1.17.1-2 (http://www.debian.org/support)
> >Current version of pixman: 0.32.6
> >	Before reporting problems, check http://wiki.x.org
> >	to make sure that you have the latest version.
> 
> When using RandR (xrandr, arandr), I am unable to re-configure my
> displays from the one integrated in the machine (eDP1), to three
> external displays (in this case, HDMI1 (DP -> DVI via DP++), HDMI2
> (HDMI -> DVI), HDMI3 (miniDP -> DVI); the machine has three external
> connectors).  I haven't played with DP and multi-stream transport,
> but I expect it would behave similarly (that is, annoyingly).
> 
> >xrandr: cannot find crtc for output HDMI
> 
> My work-around is to issue two RandR requests, with the first one
> enabling an external display, and the second one disabling the
> internal display and enabling the rest.  This is rather annoying and
> conflicts with some of the scripts I use to automatically configure
> my displays based upon context and hot-plug (autorandr).
> 
> The internal display is 1920x1080, and the three external displays
> are identical monitors with 1920x1200 resolution.  I believe this is
> key, and has to do with the number of available PLLs (2) and
> encoders (3) in the Intel hardware.
> 
> I've attached an strace (xrandr.log) of the xrandr command:
> 
> >xrandr \
> >    --output DP2 --off \
> >    --output DP1 --off \
> >    --output HDMI3 --mode 1920x1200 --pos 3120x0 --rotate left \
> >    --output HDMI2 --mode 1920x1200 --pos 1920x0 --rotate left \
> >    --output HDMI1 --primary --mode 1920x1200 --pos 0x410 --rotate normal \
> >    --output eDP1 --off \
> >    --output VGA1 --off
> 
> Any help resolving this issue is greatly appreciated.

I think this is the right fix:

diff --git a/xrandr.c b/xrandr.c
index fbfd93e..c0feac3 100644
--- a/xrandr.c
+++ b/xrandr.c
@@ -3029,7 +3029,7 @@ main (int argc, char **argv)
            if (!config_output) argerr ("%s must be used after --output\n", argv[i]);
            set_name_xid (&config_output->mode, None);
            set_name_xid (&config_output->crtc, None);
-           config_output->changes |= changes_mode;
+           config_output->changes |= changes_mode | changes_crtc;
            continue;
        }
        if (!strcmp ("--fb", argv[i])) {

-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: RandR + i915 (HD 4600 / Haswell) -- Cannot switch from internal to 3x external
  2015-06-17  8:46 ` Chris Wilson
@ 2015-06-17  9:13   ` Chris Wilson
  2015-06-17 14:56     ` Nathan Schulte
  0 siblings, 1 reply; 6+ messages in thread
From: Chris Wilson @ 2015-06-17  9:13 UTC (permalink / raw)
  To: Nathan Schulte, xorg, intel-gfx

On Wed, Jun 17, 2015 at 09:46:25AM +0100, Chris Wilson wrote:
> On Tue, Jun 16, 2015 at 10:40:17AM -0500, Nathan Schulte wrote:
> > I am running Debian Sid on a laptop machine with an Intel Haswell
> > CPU with Intel HD 4600 graphics.
> > 
> > >$ Xorg -version
> > >
> > >X.Org X Server 1.17.1
> > >Release Date: 2015-02-10
> > >X Protocol Version 11, Revision 0
> > >Build Operating System: Linux 3.16.0-4-amd64 x86_64 Debian
> > >Current Operating System: Linux desmas-l 4.0.0-1-amd64 #1 SMP Debian 4.0.2-1 (2015-05-11) x86_64
> > >Kernel command line: BOOT_IMAGE=/vmlinuz-4.0.0-1-amd64 root=UUID=f5ba8b5c-63aa-4a67-a07c-dd8d3297b2d3 ro quiet
> > >Build Date: 04 May 2015  11:22:06PM
> > >xorg-server 2:1.17.1-2 (http://www.debian.org/support)
> > >Current version of pixman: 0.32.6
> > >	Before reporting problems, check http://wiki.x.org
> > >	to make sure that you have the latest version.
> > 
> > When using RandR (xrandr, arandr), I am unable to re-configure my
> > displays from the one integrated in the machine (eDP1), to three
> > external displays (in this case, HDMI1 (DP -> DVI via DP++), HDMI2
> > (HDMI -> DVI), HDMI3 (miniDP -> DVI); the machine has three external
> > connectors).  I haven't played with DP and multi-stream transport,
> > but I expect it would behave similarly (that is, annoyingly).
> > 
> > >xrandr: cannot find crtc for output HDMI
> > 
> > My work-around is to issue two RandR requests, with the first one
> > enabling an external display, and the second one disabling the
> > internal display and enabling the rest.  This is rather annoying and
> > conflicts with some of the scripts I use to automatically configure
> > my displays based upon context and hot-plug (autorandr).
> > 
> > The internal display is 1920x1080, and the three external displays
> > are identical monitors with 1920x1200 resolution.  I believe this is
> > key, and has to do with the number of available PLLs (2) and
> > encoders (3) in the Intel hardware.
> > 
> > I've attached an strace (xrandr.log) of the xrandr command:
> > 
> > >xrandr \
> > >    --output DP2 --off \
> > >    --output DP1 --off \
> > >    --output HDMI3 --mode 1920x1200 --pos 3120x0 --rotate left \
> > >    --output HDMI2 --mode 1920x1200 --pos 1920x0 --rotate left \
> > >    --output HDMI1 --primary --mode 1920x1200 --pos 0x410 --rotate normal \
> > >    --output eDP1 --off \
> > >    --output VGA1 --off
> > 
> > Any help resolving this issue is greatly appreciated.
> 
> I think this is the right fix:
> 
> diff --git a/xrandr.c b/xrandr.c
> index fbfd93e..c0feac3 100644
> --- a/xrandr.c
> +++ b/xrandr.c
> @@ -3029,7 +3029,7 @@ main (int argc, char **argv)
>             if (!config_output) argerr ("%s must be used after --output\n", argv[i]);
>             set_name_xid (&config_output->mode, None);
>             set_name_xid (&config_output->crtc, None);
> -           config_output->changes |= changes_mode;
> +           config_output->changes |= changes_mode | changes_crtc;
>             continue;
>         }
>         if (!strcmp ("--fb", argv[i])) {

Though there is still this logic in check_crtc_for_output:

  if (crtc->notput) { // check we can clone in our configuration
      ...
  } else if (crtc->crtc_info->noutput) { // check against old
  }

But we never ignore the old configuration when we disable all the
outputs on it. So to avoid running out of CRTC prematurely, we also need
to stop considering the old configuration like:

diff --git a/xrandr.c b/xrandr.c
index c0feac3..181c76e 100644
--- a/xrandr.c
+++ b/xrandr.c
@@ -2243,6 +2243,8 @@ static void
 pick_crtcs (void)
 {
     output_t   *output;
+    int saved_crtc_noutput[num_crtcs];
+    int n;
 
     /*
      * First try to match up newly enabled outputs with spare crtcs
@@ -2274,7 +2276,18 @@ pick_crtcs (void)
      */
     for (output = all_outputs; output; output = output->next)
        output->current_crtc_info = output->crtc_info;
+
+    /* Mark all CRTC as currently unused */
+    for (n = 0; n < num_crtcs; n++) {
+           saved_crtc_noutput[n] = crtcs[n].crtc_info->noutput;
+           crtcs[n].crtc_info->noutput = 0;
+    }
+
     pick_crtcs_score (all_outputs);
+
+    for (n = 0; n < num_crtcs; n++)
+           crtcs[n].crtc_info->noutput = saved_crtc_noutput[n];
+
     for (output = all_outputs; output; output = output->next)
     {
        if (output->mode_info && !output->crtc_info)

-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: RandR + i915 (HD 4600 / Haswell) -- Cannot switch from internal to 3x external
  2015-06-17  9:13   ` Chris Wilson
@ 2015-06-17 14:56     ` Nathan Schulte
  2015-06-17 18:05       ` Nathan Schulte
  0 siblings, 1 reply; 6+ messages in thread
From: Nathan Schulte @ 2015-06-17 14:56 UTC (permalink / raw)
  To: Chris Wilson, xorg, intel-gfx

On 06/17/2015 04:13 AM, Chris Wilson wrote:
> On Wed, Jun 17, 2015 at 09:46:25AM +0100, Chris Wilson wrote:
>> I think this is the right fix:
>>
>> diff --git a/xrandr.c b/xrandr.c
>> index fbfd93e..c0feac3 100644
>> --- a/xrandr.c
>> +++ b/xrandr.c
>> @@ -3029,7 +3029,7 @@ main (int argc, char **argv)
>>              if (!config_output) argerr ("%s must be used after --output\n", argv[i]);
>>              set_name_xid (&config_output->mode, None);
>>              set_name_xid (&config_output->crtc, None);
>> -           config_output->changes |= changes_mode;
>> +           config_output->changes |= changes_mode | changes_crtc;
>>              continue;
>>          }
>>          if (!strcmp ("--fb", argv[i])) {
>
> Though there is still this logic in check_crtc_for_output:
>
>    if (crtc->notput) { // check we can clone in our configuration
>        ...
>    } else if (crtc->crtc_info->noutput) { // check against old
>    }
>
> But we never ignore the old configuration when we disable all the
> outputs on it. So to avoid running out of CRTC prematurely, we also need
> to stop considering the old configuration like:
>
> diff --git a/xrandr.c b/xrandr.c
> index c0feac3..181c76e 100644
> --- a/xrandr.c
> +++ b/xrandr.c
> @@ -2243,6 +2243,8 @@ static void
>   pick_crtcs (void)
>   {
>       output_t   *output;
> +    int saved_crtc_noutput[num_crtcs];
> +    int n;
>
>       /*
>        * First try to match up newly enabled outputs with spare crtcs
> @@ -2274,7 +2276,18 @@ pick_crtcs (void)
>        */
>       for (output = all_outputs; output; output = output->next)
>          output->current_crtc_info = output->crtc_info;
> +
> +    /* Mark all CRTC as currently unused */
> +    for (n = 0; n < num_crtcs; n++) {
> +           saved_crtc_noutput[n] = crtcs[n].crtc_info->noutput;
> +           crtcs[n].crtc_info->noutput = 0;
> +    }
> +
>       pick_crtcs_score (all_outputs);
> +
> +    for (n = 0; n < num_crtcs; n++)
> +           crtcs[n].crtc_info->noutput = saved_crtc_noutput[n];
> +
>       for (output = all_outputs; output; output = output->next)
>       {
>          if (output->mode_info && !output->crtc_info)

I'll give these two patches a try and report back.

Thanks,

--
Nate
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: RandR + i915 (HD 4600 / Haswell) -- Cannot switch from internal to 3x external
  2015-06-17 14:56     ` Nathan Schulte
@ 2015-06-17 18:05       ` Nathan Schulte
  2015-06-17 20:26         ` Chris Wilson
  0 siblings, 1 reply; 6+ messages in thread
From: Nathan Schulte @ 2015-06-17 18:05 UTC (permalink / raw)
  To: Chris Wilson, xorg, intel-gfx

On 06/17/2015 09:56 AM, Nathan Schulte wrote:
> I'll give these two patches a try and report back.

These two patches worked beautifully.  Thanks!  I assume you can take 
care of getting them included upstream?

--
Nate
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: RandR + i915 (HD 4600 / Haswell) -- Cannot switch from internal to 3x external
  2015-06-17 18:05       ` Nathan Schulte
@ 2015-06-17 20:26         ` Chris Wilson
  0 siblings, 0 replies; 6+ messages in thread
From: Chris Wilson @ 2015-06-17 20:26 UTC (permalink / raw)
  To: Nathan Schulte; +Cc: intel-gfx, xorg

On Wed, Jun 17, 2015 at 01:05:54PM -0500, Nathan Schulte wrote:
> On 06/17/2015 09:56 AM, Nathan Schulte wrote:
> >I'll give these two patches a try and report back.
> 
> These two patches worked beautifully.  Thanks!  I assume you can
> take care of getting them included upstream?

I'll taked that as a reported-and-tested-by and proceed. Thanks,
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-06-17 20:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-16 15:40 RandR + i915 (HD 4600 / Haswell) -- Cannot switch from internal to 3x external Nathan Schulte
2015-06-17  8:46 ` Chris Wilson
2015-06-17  9:13   ` Chris Wilson
2015-06-17 14:56     ` Nathan Schulte
2015-06-17 18:05       ` Nathan Schulte
2015-06-17 20:26         ` Chris Wilson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.