[please cc me directly, as i dont subscribe to this list, thanks!]

i am trying to get drm from 2.6.27 and x11r7.4 working on my sn2 (ia64)
system in order to support an ati firegl graphics card.  it works fine
on my amd64 system running in 64-bit mode.  however, on the sn2 i get a
new address/bus fault.  i believe my problem comes from the pci mapping
of the cards address space.  on the 64-bit amd box:

07:00.0 VGA compatible controller: ATI Technologies Inc Unknown device 710e 
(prog-if 00 [VGA controller])
        Subsystem: ATI Technologies Inc Unknown device 0b32
        Flags: bus master, fast devsel, latency 0, IRQ 146
        Memory at c0000000 (64-bit, prefetchable) [size=256M]
        Memory at dfff0000 (64-bit, non-prefetchable) [size=64K]
        I/O ports at d000 [size=256]
        Expansion ROM at dffc0000 [disabled] [size=128K]
        Capabilities: [50] Power Management version 2
        Capabilities: [58] Express Endpoint IRQ 0
        Capabilities: [80] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 
Enable-

note that despite the machine being 64-bit, the location for bar0 
is in the lower 2G of memory.  on the sn2 machine:

0053:02:00.0 VGA compatible controller: ATI Technologies Inc Unknown device 
710f (prog-if 00 [VGA controller])
        Subsystem: ATI Technologies Inc Unknown device 0b32
        Flags: bus master, fast devsel, latency 0, IRQ 69
        Memory at 98210000000 (64-bit, prefetchable) [size=256M]
        Memory at 98200100000 (64-bit, non-prefetchable) [size=64K]
        I/O ports at 1000 [size=256]
        Expansion ROM at c0003f69ee934000 [disabled] [size=61K]
        Capabilities: [50] Power Management version 2
        Capabilities: [58] Express Endpoint IRQ 0
        Capabilities: [80] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 
Enable-

you will note that bar0 is (well) above the 2G address line.  right before
the crash on the ia64, i see the following with drm debugging enabled:

        [drm:radeon_do_init_cp] Setting phys_pci_gart to c00009821fffe000 
0FFFE000
        [drm:drm_ati_pcigart_init] PCI: Gart Table: VRAM 0FFFE000 mapped at 
C00009821FFFE000

this seems bad.  i dont think the vram for this card is located at this memory
address.  on the amd64 machine, i see the following:

        [drm:radeon_do_init_cp] Setting phys_pci_gart to ffffc2000a0b0000 
0FFF8000
        [drm:drm_ati_pcigart_init] PCI: Gart Table: VRAM CFFF8000 mapped at 
FFFFC2000A0B0000

this seems correct to me (and indeed the radeon driver works fine on
the am64 machine).  it appears that the gart table/bus address for
the card is derived from the pcigart_offset:

                if (dev_priv->pcigart_offset_set) {
                        dev_priv->gart_info.bus_addr =
                            dev_priv->pcigart_offset + dev_priv->fb_location;

and the pcigart_offset is set from the userspace radeon dri driver
via RADEON_SETPARAM_PCIGART_LOCATION which passes a 32-bit value up to
the kernel.  it appears that the pciGartOffset in the userspace driver
is computed as a 32-bit value as well.

am i correct in my understanding and if so, how should this be fixed?

------------------------------------------------------------------------------
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to