Merge lp:~ubuntu-multiseat/xorg-server/trusty-matchseat into lp:ubuntu/trusty/xorg-server
- trusty-matchseat
- Merge into trusty
Proposed by
Laércio de Sousa
Status: | Merged |
---|---|
Merge reported by: | Sebastien Bacher |
Merged at revision: | not available |
Proposed branch: | lp:~ubuntu-multiseat/xorg-server/trusty-matchseat |
Merge into: | lp:ubuntu/trusty/xorg-server |
Diff against target: |
449 lines (+422/-0) 5 files modified
debian/patches/series (+4/-0) debian/patches/xfree86_add_matchseat_key_description_to_xorg_conf_man.patch (+68/-0) debian/patches/xfree86_add_matchseat_key_to_xorg_conf.patch (+248/-0) debian/patches/xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch (+52/-0) debian/patches/xfree86_keep_non_seat0_from_touching_vts.patch (+50/-0) |
To merge this branch: | bzr merge lp:~ubuntu-multiseat/xorg-server/trusty-matchseat |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Sebastien Bacher | Approve | ||
Maarten Lankhorst (community) | Approve | ||
Review via email: mp+234316@code.launchpad.net |
Commit message
Description of the change
Please backport these patches from upstream release 1.16 to trusty "xorg-server" package. These ones are really needed to make logind-based multiseat setups work properly with non-KMS video drivers (line NVIDIA/AMD proprietary ones) and are a "must have" for a LTS release like 14.04.
Thanks in advance!
To post a comment you must log in.
Revision history for this message
Sebastien Bacher (seb128) wrote : | # |
(https:/
Revision history for this message
Laércio de Sousa (lbssousa) wrote : | # |
I've updated bug #1209008 following SRU template. Please take a look.
Revision history for this message
Sebastien Bacher (seb128) wrote : | # |
Looks like that was uploaded in https:/
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'debian/patches/series' |
2 | --- debian/patches/series 2013-08-14 10:52:17 +0000 |
3 | +++ debian/patches/series 2014-09-11 14:14:10 +0000 |
4 | @@ -56,3 +56,7 @@ |
5 | |
6 | aarch64.patch |
7 | xmir.patch |
8 | +xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch |
9 | +xfree86_keep_non_seat0_from_touching_vts.patch |
10 | +xfree86_add_matchseat_key_to_xorg_conf.patch |
11 | +xfree86_add_matchseat_key_description_to_xorg_conf_man.patch |
12 | |
13 | === added file 'debian/patches/xfree86_add_matchseat_key_description_to_xorg_conf_man.patch' |
14 | --- debian/patches/xfree86_add_matchseat_key_description_to_xorg_conf_man.patch 1970-01-01 00:00:00 +0000 |
15 | +++ debian/patches/xfree86_add_matchseat_key_description_to_xorg_conf_man.patch 2014-09-11 14:14:10 +0000 |
16 | @@ -0,0 +1,68 @@ |
17 | +From a6f5ffd5879e7fb052d343592951cc476b699bb4 Mon Sep 17 00:00:00 2001 |
18 | +From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= <lbsousajr@gmail.com> |
19 | +Date: Thu, 3 Apr 2014 11:19:15 -0300 |
20 | +Subject: [PATCH] xfree86: add short description about MatchSeat key in |
21 | + xorg.conf man page |
22 | +MIME-Version: 1.0 |
23 | +Content-Type: text/plain; charset=UTF-8 |
24 | +Content-Transfer-Encoding: 8bit |
25 | + |
26 | +Signed-off-by: Laércio de Sousa <lbsousajr@gmail.com> |
27 | +Reviewed-by: Dave Airlie <airlied@redhat.com> |
28 | +Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> |
29 | +--- |
30 | + hw/xfree86/man/xorg.conf.man | 24 ++++++++++++++++++++++++ |
31 | + 1 file changed, 24 insertions(+) |
32 | + |
33 | +diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man |
34 | +index 6d2652e..cadd87b 100644 |
35 | +--- a/hw/xfree86/man/xorg.conf.man |
36 | ++++ b/hw/xfree86/man/xorg.conf.man |
37 | +@@ -1378,6 +1378,14 @@ for the regular text mode. |
38 | + The frequency is specified in MHz. |
39 | + This is rarely used. |
40 | + .TP 7 |
41 | ++.BI "MatchSeat " "seat\-id" |
42 | ++Only apply this |
43 | ++.B Device |
44 | ++section if X server was started with |
45 | ++.B -seat |
46 | ++.I seat\-id |
47 | ++option. |
48 | ++.TP 7 |
49 | + .BI "Option \*qModeDebug\*q \*q" boolean \*q |
50 | + Enable printing of additional debugging information about modesetting to |
51 | + the server log. |
52 | +@@ -1900,6 +1908,14 @@ The only case where there is even a choice in this value is for depth 24, |
53 | + where some hardware supports both a packed 24 bit framebuffer layout and a |
54 | + sparse 32 bit framebuffer layout. |
55 | + .TP 7 |
56 | ++.BI "MatchSeat " "seat\-id" |
57 | ++Only apply this |
58 | ++.B Screen |
59 | ++section if X server was started with |
60 | ++.B -seat |
61 | ++.I seat\-id |
62 | ++option. |
63 | ++.TP 7 |
64 | + .B Options |
65 | + Various |
66 | + .B Option |
67 | +@@ -2295,6 +2311,14 @@ and the first two should normally be used to indicate the core pointer |
68 | + and core keyboard devices respectively. |
69 | + .RE |
70 | + .TP 7 |
71 | ++.BI "MatchSeat " "seat\-id" |
72 | ++Only apply this |
73 | ++.B ServerLayout |
74 | ++section if X server was started with |
75 | ++.B -seat |
76 | ++.I seat\-id |
77 | ++option. |
78 | ++.TP 7 |
79 | + .B Options |
80 | + In addition to the following, any option permitted in the |
81 | + .B ServerFlags |
82 | +-- |
83 | +2.0.4 |
84 | + |
85 | |
86 | === added file 'debian/patches/xfree86_add_matchseat_key_to_xorg_conf.patch' |
87 | --- debian/patches/xfree86_add_matchseat_key_to_xorg_conf.patch 1970-01-01 00:00:00 +0000 |
88 | +++ debian/patches/xfree86_add_matchseat_key_to_xorg_conf.patch 2014-09-11 14:14:10 +0000 |
89 | @@ -0,0 +1,248 @@ |
90 | +From 7070ebeebaca1b51f8a2801989120784a1c374ae Mon Sep 17 00:00:00 2001 |
91 | +From: Oleg Samarin <osamarin68@gmail.com> |
92 | +Date: Thu, 3 Apr 2014 11:19:14 -0300 |
93 | +Subject: [PATCH] xfree86: add new key MatchSeat to xorg.conf sections |
94 | + "Device", "Screen", and "ServerLayout" |
95 | +MIME-Version: 1.0 |
96 | +Content-Type: text/plain; charset=UTF-8 |
97 | +Content-Transfer-Encoding: 8bit |
98 | + |
99 | +This patch introduces a new key MatchSeat in xorg.conf (also applies to |
100 | +any .conf file in xorg.conf.d). It will allow targeting a given |
101 | +"Device", "Screen", and/or "ServerLayout" section to a particular |
102 | +seat only (specified by option "-seat" in X server command line), |
103 | +so that other seats won't be affected. |
104 | + |
105 | +Without this patch, one needs to write a separate xorg.conf.custom |
106 | +file and pass it to X server via "-config" option, if one wants that |
107 | +these settings only apply for the right seat. However, in some cases, |
108 | +this solution is undesirable or even impossible (e.g. when using GDM, |
109 | +which doesn't allow X server command line customization). |
110 | + |
111 | +Example file (/etc/X11/xorg.conf.d/seat1.conf), which would be ignored |
112 | +by X server unless it was started with "-seat seat1" option: |
113 | + |
114 | +Section "Device" |
115 | + Identifier "card0" |
116 | + Driver "nvidia" |
117 | + Option "NoLogo" "True" |
118 | + MatchSeat "seat1" |
119 | +EndSection |
120 | + |
121 | +Signed-off-by: Oleg Samarin <osamarin68@gmail.com> |
122 | +Signed-off-by: Laércio de Sousa <lbsousajr@gmail.com> |
123 | +Reviewed-by: Dave Airlie <airlied@redhat.com> |
124 | +Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> |
125 | +--- |
126 | + hw/xfree86/common/xf86Config.c | 34 +++++++++++++++++++++++++--------- |
127 | + hw/xfree86/parser/Device.c | 6 ++++++ |
128 | + hw/xfree86/parser/Layout.c | 6 ++++++ |
129 | + hw/xfree86/parser/Screen.c | 6 ++++++ |
130 | + hw/xfree86/parser/xf86Parser.h | 3 +++ |
131 | + hw/xfree86/parser/xf86tokens.h | 1 + |
132 | + 6 files changed, 47 insertions(+), 9 deletions(-) |
133 | + |
134 | +Index: xorg-server-trusty-matchseat/hw/xfree86/common/xf86Config.c |
135 | +=================================================================== |
136 | +--- xorg-server-trusty-matchseat.orig/hw/xfree86/common/xf86Config.c 2014-09-11 10:50:39.823851011 -0300 |
137 | ++++ xorg-server-trusty-matchseat/hw/xfree86/common/xf86Config.c 2014-09-11 10:55:16.098992439 -0300 |
138 | +@@ -232,6 +232,18 @@ |
139 | + return tmp_path; |
140 | + } |
141 | + |
142 | ++#define FIND_SUITABLE(pointertype, listhead, ptr) \ |
143 | ++ do { \ |
144 | ++ pointertype _l, _p; \ |
145 | ++ \ |
146 | ++ for (_l = (listhead), _p = NULL; !_p && _l; _l = (pointertype)_l->list.next) { \ |
147 | ++ if (!_l->match_seat || (SeatId && xf86nameCompare(_l->match_seat, SeatId) == 0)) \ |
148 | ++ _p = _l; \ |
149 | ++ } \ |
150 | ++ \ |
151 | ++ (ptr) = _p; \ |
152 | ++ } while(0) |
153 | ++ |
154 | + /* |
155 | + * use the datastructure that the parser provides and pick out the parts |
156 | + * that we need at this point |
157 | +@@ -1600,8 +1612,11 @@ |
158 | + * config file, or - if it is NULL - configScreen autogenerates one for |
159 | + * us */ |
160 | + if (!count) { |
161 | ++ XF86ConfScreenPtr screen; |
162 | ++ |
163 | ++ FIND_SUITABLE (XF86ConfScreenPtr, xf86configptr->conf_screen_lst, screen); |
164 | + slp[0].screen = xnfcalloc(1, sizeof(confScreenRec)); |
165 | +- if (!configScreen(slp[0].screen, xf86configptr->conf_screen_lst, |
166 | ++ if (!configScreen(slp[0].screen, screen, |
167 | + 0, X_CONFIG)) { |
168 | + free(slp[0].screen); |
169 | + free(slp); |
170 | +@@ -1841,7 +1856,7 @@ |
171 | + * set it to NULL so that the section can be autoconfigured later */ |
172 | + screenp->device = xnfcalloc(1, sizeof(GDevRec)); |
173 | + if ((!conf_screen->scrn_device) && (xf86configptr->conf_device_lst)) { |
174 | +- conf_screen->scrn_device = xf86configptr->conf_device_lst; |
175 | ++ FIND_SUITABLE (XF86ConfDevicePtr, xf86configptr->conf_device_lst, conf_screen->scrn_device); |
176 | + xf86Msg(X_DEFAULT, "No device specified for screen \"%s\".\n" |
177 | + "\tUsing the first device section listed.\n", screenp->id); |
178 | + } |
179 | +@@ -2374,6 +2389,7 @@ |
180 | + char *scanptr; |
181 | + Bool singlecard = 0; |
182 | + Bool implicit_layout = FALSE; |
183 | ++ XF86ConfLayoutPtr layout; |
184 | + |
185 | + if (!autoconfig) { |
186 | + char *filename, *dirname, *sysdirname; |
187 | +@@ -2449,14 +2465,17 @@ |
188 | + */ |
189 | + |
190 | + /* First check if a layout section is present, and if it is valid. */ |
191 | ++ FIND_SUITABLE(XF86ConfLayoutPtr, xf86configptr->conf_layout_lst, layout); |
192 | ++ if (layout == NULL || xf86ScreenName != NULL) { |
193 | ++ XF86ConfScreenPtr screen; |
194 | + |
195 | +- if (xf86configptr->conf_layout_lst == NULL || xf86ScreenName != NULL) { |
196 | + if (xf86ScreenName == NULL) { |
197 | + xf86Msg(X_DEFAULT, |
198 | + "No Layout section. Using the first Screen section.\n"); |
199 | + } |
200 | ++ FIND_SUITABLE (XF86ConfScreenPtr, xf86configptr->conf_screen_lst, screen); |
201 | + if (!configImpliedLayout(&xf86ConfigLayout, |
202 | +- xf86configptr->conf_screen_lst, |
203 | ++ screen, |
204 | + xf86configptr)) { |
205 | + xf86Msg(X_ERROR, "Unable to determine the screen layout\n"); |
206 | + return CONFIG_PARSE_ERROR; |
207 | +@@ -2471,16 +2490,13 @@ |
208 | + if (optlist && xf86FindOption(optlist, "defaultserverlayout")) |
209 | + dfltlayout = |
210 | + xf86SetStrOption(optlist, "defaultserverlayout", NULL); |
211 | +- if (!configLayout |
212 | +- (&xf86ConfigLayout, xf86configptr->conf_layout_lst, |
213 | +- dfltlayout)) { |
214 | ++ if (!configLayout(&xf86ConfigLayout, layout, dfltlayout)) { |
215 | + xf86Msg(X_ERROR, "Unable to determine the screen layout\n"); |
216 | + return CONFIG_PARSE_ERROR; |
217 | + } |
218 | + } |
219 | + else { |
220 | +- if (!configLayout(&xf86ConfigLayout, xf86configptr->conf_layout_lst, |
221 | +- NULL)) { |
222 | ++ if (!configLayout(&xf86ConfigLayout, layout, NULL)) { |
223 | + xf86Msg(X_ERROR, "Unable to determine the screen layout\n"); |
224 | + return CONFIG_PARSE_ERROR; |
225 | + } |
226 | +Index: xorg-server-trusty-matchseat/hw/xfree86/parser/Device.c |
227 | +=================================================================== |
228 | +--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/Device.c 2014-09-11 10:48:54.272129993 -0300 |
229 | ++++ xorg-server-trusty-matchseat/hw/xfree86/parser/Device.c 2014-09-11 10:55:16.094992284 -0300 |
230 | +@@ -72,6 +72,7 @@ |
231 | + {RAMDAC, "ramdac"}, |
232 | + {DACSPEED, "dacspeed"}, |
233 | + {CLOCKS, "clocks"}, |
234 | ++ {MATCHSEAT, "matchseat"}, |
235 | + {OPTION, "option"}, |
236 | + {VIDEORAM, "videoram"}, |
237 | + {BIOSBASE, "biosbase"}, |
238 | +@@ -217,6 +218,11 @@ |
239 | + Error(NUMBER_MSG, "TextClockFreq"); |
240 | + ptr->dev_textclockfreq = (int) (val.realnum * 1000.0 + 0.5); |
241 | + break; |
242 | ++ case MATCHSEAT: |
243 | ++ if (xf86getSubToken(&(ptr->dev_comment)) != STRING) |
244 | ++ Error(QUOTE_MSG, "MatchSeat"); |
245 | ++ ptr->match_seat = val.str; |
246 | ++ break; |
247 | + case OPTION: |
248 | + ptr->dev_option_lst = xf86parseOption(ptr->dev_option_lst); |
249 | + break; |
250 | +Index: xorg-server-trusty-matchseat/hw/xfree86/parser/Layout.c |
251 | +=================================================================== |
252 | +--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/Layout.c 2014-09-11 10:48:54.272129993 -0300 |
253 | ++++ xorg-server-trusty-matchseat/hw/xfree86/parser/Layout.c 2014-09-11 10:55:16.094992284 -0300 |
254 | +@@ -71,6 +71,7 @@ |
255 | + {ENDSECTION, "endsection"}, |
256 | + {SCREEN, "screen"}, |
257 | + {IDENTIFIER, "identifier"}, |
258 | ++ {MATCHSEAT, "matchseat"}, |
259 | + {INACTIVE, "inactive"}, |
260 | + {INPUTDEVICE, "inputdevice"}, |
261 | + {OPTION, "option"}, |
262 | +@@ -110,6 +111,11 @@ |
263 | + ptr->lay_identifier = val.str; |
264 | + has_ident = TRUE; |
265 | + break; |
266 | ++ case MATCHSEAT: |
267 | ++ if (xf86getSubToken(&(ptr->lay_comment)) != STRING) |
268 | ++ Error(QUOTE_MSG, "MatchSeat"); |
269 | ++ ptr->match_seat = val.str; |
270 | ++ break; |
271 | + case INACTIVE: |
272 | + { |
273 | + XF86ConfInactivePtr iptr; |
274 | +Index: xorg-server-trusty-matchseat/hw/xfree86/parser/Screen.c |
275 | +=================================================================== |
276 | +--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/Screen.c 2014-09-11 10:48:54.272129993 -0300 |
277 | ++++ xorg-server-trusty-matchseat/hw/xfree86/parser/Screen.c 2014-09-11 10:55:16.094992284 -0300 |
278 | +@@ -199,6 +199,7 @@ |
279 | + static xf86ConfigSymTabRec ScreenTab[] = { |
280 | + {ENDSECTION, "endsection"}, |
281 | + {IDENTIFIER, "identifier"}, |
282 | ++ {MATCHSEAT, "matchseat"}, |
283 | + {OBSDRIVER, "driver"}, |
284 | + {MDEVICE, "device"}, |
285 | + {MONITOR, "monitor"}, |
286 | +@@ -237,6 +238,11 @@ |
287 | + Error(ONLY_ONE_MSG, "Identifier or Driver"); |
288 | + has_ident = TRUE; |
289 | + break; |
290 | ++ case MATCHSEAT: |
291 | ++ if (xf86getSubToken(&(ptr->scrn_comment)) != STRING) |
292 | ++ Error(QUOTE_MSG, "MatchSeat"); |
293 | ++ ptr->match_seat = val.str; |
294 | ++ break; |
295 | + case OBSDRIVER: |
296 | + if (xf86getSubToken(&(ptr->scrn_comment)) != STRING) |
297 | + Error(QUOTE_MSG, "Driver"); |
298 | +Index: xorg-server-trusty-matchseat/hw/xfree86/parser/xf86Parser.h |
299 | +=================================================================== |
300 | +--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/xf86Parser.h 2014-09-11 10:48:54.272129993 -0300 |
301 | ++++ xorg-server-trusty-matchseat/hw/xfree86/parser/xf86Parser.h 2014-09-11 10:55:16.094992284 -0300 |
302 | +@@ -224,6 +224,7 @@ |
303 | + int dev_screen; |
304 | + XF86OptionPtr dev_option_lst; |
305 | + char *dev_comment; |
306 | ++ char *match_seat; |
307 | + } XF86ConfDeviceRec, *XF86ConfDevicePtr; |
308 | + |
309 | + typedef struct { |
310 | +@@ -275,6 +276,7 @@ |
311 | + XF86OptionPtr scrn_option_lst; |
312 | + char *scrn_comment; |
313 | + int scrn_virtualX, scrn_virtualY; |
314 | ++ char *match_seat; |
315 | + } XF86ConfScreenRec, *XF86ConfScreenPtr; |
316 | + |
317 | + typedef struct { |
318 | +@@ -366,6 +368,7 @@ |
319 | + XF86ConfInactivePtr lay_inactive_lst; |
320 | + XF86ConfInputrefPtr lay_input_lst; |
321 | + XF86OptionPtr lay_option_lst; |
322 | ++ char *match_seat; |
323 | + char *lay_comment; |
324 | + } XF86ConfLayoutRec, *XF86ConfLayoutPtr; |
325 | + |
326 | +Index: xorg-server-trusty-matchseat/hw/xfree86/parser/xf86tokens.h |
327 | +=================================================================== |
328 | +--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/xf86tokens.h 2014-09-11 10:48:54.272129993 -0300 |
329 | ++++ xorg-server-trusty-matchseat/hw/xfree86/parser/xf86tokens.h 2014-09-11 10:55:16.094992284 -0300 |
330 | +@@ -87,6 +87,7 @@ |
331 | + VENDOR, |
332 | + DASH, |
333 | + COMMA, |
334 | ++ MATCHSEAT, |
335 | + OPTION, |
336 | + COMMENT, |
337 | + |
338 | |
339 | === added file 'debian/patches/xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch' |
340 | --- debian/patches/xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch 1970-01-01 00:00:00 +0000 |
341 | +++ debian/patches/xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch 2014-09-11 14:14:10 +0000 |
342 | @@ -0,0 +1,52 @@ |
343 | +From 29b1484bb9555e45067669cbfe68a3c40596f4ff Mon Sep 17 00:00:00 2001 |
344 | +From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= <lbsousajr@gmail.com> |
345 | +Date: Thu, 3 Apr 2014 11:19:13 -0300 |
346 | +Subject: [PATCH] xfree86: allow fallback to PCI bus probe for graphics devices |
347 | + on non-seat0 X servers (#66851) |
348 | +MIME-Version: 1.0 |
349 | +Content-Type: text/plain; charset=UTF-8 |
350 | +Content-Transfer-Encoding: 8bit |
351 | + |
352 | +Currently non-seat0 X servers only probe platform bus for graphics devices, |
353 | +which is OK for most KMS-compliant drivers. However, for non-KMS drivers |
354 | +(like NVIDIA proprietary ones), graphics devices can't be reached |
355 | +by platform bus probe, resulting in a "No devices detected" error. |
356 | + |
357 | +This patch allows a fallback to PCI bus probe for non-seat0 X servers |
358 | +in case no platform bus graphics device is found. |
359 | + |
360 | +Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=66851 |
361 | + |
362 | +Signed-off-by: Laércio de Sousa <lbsousajr@gmail.com> |
363 | +Reviewed-by: Hans de Goede <hdegoede@redhat.com> |
364 | +Reviewed-by: Dave Airlie <airlied@redhat.com> |
365 | +Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> |
366 | +--- |
367 | + hw/xfree86/common/xf86Bus.c | 4 ++-- |
368 | + 1 file changed, 2 insertions(+), 2 deletions(-) |
369 | + |
370 | +diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c |
371 | +index 507c57d..b3b3f8c 100644 |
372 | +--- a/hw/xfree86/common/xf86Bus.c |
373 | ++++ b/hw/xfree86/common/xf86Bus.c |
374 | +@@ -81,7 +81,7 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only) |
375 | + if (drv->platformProbe != NULL) { |
376 | + foundScreen = xf86platformProbeDev(drv); |
377 | + } |
378 | +- if (ServerIsNotSeat0()) |
379 | ++ if (ServerIsNotSeat0() && foundScreen) |
380 | + return foundScreen; |
381 | + #endif |
382 | + |
383 | +@@ -201,7 +201,7 @@ xf86BusProbe(void) |
384 | + { |
385 | + #ifdef XSERVER_PLATFORM_BUS |
386 | + xf86platformProbe(); |
387 | +- if (ServerIsNotSeat0()) |
388 | ++ if (ServerIsNotSeat0() && xf86_num_platform_devices > 0) |
389 | + return; |
390 | + #endif |
391 | + #ifdef XSERVER_LIBPCIACCESS |
392 | +-- |
393 | +2.0.4 |
394 | + |
395 | |
396 | === added file 'debian/patches/xfree86_keep_non_seat0_from_touching_vts.patch' |
397 | --- debian/patches/xfree86_keep_non_seat0_from_touching_vts.patch 1970-01-01 00:00:00 +0000 |
398 | +++ debian/patches/xfree86_keep_non_seat0_from_touching_vts.patch 2014-09-11 14:14:10 +0000 |
399 | @@ -0,0 +1,50 @@ |
400 | +From 46cf2a60934076bf568062eb83121ce90b6ff596 Mon Sep 17 00:00:00 2001 |
401 | +From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= <lbsousajr@gmail.com> |
402 | +Date: Thu, 12 Dec 2013 14:22:48 -0200 |
403 | +Subject: [PATCH] xfree86: Keep a non-seat0 X server from touching VTs (#71258) |
404 | + |
405 | +Updated patch following Hans de Goede's advice. |
406 | + |
407 | +If -seat option is passed with a value different from seat0, |
408 | +X server won't call xf86OpenConsole(). |
409 | + |
410 | +This is needed to avoid any race condition between seat0 and |
411 | +non-seat0 X servers. If a non-seat0 X server opens a given VT |
412 | +before a seat0 one which expects to open the same VT, one can |
413 | +get an inactive systemd-logind graphical session for seat0. |
414 | + |
415 | +This patch was first tested in a multiseat setup with multiple |
416 | +video cards and works quite well. |
417 | + |
418 | +I suppose it can also make things like DontVTSwitch and -sharevts |
419 | +meaningless for non-seat0 seats, so it may fix bug #69477, too. |
420 | + |
421 | +Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=71258 |
422 | + https://bugs.freedesktop.org/show_bug.cgi?id=69477 (maybe) |
423 | + |
424 | +See also: http://lists.x.org/archives/xorg-devel/2013-October/038391.html |
425 | + https://bugzilla.redhat.com/show_bug.cgi?id=1018196 |
426 | + |
427 | +Signed-off-by: Hans de Goede <hdegoede@redhat.com> |
428 | +Reviewed-by: Hans de Goede <hdegoede@redhat.com> |
429 | +--- |
430 | + hw/xfree86/common/xf86Init.c | 3 ++- |
431 | + 1 file changed, 2 insertions(+), 1 deletion(-) |
432 | + |
433 | +diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c |
434 | +index 9c8a86a..952bf37 100644 |
435 | +--- a/hw/xfree86/common/xf86Init.c |
436 | ++++ b/hw/xfree86/common/xf86Init.c |
437 | +@@ -544,7 +544,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) |
438 | + if (NEED_IO_ENABLED(flags)) |
439 | + want_hw_access = TRUE; |
440 | + |
441 | +- if (!(flags & HW_SKIP_CONSOLE)) |
442 | ++ /* Non-seat0 X servers should not open console */ |
443 | ++ if (!(flags & HW_SKIP_CONSOLE) && !ServerIsNotSeat0()) |
444 | + xorgHWOpenConsole = TRUE; |
445 | + } |
446 | + |
447 | +-- |
448 | +2.0.4 |
449 | + |
looks sane, but bug #1209008 needs to be updated with the stablereleaseup dates bug template.