summaryrefslogtreecommitdiffstats
path: root/meta-emenlow/recipes-graphics/xorg-xserver/files/ptr-to-int-cast-fix.patch
diff options
context:
space:
mode:
authorTom Zanussi <tom.zanussi@intel.com>2012-01-10 22:19:30 -0600
committerTom Zanussi <tom.zanussi@intel.com>2012-01-10 22:19:30 -0600
commit9016be4d8005cfff3fedf4aded4600c6e110263a (patch)
tree870964d946d100a28acb32e7c561456dabdd7c32 /meta-emenlow/recipes-graphics/xorg-xserver/files/ptr-to-int-cast-fix.patch
parent38f2b670bc37515bcb0fa7f98e338e5242d70386 (diff)
downloadmeta-intel-9016be4d8005cfff3fedf4aded4600c6e110263a.tar.gz
meta-emenlow: fix ptr->int and Werror=address compile errors
A couple of things that had previously been warnings are now errors, so they need to be fixed up. The first problem is the same problem encountered by xserver-kdrive, and has the same fix, namely create a new version of REGION_INIT and have all calls that pass in a pointer to a static struct use it instead. A different fix for this is upstream, which includes an API change; we don't need all that to fix this problem. The second problem is a cast from pointer to integer in fbdevhw.c. This also is fixed upstream by removing the whole section of code which is bogus anyway, which is also done here. Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
Diffstat (limited to 'meta-emenlow/recipes-graphics/xorg-xserver/files/ptr-to-int-cast-fix.patch')
-rw-r--r--meta-emenlow/recipes-graphics/xorg-xserver/files/ptr-to-int-cast-fix.patch92
1 files changed, 92 insertions, 0 deletions
diff --git a/meta-emenlow/recipes-graphics/xorg-xserver/files/ptr-to-int-cast-fix.patch b/meta-emenlow/recipes-graphics/xorg-xserver/files/ptr-to-int-cast-fix.patch
new file mode 100644
index 00000000..19574d01
--- /dev/null
+++ b/meta-emenlow/recipes-graphics/xorg-xserver/files/ptr-to-int-cast-fix.patch
@@ -0,0 +1,92 @@
1Upstream-Status: Inappropriate [already upstream]
2
3It's broken for devices with BARs above 4G, and the sysfs method should
4work everywhere anyway. As a pleasant side effect, this fixes some
5warnings:
6
7fbdevhw.c: In function 'fbdev_open_pci':
8fbdevhw.c:333:4: warning: cast from pointer to integer of different size
9fbdevhw.c:334:4: warning: cast from pointer to integer of different size
10fbdevhw.c:336:4: warning: cast from pointer to integer of different size
11fbdevhw.c:337:4: warning: cast from pointer to integer of different size
12
13Signed-off-by: Adam Jackson <ajax (a] redhat.com>
14Integrated-by: Tom Zanussi <tom.zanussi (a] intel.com>
15
16Index: xorg-server-1.7.99.2/hw/xfree86/fbdevhw/fbdevhw.c
17===================================================================
18--- xorg-server-1.7.99.2.orig/hw/xfree86/fbdevhw/fbdevhw.c 2012-01-10 22:08:26.466693355 -0600
19+++ xorg-server-1.7.99.2/hw/xfree86/fbdevhw/fbdevhw.c 2012-01-10 22:11:36.386936978 -0600
20@@ -291,14 +291,7 @@
21 {
22 struct fb_fix_screeninfo fix;
23 char filename[256];
24- int fd,i,j;
25-
26-
27- /* There are two ways to that we can determine which fb device is
28- * associated with this PCI device. The more modern way is to look in
29- * the sysfs directory for the PCI device for a file named
30- * "graphics/fb*"
31- */
32+ int fd, i;
33
34 for (i = 0; i < 8; i++) {
35 sprintf(filename,
36@@ -331,55 +324,10 @@
37 }
38 }
39
40-
41- /* The other way is to examine the resources associated with each fb
42- * device and see if there is a match with the PCI device. This technique
43- * has some problems on certain mixed 64-bit / 32-bit architectures.
44- * There is a flaw in the fb_fix_screeninfo structure in that it only
45- * returns the low 32-bits of the address of the resources associated with
46- * a device. However, on a mixed architecture the base addresses of PCI
47- * devices, even for 32-bit applications, may be higher than 0x0f0000000.
48- */
49-
50- for (i = 0; i < 8; i++) {
51- sprintf(filename,"/dev/fb%d",i);
52- if (-1 == (fd = open(filename,O_RDWR,0))) {
53- xf86DrvMsg(-1, X_WARNING,
54- "open %s: %s\n", filename, strerror(errno));
55- continue;
56- }
57- if (-1 == ioctl(fd,FBIOGET_FSCREENINFO,(void*)&fix)) {
58- close(fd);
59- continue;
60- }
61- for (j = 0; j < 6; j++) {
62- const pciaddr_t res_start = pPci->regions[j].base_addr;
63- const pciaddr_t res_end = res_start + pPci->regions[j].size;
64-
65- if ((0 != fix.smem_len &&
66- (pciaddr_t) fix.smem_start >= res_start &&
67- (pciaddr_t) fix.smem_start < res_end) ||
68- (0 != fix.mmio_len &&
69- (pciaddr_t) fix.mmio_start >= res_start &&
70- (pciaddr_t) fix.mmio_start < res_end))
71- break;
72- }
73- if (j == 6) {
74- close(fd);
75- continue;
76- }
77- if (namep) {
78- *namep = xnfalloc(16);
79- strncpy(*namep,fix.id,16);
80- }
81- return fd;
82- }
83-
84 if (namep)
85 *namep = NULL;
86
87- xf86DrvMsg(-1, X_ERROR,
88- "Unable to find a valid framebuffer device\n");
89+ xf86DrvMsg(-1, X_ERROR, "Unable to find a valid framebuffer device\n");
90 return -1;
91 }
92