#9361 NORM 1.5-F11: drm not working

Zarro Boogs per Child bugtracker at laptop.org
Thu Jun 25 12:59:05 EDT 2009


#9361: drm not working
---------------------------------------+------------------------------------
           Reporter:  dsd              |       Owner:  cjb          
               Type:  defect           |      Status:  new          
           Priority:  normal           |   Milestone:  1.5-F11      
          Component:  x window system  |     Version:  not specified
         Resolution:                   |    Keywords:               
        Next_action:  never set        |    Verified:  0            
Deployment_affected:                   |   Blockedby:               
           Blocking:                   |  
---------------------------------------+------------------------------------

Comment(by dsd):

 {{{
 (EE) CHROME(0): [drm] drmAgpAcquire failed 22
 }}}

 This is because we don't have CONFIG_AGP in the kernel. I enabled it, now
 I get ENODEV.

 See drm_fill_in_dev() in drm_stub.c. drm_device_is_agp() returns false
 because the AGP capability bit is not set in the PCI config space of our
 video device. We don't initialize AGP and hence the drmAgpAcquire fails as
 designed. Also we lose out on MTRR because of this, judging by that
 function.

 In openchrome, AGP not being available means that we use PCI instead. This
 means we lose some EXA composite accelerations, and it means that the EXA
 scratch area goes in framebuffer memory instead of AGP.  I guess PCI is
 slower, presumably there's a reason why AGP was invented.

 {{{
 (WW) CHROME(0): [drm] Failure adding IRQ handler. Falling back to IRQ-free
 operation.
 }}}

 This failure ultimately comes from the fact that the PCI configuration
 space says that the PCI interrupt line on our video adapter is routed to
 IRQ 0, and this causes drm_irq_install() to return -EINVAL.

 I'm not sure of the performance consequences of this.

 {{{
 (EE) CHROME(0): [drm] Failed to initialize DMA ring-buffer: 14
 }}}

 This looks like an openchrome bug. It uses AGP space for this ring buffer,
 so given that AGP initialization failed it should not be attempting this.
 (it does try to check "is AGP available?" before this, but the check is
 wrong)

 This also causes the via_initialize() dmesg error message.

 The lack of this ring-buffer causes openchrome not to do any DMA of
 commands. Instead, it writes the commands to PCI registers.

-- 
Ticket URL: <http://dev.laptop.org/ticket/9361#comment:2>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system


More information about the Bugs mailing list