Merge lp:~bkerensa/ubuntu/quantal/xorg-server/quantal-proposed-1104209 into lp:ubuntu/quantal/xorg-server

Proposed by Benjamin Kerensa
Status: Work in progress
Proposed branch: lp:~bkerensa/ubuntu/quantal/xorg-server/quantal-proposed-1104209
Merge into: lp:ubuntu/quantal/xorg-server
Diff against target: 365 lines (+305/-2)
8 files modified
debian/changelog (+25/-0)
debian/patches/233-xf86events-valgrind.patch (+16/-0)
debian/patches/234-composite-borderclip.patch (+48/-0)
debian/patches/235-composite-tracking.diff (+78/-0)
debian/patches/236-use-fbdev-for-poulsbo-oaktrail-medfield.patch (+88/-0)
debian/patches/237-dix-set-the-device-transformation-matrix.patch (+42/-0)
debian/patches/series (+5/-0)
dix/getevents.c (+3/-2)
To merge this branch: bzr merge lp:~bkerensa/ubuntu/quantal/xorg-server/quantal-proposed-1104209
Reviewer Review Type Date Requested Status
Bryce Harrington Needs Fixing
Ubuntu branches Pending
Review via email: mp+144824@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Bryce Harrington (bryce) wrote :

Hi Benjamin, thanks for packaging this patch and preparing the SRU. A few things need fixed though:

1. You applied the patch to the source, but instead it should be put into the debian/patches directory, and the patch name listed in debian/patches/series.

2. For quantal's xserver, our policy is to number patches consecutively. So you need to rename the patch, to 238-dix-fix-zaphod-screen-crossing.patch

3. In the bug report SRU, for regression potential you should elaborate more. Why might it get stuck on the second screen? There's no indication in the upstream bug report that this is possible.

4. You need a test case in the SRU as well. (Should be pretty simple.) Btw, have you reproduced the bug yourself on your own hardware? If so, that will make the SRU easier to verify - otherwise we need to find someone on quantal who can do the verification.

review: Needs Fixing

Unmerged revisions

248. By Benjamin Kerensa

add patch from upstream to fix screen crossings

247. By Timo Aaltonen

