Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: many in-tree xorg packages updated



On Fri, Jun 12, 2009 at 02:27:38PM -0600, Sverre Froyen wrote:
> On Friday 12 June 2009 12:10:10 Nicolas Joly wrote:
> > On Sat, Jun 13, 2009 at 03:42:19AM +1000, matthew green wrote:
> > >    I updated my amd64 laptop, and encountered some problems.
> >
> > [...]
> >
> > >    2) Trying to start the X server fails because of missing default `glx'
> > >       module which does not exists anymore ...
> > >
> > > this shouldn't be fatal... i do see it myself, but i'm not sure what
> > > is up.  i won't be able to look at this for a couple of days.
> >
> > Indeed. The real problem comes from libpciaccess which is not able to
> > read the video bios for the intel driver ...
> >
> > root@nicodeme [~]# gdb Xorg Xorg.core
> > [...]
> > #8  0x00007f7ffa23a4a6 in i830_bios_init (pScrn=0x7f7ffb05f800)
> >     at
> > /local/src/NetBSD/xsrc/external/mit/xf86-video-intel/dist/src/i830_bios.c:2
> >37 237         ret = pci_device_read_rom (pI830->PciInfo, bios);
> >
> > Looking at the code, pci_device_read_rom() is not implemented for
> > NetBSD :(
> >
> > static const struct pci_system_methods netbsd_pci_methods = {
> >         pci_system_netbsd_destroy,
> >         NULL,
> >         NULL,                        <--- read_rom()
> >         pci_device_netbsd_probe,
> >         pci_device_netbsd_map_range,
> >         pci_device_netbsd_unmap_range,
> >         pci_device_netbsd_read,
> >         pci_device_netbsd_write,
> >         pci_fill_capabilities_generic
> > };
> 
> Do you have the latest libpciaccess?  0.10.6 (from pkgsrc) shows:

That's the one from xsrc.

> static const struct pci_system_methods netbsd_pci_methods = {
>         pci_system_netbsd_destroy,
>         NULL,
>         pci_device_netbsd_read_rom,
> ...

Ah ... pci_device_netbsd_read_rom() comes from patch-ac.

> That said, I cannot get the radeon driver to work.

With the attached patch, X is back with the intel driver.
But i'm pretty sure this will break on non x86 archs.

Thanks for the tip.

-- 
Nicolas Joly

Biological Software and Databanks.
Institut Pasteur, Paris.
Index: external/mit/libpciaccess/dist/src/netbsd_pci.c
===================================================================
RCS file: /cvsroot/xsrc/external/mit/libpciaccess/dist/src/netbsd_pci.c,v
retrieving revision 1.2
diff -u -p -r1.2 netbsd_pci.c
--- external/mit/libpciaccess/dist/src/netbsd_pci.c     10 Jun 2009 01:55:37 
-0000      1.2
+++ external/mit/libpciaccess/dist/src/netbsd_pci.c     12 Jun 2009 20:48:42 
-0000
@@ -202,6 +202,26 @@ pci_device_netbsd_write(struct pci_devic
        return 0;
 }
 
+static int
+pci_device_netbsd_read_rom(struct pci_device *device, void *buf)
+{
+       int fd, res, err;
+
+       fd = open("/dev/mem", O_RDONLY, 0);
+       if (fd < 0)
+               return errno;
+
+       lseek(fd, 0xc0000, SEEK_SET);
+       res = read(fd, buf, 64*1024);
+       if (res < 0) {
+               err = errno;
+               close(fd);
+               return err;
+       }
+       close(fd);
+       return 0;
+}
+
 static void
 pci_system_netbsd_destroy(void)
 {
@@ -292,7 +312,7 @@ pci_device_netbsd_probe(struct pci_devic
 static const struct pci_system_methods netbsd_pci_methods = {
        pci_system_netbsd_destroy,
        NULL,
-       NULL,
+       pci_device_netbsd_read_rom,
        pci_device_netbsd_probe,
        pci_device_netbsd_map_range,
        pci_device_netbsd_unmap_range,


Home | Main Index | Thread Index | Old Index