Comment 4 for bug 1039916

Revision history for this message
TJ (tj) wrote :

The route of the problem is that the nvidia driver returns invalid values for PCIO, PDISPLAY and PRAMIN.

Breakpoint 6, map_mem (dev_name=0x61e250 "/dev/nvidia0") at backend.c:34
34 dev_handle_t *fd = open_dev(dev_name);
(gdb) n
36 if(!fd) /* open_dev has already set the error */
(gdb) p fd
$2 = (dev_handle_t *) 0x61e0d0
(gdb) n
40 nv_card->PEXTDEV = map_dev_mem(fd, nv_card->reg_address + 0x101000, 0x1000);
(gdb) p dev_name
$3 = 0x61e250 "/dev/nvidia0"
(gdb) p /x nv_card->reg_address + 0x101000
$4 = 0xd5101000
(gdb) n
41 nv_card->PFB = map_dev_mem(fd, nv_card->reg_address + 0x100000, 0x1000);
(gdb) p /x nv_card->PEXTDEV
$5 = 0x7ffff7ff8000
(gdb) n
43 nv_card->PMC = map_dev_mem(fd, nv_card->reg_address + 0x000000, 0x2ffff);
(gdb) p /x nv_card->PFB
$6 = 0x7ffff7ff7000
(gdb) n
44 nv_card->PCIO = map_dev_mem(fd, nv_card->reg_address + 0x601000, 0x2000);
(gdb) p /x nv_card->PMC
$7 = 0xffffffffffffffff
(gdb) n
45 nv_card->PDISPLAY = map_dev_mem(fd, nv_card->reg_address + NV_PDISPLAY_OFFSET, NV_PDISPLAY_SIZE);
(gdb) p /x nv_card->PCIO
$8 = 0x7ffff7ff5000
(gdb) n
46 nv_card->PRAMDAC = map_dev_mem(fd, nv_card->reg_address + 0x680000, 0x2000);
(gdb) p /x nv_card->PDISPLAY
$9 = 0xffffffffffffffff
(gdb) n
47 nv_card->PRAMIN = map_dev_mem(fd, nv_card->reg_address + NV_PRAMIN_OFFSET, NV_PRAMIN_SIZE);
(gdb) p /x nv_card->PRAMDAC
$10 = 0x7ffff7fe3000
(gdb) n
48 nv_card->PROM = map_dev_mem(fd, nv_card->reg_address + 0x300000, 0xffff);
(gdb) p /x nv_card->PRAMIN
$11 = 0xffffffffffffffff
(gdb) n
51 if(nv_card->arch & NV5X)