[ Maarten Lankhorst ]
* add 233-xf86events-valgrind.patch to fix a xserver corruption
  when acpid is stopped before Xorg is. (LP: #1070481)
* add 235-composite-tracking.diff to fix exa corruption. (LP: #1010794)

[ Bryce Harrington ]
* Add 236-use-fbdev-for-poulsbo-oaktrail-medfield.patch: Never use Intel
  driver on Poulsbo/Oaktrail/Medfield. Thanks to Matthias Klumpp.
  (LP: #1069031)
* Add 237-dix-set-the-device-transformation-matrix.patch: Fix pointer
  jumping with absolute pointing device. Initializes device
  transformation matrix to an identity matrix. Thanks to a7x.
  (LP: #1041063)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'debian/changelog'
--- debian/changelog 2012-10-08 17:58:54 +0000
+++ debian/changelog 2013-01-24 22:58:24 +0000
@@ -1,3 +1,28 @@
1xorg-server (2:1.13.0-0ubuntu6.2) quantal-proposed; urgency=low
2
3 * add 0001-dix-fix-zaphod-screen-scrossing-54654.patch to fix screen
4 crossings. (LP: #1104209)
5
6 -- Benjamin Kerensa <bkerensa@ubuntu.com> Thu, 24 Jan 2013 14:44:02 -0800
7
8xorg-server (2:1.13.0-0ubuntu6.1) quantal-proposed; urgency=low
9
10 [ Maarten Lankhorst ]
11 * add 233-xf86events-valgrind.patch to fix a xserver corruption
12 when acpid is stopped before Xorg is. (LP: #1070481)
13 * add 235-composite-tracking.diff to fix exa corruption. (LP: #1010794)
14
15 [ Bryce Harrington ]
16 * Add 236-use-fbdev-for-poulsbo-oaktrail-medfield.patch: Never use Intel
17 driver on Poulsbo/Oaktrail/Medfield. Thanks to Matthias Klumpp.
18 (LP: #1069031)
19 * Add 237-dix-set-the-device-transformation-matrix.patch: Fix pointer
20 jumping with absolute pointing device. Initializes device
21 transformation matrix to an identity matrix. Thanks to a7x.
22 (LP: #1041063)
23
24 -- Timo Aaltonen <tjaalton@ubuntu.com> Tue, 27 Nov 2012 08:09:59 +0200
25
1xorg-server (2:1.13.0-0ubuntu6) quantal; urgency=low26xorg-server (2:1.13.0-0ubuntu6) quantal; urgency=low
227
3 [ Timo Aaltonen ]28 [ Timo Aaltonen ]
429
=== added file 'debian/patches/233-xf86events-valgrind.patch'
--- debian/patches/233-xf86events-valgrind.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/233-xf86events-valgrind.patch 2013-01-24 22:58:24 +0000
@@ -0,0 +1,16 @@
1diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
2index 3ad34b5..4bc5f66 100644
3--- a/hw/xfree86/common/xf86Events.c
4+++ b/hw/xfree86/common/xf86Events.c
5@@ -271,9 +271,9 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
6 }
7
8 if (err >= 0) { /* we don't want the handlers called if select() */
9- IHPtr ih; /* returned with an error condition, do we? */
10+ IHPtr ih, ih_tmp; /* returned with an error condition, do we? */
11
12- for (ih = InputHandlers; ih; ih = ih->next) {
13+ nt_list_for_each_entry_safe(ih, ih_tmp, InputHandlers, next) {
14 if (ih->enabled && ih->fd >= 0 && ih->ihproc &&
15 (FD_ISSET(ih->fd, ((fd_set *) pReadmask)) != 0)) {
16 ih->ihproc(ih->fd, ih->data);
017
=== added file 'debian/patches/234-composite-borderclip.patch'
--- debian/patches/234-composite-borderclip.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/234-composite-borderclip.patch 2013-01-24 22:58:24 +0000
@@ -0,0 +1,48 @@
1compRedirectWindow does not initialize borderClip(X,Y ) members on allocation,
2which could theoretically cause a crash because borderClip contains a pointer.
3Solve this by copying the data over from pWin.
4
5Noticed this when working on
6https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1065113
7
8Specific error valgrind error I was receiving is:
9
10==25858== Conditional jump or move depends on uninitialised value(s)
11==25858== at 0x1EBF32: compClipNotify (compwindow.c:304)
12==25858== by 0x2A2C23: miComputeClips (mivaltree.c:489)
13==25858== by 0x2A321C: miValidateTree (mivaltree.c:695)
14==25858== by 0x1896EE: MapWindow (window.c:2594)
15==25858== by 0x1EB15B: compCreateOverlayWindow (compoverlay.c:155)
16==25858== by 0x1E9ABA: ProcCompositeGetOverlayWindow (compext.c:304)
17==25858== by 0x15DA50: Dispatch (dispatch.c:428)
18==25858== by 0x14C569: main (main.c:295)
19==25858== Uninitialised value was created by a heap allocation
20==25858== at 0x4C2B3F8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
21==25858== by 0x1ED4A3: compRedirectWindow (compalloc.c:172)
22==25858== by 0x1EC142: compCreateWindow (compwindow.c:558)
23==25858== by 0x18C56C: CreateWindow (window.c:801)
24==25858== by 0x1EB0FF: compCreateOverlayWindow (compoverlay.c:145)
25==25858== by 0x1E9ABA: ProcCompositeGetOverlayWindow (compext.c:304)
26==25858== by 0x15DA50: Dispatch (dispatch.c:428)
27==25858== by 0x14C569: main (main.c:295)
28
29Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
30
31---
32I'm not 100% sure if this is the correct assignment, I'm just guessing from the functions.
33
34diff --git a/composite/compalloc.c b/composite/compalloc.c
35index cc69c68..b6c5785 100644
36--- a/composite/compalloc.c
37+++ b/composite/compalloc.c
38@@ -195,6 +195,8 @@ compRedirectWindow(ClientPtr pClient, WindowPtr pWin, int update)
39 cw->damaged = FALSE;
40 cw->pOldPixmap = NullPixmap;
41 dixSetPrivate(&pWin->devPrivates, CompWindowPrivateKey, cw);
42+ cw->borderClipX = pWin->drawable.x;
43+ cw->borderClipY = pWin->drawable.y;
44 }
45 ccw->next = cw->clients;
46 cw->clients = ccw;
47
48
049
=== added file 'debian/patches/235-composite-tracking.diff'
--- debian/patches/235-composite-tracking.diff 1970-01-01 00:00:00 +0000
+++ debian/patches/235-composite-tracking.diff 2013-01-24 22:58:24 +0000
@@ -0,0 +1,78 @@
1From: Michel Dänzer <michel.daenzer@amd.com>
2
3In particular, make sure pExaScr->src/maskPix are cleared when the
4corresponding pictures aren't associated with drawables, i.e. solid or gradient
5pictures. Without this, we would in some cases associate the source/mask region
6with unrelated pixmaps from previous Composite fallbacks, resulting in random
7corruption.
8
9Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47266
10
11Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
12---
13 exa/exa_priv.h | 1 +
14 exa/exa_unaccel.c | 16 ++++++++++++----
15 2 files changed, 13 insertions(+), 4 deletions(-)
16
17diff --git a/exa/exa_priv.h b/exa/exa_priv.h
18index cd6a40b..819feb0 100644
19--- a/exa/exa_priv.h
20+++ b/exa/exa_priv.h
21@@ -201,6 +201,7 @@ typedef struct {
22 RegionRec srcReg;
23 RegionRec maskReg;
24 PixmapPtr srcPix;
25+ PixmapPtr maskPix;
26
27 } ExaScreenPrivRec, *ExaScreenPrivPtr;
28
29diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
30index 72e59ca..ec49ef0 100644
31--- a/exa/exa_unaccel.c
32+++ b/exa/exa_unaccel.c
33@@ -451,6 +451,13 @@ ExaSrcValidate(DrawablePtr pDrawable,
34 RegionPtr dst;
35 int xoff, yoff;
36
37+ if (pExaScr->srcPix == pPix)
38+ dst = &pExaScr->srcReg;
39+ else if (pExaScr->maskPix == pPix)
40+ dst = &pExaScr->maskReg;
41+ else
42+ return;
43+
44 exaGetDrawableDeltas(pDrawable, pPix, &xoff, &yoff);
45
46 box.x1 = x + xoff;
47@@ -458,8 +465,6 @@ ExaSrcValidate(DrawablePtr pDrawable,
48 box.x2 = box.x1 + width;
49 box.y2 = box.y1 + height;
50
51- dst = (pExaScr->srcPix == pPix) ? &pExaScr->srcReg : &pExaScr->maskReg;
52-
53 RegionInit(&reg, &box, 1);
54 RegionUnion(dst, dst, &reg);
55 RegionUninit(&reg);
56@@ -504,16 +509,19 @@ ExaPrepareCompositeReg(ScreenPtr pScreen,
57 if (pSrc != pDst)
58 RegionTranslate(pSrc->pCompositeClip,
59 -pSrc->pDrawable->x, -pSrc->pDrawable->y);
60- }
61+ } else
62+ pExaScr->srcPix = NULL;
63
64 if (pMask && pMask->pDrawable) {
65 pMaskPix = exaGetDrawablePixmap(pMask->pDrawable);
66 RegionNull(&pExaScr->maskReg);
67 maskReg = &pExaScr->maskReg;
68+ pExaScr->maskPix = pMaskPix;
69 if (pMask != pDst && pMask != pSrc)
70 RegionTranslate(pMask->pCompositeClip,
71 -pMask->pDrawable->x, -pMask->pDrawable->y);
72- }
73+ } else
74+ pExaScr->maskPix = NULL;
75
76 RegionTranslate(pDst->pCompositeClip,
77 -pDst->pDrawable->x, -pDst->pDrawable->y);
78-- 1.7.10.4
079
=== added file 'debian/patches/236-use-fbdev-for-poulsbo-oaktrail-medfield.patch'
--- debian/patches/236-use-fbdev-for-poulsbo-oaktrail-medfield.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/236-use-fbdev-for-poulsbo-oaktrail-medfield.patch 2013-01-24 22:58:24 +0000
@@ -0,0 +1,88 @@
1From ec3ce5493ec00ca0a9304b705a58a40e364f88fb Mon Sep 17 00:00:00 2001
2From: Stefan Dirsch <sndirsch@suse.de>
3Date: Sun, 22 Jul 2012 12:29:51 +0200
4Subject: [PATCH 3/3] Do not use intel driver on Poulsbo, Oaktrail, Medfield, CDV.
5
6IDs stolen from Kernel psb driver.
7---
8 hw/xfree86/common/xf86pciBus.c | 64 +++++++++++++++++++++++++++++++++++-----
9 1 files changed, 56 insertions(+), 8 deletions(-)
10
11diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
12index a2c18eb..258988a 100644
13--- a/hw/xfree86/common/xf86pciBus.c
14+++ b/hw/xfree86/common/xf86pciBus.c
15@@ -1147,14 +1147,62 @@ xf86VideoPtrToDriverList(struct pci_device *dev,
16 driverList[0] = "i128";
17 break;
18 case 0x8086:
19- if ((dev->device_id == 0x00d1) || (dev->device_id == 0x7800)) {
20- driverList[0] = "i740";
21- }
22- else if (dev->device_id == 0x8108) {
23- break; /* "hooray" for poulsbo */
24- }
25- else {
26- driverList[0] = "intel";
27+ switch (dev->device_id)
28+ {
29+ /* Intel i740 */
30+ case 0x00d1:
31+ case 0x7800:
32+ driverList[0] = "i740";
33+ break;
34+ /* GMA500/Poulsbo */
35+ case 0x8108:
36+ case 0x8109:
37+ /* Try psb driver on Poulsbo - if available */
38+ driverList[0] = "psb";
39+ driverList[1] = "psb_drv";
40+ break;
41+ /* GMA600/Oaktrail */
42+ case 0x4100:
43+ case 0x4101:
44+ case 0x4102:
45+ case 0x4103:
46+ case 0x4104:
47+ case 0x4105:
48+ case 0x4106:
49+ case 0x4107:
50+ /* Atom E620/Oaktrail */
51+ case 0x4108:
52+ /* Medfield */
53+ case 0x0130:
54+ case 0x0131:
55+ case 0x0132:
56+ case 0x0133:
57+ case 0x0134:
58+ case 0x0135:
59+ case 0x0136:
60+ case 0x0137:
61+ /* GMA 3600/CDV */
62+ case 0x0be0:
63+ case 0x0be1:
64+ case 0x0be2:
65+ case 0x0be3:
66+ case 0x0be4:
67+ case 0x0be5:
68+ case 0x0be6:
69+ case 0x0be7:
70+ case 0x0be8:
71+ case 0x0be9:
72+ case 0x0bea:
73+ case 0x0beb:
74+ case 0x0bec:
75+ case 0x0bed:
76+ case 0x0bee:
77+ case 0x0bef:
78+ /* Use fbdev/vesa driver on Oaktrail, Medfield, CDV */
79+ break;
80+ default:
81+ driverList[0] = "intel";
82+ break;
83 }
84 break;
85 case 0x102b:
86--
871.7.3.4
88
089
=== added file 'debian/patches/237-dix-set-the-device-transformation-matrix.patch'
--- debian/patches/237-dix-set-the-device-transformation-matrix.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/237-dix-set-the-device-transformation-matrix.patch 2013-01-24 22:58:24 +0000
@@ -0,0 +1,42 @@
1From 3d1051aecbb1955084804133cacd12c7f696833a Mon Sep 17 00:00:00 2001
2From: Peter Hutterer <peter.hutterer@who-t.net>
3Date: Thu, 20 Sep 2012 05:56:39 +1000
4Subject: [PATCH] dix: set the device transformation matrix
5
6The property handler is registered after setting the property, so
7dev->transform remains as all-zeros. That causes pixman_f_transform_invert()
8to fail (in transformAbsolute()) and invert remains as garbage. This
9may then cause a cursor jump to 0,0.
10
11Since the axes are not yet initialized here and we need to allow for drivers
12changing the matrix, we cannot use the property handler for matrix
13initialization, essentially duplicating the code.
14
15Triggered by the fix to (#49347) in 749a593e49adccdf1225be28a521412ec85333f4
16
17https://bugzilla.redhat.com/show_bug.cgi?id=852841
18
19Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
20Reviewed-by: Chase Douglas <chase.douglas@ubuntu.com>
21Signed-off-by: Keith Packard <keithp@keithp.com>
22---
23 dix/devices.c | 3 +++
24 1 file changed, 3 insertions(+)
25
26diff --git a/dix/devices.c b/dix/devices.c
27index 9cf04ed..66d4406 100644
28--- a/dix/devices.c
29+++ b/dix/devices.c
30@@ -306,6 +306,9 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
31 /* unity matrix */
32 memset(transform, 0, sizeof(transform));
33 transform[0] = transform[4] = transform[8] = 1.0f;
34+ dev->transform.m[0][0] = 1.0;
35+ dev->transform.m[1][1] = 1.0;
36+ dev->transform.m[2][2] = 1.0;
37
38 XIChangeDeviceProperty(dev, XIGetKnownProperty(XI_PROP_TRANSFORM),
39 XIGetKnownProperty(XATOM_FLOAT), 32,
40--
411.7.11.3
42
043
=== modified file 'debian/patches/series'
--- debian/patches/series 2012-10-08 17:58:54 +0000
+++ debian/patches/series 2013-01-24 22:58:24 +0000
@@ -23,6 +23,10 @@
23208_switch_on_release.diff23208_switch_on_release.diff
24227_null_ptr_midispcur.patch24227_null_ptr_midispcur.patch
25232-xf86compatoutput-valgrind.patch25232-xf86compatoutput-valgrind.patch
26233-xf86events-valgrind.patch
27#234-composite-borderclip.patch
28235-composite-tracking.diff
29236-use-fbdev-for-poulsbo-oaktrail-medfield.patch
2630
27## waiting for review by upstream31## waiting for review by upstream
28111_armel-drv-fallbacks.patch32111_armel-drv-fallbacks.patch
@@ -32,3 +36,4 @@
32229_udev-fix.diff36229_udev-fix.diff
33230-fix-compat-output-selection.patch37230-fix-compat-output-selection.patch
34231-scan-pci-after-probing-devices.patch38231-scan-pci-after-probing-devices.patch
39237-dix-set-the-device-transformation-matrix.patch
3540
=== modified file 'dix/getevents.c'
--- dix/getevents.c 2012-09-06 12:25:51 +0000
+++ dix/getevents.c 2013-01-24 22:58:24 +0000
@@ -1400,8 +1400,9 @@
1400 coordinates were.1400 coordinates were.
1401 */1401 */
1402 if (flags & POINTER_SCREEN) {1402 if (flags & POINTER_SCREEN) {
1403 screenx = sx;1403 scr = miPointerGetScreen(pDev);
1404 screeny = sy;1404 screenx = sx + scr->x;
1405 screeny = sy + scr->y;
1405 }1406 }
14061407
1407 scr = positionSprite(pDev, (flags & POINTER_ABSOLUTE) ? Absolute : Relative,1408 scr = positionSprite(pDev, (flags & POINTER_ABSOLUTE) ? Absolute : Relative,

Subscribers

People subscribed via source and target branches