http://bugs.freedesktop.org/show_bug.cgi?id=18154
Summary: libdrm support for addressing >32 bits on 32 bit cores Product: DRI Version: XOrg CVS Platform: PowerPC OS/Version: Linux (All) Status: NEW Severity: major Priority: high Component: libdrm AssignedTo: dri-devel@lists.sourceforge.net ReportedBy: [EMAIL PROTECTED] Created an attachment (id=19785) --> (http://bugs.freedesktop.org/attachment.cgi?id=19785) libdrm support for addressing >32 bits on 32 bit cores - syslog w/ drm debug msgs Using git versions Xorg/Mesa/DRM built last week Using a PPC 32-bit platform, with a 32 bit core and 36-bit addressing (460EX). The PCIe space is mapped physically above a 32 bit address range. Have a radeon 1650 adapter plugged in the PCIe slot. When enabling DRI - get the following Oops error: ------------------------ [drm:radeon_driver_open] [drm:drm_addmap_core] offset = 0x98000000, size = 0x00010000, type = 1 [drm:drm_addmap_core] offset = 0x80000000, size = 0x10000000, type = 0 [drm:drm_addmap_core] offset = 0x00000000, size = 0x00002000, type = 2 [drm:drm_setup] [drm:drm_ioctl] pid=2058, cmd=0xc0246400, nr=0x00, dev 0xe200, auth=1 [drm:drm_ioctl] pid=2058, cmd=0xc0246400, nr=0x00, dev 0xe200, auth=1 [drm:drm_release] open_count = 1 [drm:drm_release] pid = 2058, device = 0xe200, open_count = 1 [drm:drm_fasync] fd = -1, device = 0xe200 [drm:drm_lastclose] Machine check in kernel mode. Data Write PLB Error Oops: Machine check, sig: 7 [#2] Canyonlands Modules linked in: NIP: 00000000 LR: c01796ec CTR: 00000008 REGS: c039bf50 TRAP: 0202 Tainted: G D (2.6.25.7-00002-geaaf8db) MSR: 00000000 <> CR: 24000428 XER: 00000002 TASK = ded4d3f0[2058] 'X' THREAD: ded86000 GPR00: e93e0b0c ded87e60 ded4d3f0 dfaa7400 000040c1 ffffffff c018c924 00004000 GPR08: 00000000 e93e0b0c 00000000 e93e0000 24000422 101e6c34 101dec74 101def08 GPR16: 101e0000 101e0000 101e0000 101e0000 101e0000 101e0000 00000004 101e0000 GPR24: c03a0000 dfaa7618 dfaa760c dedb5a80 deddc580 dfaa7400 dfaa7400 dfaa7800 NIP [00000000] 0x0 LR [c01796ec] radeon_driver_lastclose+0x40/0x74 Call Trace: [ded87e60] [c001eacc] printk+0x50/0x60 (unreliable) [ded87e80] [c01796ec] radeon_driver_lastclose+0x40/0x74 [ded87e90] [c0169b2c] drm_lastclose+0x40/0x340 [ded87ec0] [c016af14] drm_release+0x438/0x498 [ded87ef0] [c007762c] __fput+0xb4/0x19c [ded87f10] [c00740ac] filp_close+0x68/0xb0 [ded87f30] [c0074184] sys_close+0x90/0xb4 [ded87f40] [c000ccf0] ret_from_syscall+0x0/0x3c Instruction dump: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX ---[ end trace a2cb362184c9762b ]--- ------------------------------------ Note that the physical mapping for the card has the MMIO and FB at addresses above 32 bits: ------------------------------ 0000:81:00.0 VGA compatible controller: ATI Technologies Inc Unknown device 7291 (prog-if 00 [VGA]) Subsystem: Connect Components Ltd Unknown device 7291 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 18 Region 0: Memory at e80000000 (64-bit, prefetchable) [size=256M] Region 2: Memory at e98000000 (64-bit, non-prefetchable) [size=64K] Region 4: I/O ports at <unassigned> Expansion ROM at e90000000 [disabled] [size=128K] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] Express Endpoint IRQ 0 Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag+ Device: Latency L0s <4us, L1 unlimited Device: AtnBtn- AtnInd- PwrInd- Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported- Device: RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ Device: MaxPayload 128 bytes, MaxReadReq 128 bytes Link: Supported Speed 2.5Gb/s, Width x16, ASPM L0s L1, Port 0 Link: Latency L0s <64ns, L1 <1us Link: ASPM Disabled RCB 64 bytes CommClk- ExtSynch- Link: Speed 2.5Gb/s, Width x4 Capabilities: [80] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable- Address: 0000000000000000 Data: 0000 --------------------------- It appears that within libdrm, the mapping does not support addressing above 32-bts on 32 bit cores, and the addresses are getting truncated. Note the offsets from the drm debug messages: --------------------------- [drm:drm_addmap_core] offset = 0x98000000, size = 0x00010000, type = 1 [drm:drm_addmap_core] offset = 0x80000000, size = 0x10000000, type = 0 [drm:drm_addmap_core] offset = 0x00000000, size = 0x00002000, type = 2 ---------------------------- Within the mapping function the address/offset is defined as a long wich cannot hold the full physical address: struct drm_map { unsigned long offset; /**< Requested physical address (0 for SAREA)*/ unsigned long size; /**< Requested physical size (bytes) */ enum drm_map_type type; /**< Type of memory to map */ enum drm_map_flags flags; /**< Flags */ void *handle; /**< User-space: "Handle" to pass to mmap() */ /**< Kernel-space: kernel-virtual address */ int mtrr; /**< MTRR slot used */ /* Private data */ }; I am assuming this is contributing to the error. Not sure if there are other places this is an issue. Last part of Xorg.0.log: -------------------------------- (II) Primary Device is: PCI [EMAIL PROTECTED]:00:0 (II) resource ranges after xf86ClaimFixedResources() call: (II) resource ranges after probing: (II) RADEON(0): TOTO SAYS 0000000e98000000 (II) RADEON(0): MMIO registers at 0x0000000e98000000: size 64KB (II) RADEON(0): PCI bus 129 card 0 func 0 (**) RADEON(0): Depth 24, (--) framebuffer bpp 32 (II) RADEON(0): Pixel depth = 24 bits stored in 4 bytes (32 bpp pixmaps) (==) RADEON(0): Default visual is TrueColor (II) RADEON(0): VGAAccess option set to FALSE, VGA module load skipped (==) RADEON(0): RGB weight 888 (II) RADEON(0): Using 8 bits per RGB (8 bit DAC) (--) RADEON(0): Chipset: "ATI Radeon X1650" (ChipID = 0x7291) (WW) RADEON(0): R500 support is under development. Please report any issues to [EMAIL PROTECTED] (--) RADEON(0): Linear framebuffer at 0x0000000e80000000 (II) RADEON(0): PCIE card detected (II) RADEON(0): ATOM BIOS detected (II) RADEON(0): ATOM BIOS Rom: SubsystemVendorID: 0x17ee SubsystemID: 0x7291 IOBaseAddress: 0x0000 Filename: S3A88003.102 BIOS Bootup Message: 113-A88003-102 RV560XT BIOS 574e/675m (II) RADEON(0): Framebuffer space used by Firmware (kb): 0 (WW) RADEON(0): rhdAtomGetFbBaseAndSize: AtomBIOS specified VRAM scratch space size invalid (II) RADEON(0): default to: 20480 (II) RADEON(0): Cannot get VRAM scratch space. Allocating in main memory instead (II) RADEON(0): Default Engine Clock: 574000 (II) RADEON(0): Default Memory Clock: 675000 (II) RADEON(0): Maximum Pixel ClockPLL Frequency Output: 1100000 (II) RADEON(0): Minimum Pixel ClockPLL Frequency Output: 0 (II) RADEON(0): Maximum Pixel ClockPLL Frequency Input: 13500 (II) RADEON(0): Minimum Pixel ClockPLL Frequency Input: 1000 (II) RADEON(0): Maximum Pixel Clock: 400000 (II) RADEON(0): Reference Clock: 27000 drmOpenDevice: node name is /dev/dri/card0 drmOpenDevice: open result is 7, (OK) --------------------------------- Syslog w/ drm debug messages attached. -- Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel