Bug 31052

Summary: drm radeon modesetting enabled hits Linux kernel BUG null pointer
Product: DRI Reporter: Chris <bitbytebit>
Component: DRM/RadeonAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact:
Severity: critical    
Priority: medium    
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
The bios of the AVGA3000 (radeon 2600 RV630) card none

Description Chris 2010-10-22 09:32:19 UTC
I am using Linux 2.6.36 and a Radeon HD2600 PCIe card, has an RV630 GPU and is an ArcadeVGA card actually which has an altered BIOS to support Arcade Monitors.  They are sold by a guy in the UK at the ultimarc.com website, that is where I bought it.  I can load the normal radeon drm kernel module without modesetting, but with it I hit a bug in the kernel.  I had to comment out the check for the ATI signature, which then it goes past that fine and detects the Atom bios information.  Then in the TTM initialization of the memory it hits a null pointer.  Here is the log below, I'm wondering what I should try to do to fix this and get this card working correctly with the radeon drm stuff for modesetting.  

Thanks,
Chris

 01:00.0 VGA compatible controller: ATI Technologies Inc Device 958f (prog-if 00 [VGA controller])
        Subsystem: ATI Technologies Inc Device 0502
        Flags: bus master, fast devsel, latency 0, IRQ 16
        Memory at d0000000 (64-bit, prefetchable) [size=256M]
        Memory at e0a00000 (64-bit, non-prefetchable) [size=64K]
        I/O ports at 1000 [size=256]
        [virtual] Expansion ROM at e0000000 [disabled] [size=128K]
        Capabilities: [50] Power Management version 3
        Capabilities: [58] Express Legacy Endpoint, MSI 00
        Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [100] Vendor Specific Information <?>
        Kernel driver in use: radeon

in atom.c I commented this out since it's not an official ATI atom bios version:

        /*if (strncmp
            (CSTR(ATOM_ATI_MAGIC_PTR), ATOM_ATI_MAGIC,
             strlen(ATOM_ATI_MAGIC))) {
                printk(KERN_INFO "Invalid ATI magic.\n");
                kfree(ctx);
                return NULL;
        }*/



[drm] Initialized drm 1.1.0 20060810
[drm] radeon kernel modesetting enabled.
radeon 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
radeon 0000:01:00.0: setting latency timer to 64
[drm] initializing kernel modesetting (RV630 0x1002:0x958F).
[drm] register mmio base: 0xE0A00000
[drm] register mmio size: 65536
ATOM BIOS: 102
radeon 0000:01:00.0: VRAM: 512M 0x00000000 - 0x1FFFFFFF (512M used)
radeon 0000:01:00.0: GTT: 512M 0x20000000 - 0x3FFFFFFF
[drm] Detected VRAM RAM=512M, BAR=256M
[drm] RAM width 128bits DDR
[TTM] Zone  kernel: Available graphics memory: 512964 kiB.
[TTM] Initializing pool allocator.
BUG: unable to handle kernel NULL pointer dereference at (null)
IP: [<ffffffffa0a5d101>] ttm_bo_init_mm+0x81/0x120 [ttm]
PGD 3f9d9067 PUD 3ef0d067 PMD 0
Oops: 0000 [#1] PREEMPT SMP
last sysfs file: /sys/devices/pci0000:00/0000:00:1f.2/host2/target2:0:0/2:0:0:0/block/sda/size
CPU 0
Modules linked in: radeon(+) ttm drm_kms_helper drm agpgart hwmon i2c_algo_bit ipv6 nfsd snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss ath9k mac80211 ath9k_common snd_hda_codec_atihdmi ath9k_hw snd_hda_codec_realtek ath snd_hda_intel snd_hda_codec cfg80211 rfkill snd_pcm hid_logitech rtc_cmos snd_timer led_class floppy rtc_core rtc_lib snd pcspkr soundcore snd_page_alloc tg3 libphy e1000 nfs lockd sunrpc jfs raid10 raid456 async_raid6_recov async_memcpy async_pq raid6_pq async_xor xor async_tx raid1 raid0 dm_snapshot dm_crypt dm_mirror dm_region_hash dm_log dm_mod scsi_wait_scan sl811_hcd usbhid ohci_hcd uhci_hcd usb_storage ehci_hcd usbcore aic94xx libsas lpfc qla2xxx megaraid_sas megaraid_mbox megaraid_mm megaraid aacraid sx8 DAC960 cciss 3w_9xxx 3w_xxxx mptsas scsi_transport_sas mptfc scsi_transport_fc mptspi mptscsih mptbase atp870u dc395x qla1280 dmx3191d sym53c8xx gdth advansys initio BusLogic arcmsr aic7xxx aic79xx scsi_transport_spi sg pdc_adma sata_mv ahci libahci sata_qstor sata_vsc sata_uli sata_sis sata_sx4 sata_nv sata_via sata_svw sata_sil24 sata_sil sata_promise pata_sis

Pid: 11692, comm: modprobe Not tainted 2.6.36 #1 0A68h/HP xw4400 Workstation
RIP: 0010:[<ffffffffa0a5d101>]  [<ffffffffa0a5d101>] ttm_bo_init_mm+0x81/0x120 [ttm]
RSP: 0018:ffff88003da67b68  EFLAGS: 00010206
RAX: 0000000000000000 RBX: ffff88003eed8510 RCX: ffff88003d8691d0
RDX: 0000000000000000 RSI: 0000000000020000 RDI: ffff88003eed85c8
RBP: ffff88003da67ba8 R08: 0000000000000000 R09: ffff88003d8691c0
R10: 0000000000000000 R11: dead000000200200 R12: 0000000000000002
R13: 0000000000000002 R14: ffff88003eed85a0 R15: ffff88003eed85c8
FS:  00007fd7b2a50700(0000) GS:ffff880001600000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000000000 CR3: 000000003da64000 CR4: 00000000000006f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process modprobe (pid: 11692, threadinfo ffff88003da66000, task ffff88003fa88310)
Stack:
 ffff880000000000 0000000000020000 000000000041001d ffff88003eed8000
<0> ffff88003eed8510 00000000fffffff4 000000000041001d 0000000000000000
<0> ffff88003da67be8 ffffffffa0aa1786 ffff88003da67be8 ffff88003eed8000
Call Trace:
 [<ffffffffa0aa1786>] radeon_ttm_init+0x116/0x440 [radeon]
 [<ffffffffa0aa243e>] radeon_bo_init+0x7e/0x90 [radeon]
 [<ffffffffa0ae77fd>] r600_init+0xfd/0x2f0 [radeon]
 [<ffffffffa0a8b4c2>] radeon_device_init+0x332/0x490 [radeon]
 [<ffffffffa0a8cd32>] radeon_driver_load_kms+0xa2/0x180 [radeon]
 [<ffffffffa0a1ffb0>] drm_get_pci_dev+0x180/0x2a0 [drm]
 [<ffffffffa0b1480e>] radeon_pci_probe+0x10/0x271 [radeon]
 [<ffffffff8122b132>] local_pci_probe+0x12/0x20
 [<ffffffff8122bac0>] pci_device_probe+0x80/0xb0
 [<ffffffff812a6dfa>] ? driver_sysfs_add+0x7a/0xb0
 [<ffffffff812a6f3d>] driver_probe_device+0x8d/0x1a0
 [<ffffffff812a7050>] ? __driver_attach+0x0/0xa0
 [<ffffffff812a70e3>] __driver_attach+0x93/0xa0
 [<ffffffff812a7050>] ? __driver_attach+0x0/0xa0
 [<ffffffff812a6648>] bus_for_each_dev+0x68/0x90
 [<ffffffff812a6d79>] driver_attach+0x19/0x20
 [<ffffffff812a5f28>] bus_add_driver+0x1d8/0x270
 [<ffffffffa0b4b000>] ? radeon_init+0x0/0xc1 [radeon]
 [<ffffffff812a73d8>] driver_register+0x78/0x140
 [<ffffffffa0b4b000>] ? radeon_init+0x0/0xc1 [radeon]
 [<ffffffff8122bd71>] __pci_register_driver+0x51/0xd0
 [<ffffffffa0b4b000>] ? radeon_init+0x0/0xc1 [radeon]
 [<ffffffffa0a2019f>] drm_pci_init+0xcf/0xe0 [drm]
 [<ffffffffa0b4b000>] ? radeon_init+0x0/0xc1 [radeon]
 [<ffffffffa0a18953>] drm_init+0x53/0x70 [drm]
 [<ffffffffa0b4b0bf>] radeon_init+0xbf/0xc1 [radeon]
 [<ffffffff810001de>] do_one_initcall+0x3e/0x170
 [<ffffffff8106a912>] sys_init_module+0xb2/0x200
 [<ffffffff810023ab>] system_call_fastpath+0x16/0x1b
Code: ff 50 10 89 c2 85 c0 75 59 49 89 5e 28 45 85 e4 74 22 48 83 7d c8 00 0f 84 8b 00 00 00 49 8b 46 50 48 8b 75 c8 89 55 c0 4c 89 ff <ff> 10 8b 55 c0 85 c0 75 46 4b 8d 4c ed 00 48 c1 e1 03 48 8d 04
RIP  [<ffffffffa0a5d101>] ttm_bo_init_mm+0x81/0x120 [ttm]
 RSP <ffff88003da67b68>
CR2: 0000000000000000
---[ end trace 78952605cbb224d5 ]---
Comment 1 Chris 2010-10-22 15:50:05 UTC
Created attachment 39640 [details]
The bios of the AVGA3000 (radeon 2600 RV630) card

This may help, this is the bios of this card which is modified to hold modelines that are custom made for an arcade monitor.  I think there's more modified though than just that, since the radeon drm driver in KMS hits a null pointer and crashes.
Comment 2 Chris 2010-10-23 16:48:00 UTC
Now I've confirmed it has nothing to do with the AVGA card special bios, this occurs if I flash that to be a normal Radeon HD 2600 and also on a Radeon HD 4350 pcie card too.  Log below of the 4350 doing this....


[drm] Initialized drm 1.1.0 20060810
[drm] radeon kernel modesetting enabled.
radeon 0000:01:00.0: setting latency timer to 64
[drm] initializing kernel modesetting (RV710 0x1002:0x954F).
[drm] register mmio base: 0xE0A00000
[drm] register mmio size: 65536
ATOM BIOS: RV710
radeon 0000:01:00.0: VRAM: 512M 0x00000000 - 0x1FFFFFFF (512M used)
radeon 0000:01:00.0: GTT: 512M 0x20000000 - 0x3FFFFFFF
[drm] Detected VRAM RAM=512M, BAR=256M
[drm] RAM width 64bits DDR
[TTM] Zone  kernel: Available graphics memory: 512964 kiB.
[TTM] Initializing pool allocator.
BUG: unable to handle kernel NULL pointer dereference at (null)
IP: [<ffffffffa0397101>] ttm_bo_init_mm+0x81/0x120 [ttm]
PGD 3ce1b067 PUD 3dafb067 PMD 0
Oops: 0000 [#1] PREEMPT SMP
last sysfs file: /sys/devices/platform/r600_cp.0/firmware/r600_cp.0/loading
CPU 1
Modules linked in: radeon(+) ttm drm_kms_helper drm agpgart hwmon i2c_algo_bit ipv6 nfsd snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss ath9k mac80211 snd_hda_codec_atihdmi snd_hda_codec_realtek ath9k_common ath9k_hw ath snd_hda_intel snd_hda_codec cfg80211 snd_pcm rfkill rtc_cmos hid_logitech floppy pcspkr rtc_core snd_timer rtc_lib snd led_class soundcore snd_page_alloc tg3 libphy e1000 nfs lockd sunrpc jfs raid10 raid456 async_raid6_recov async_memcpy async_pq raid6_pq async_xor xor async_tx raid1 raid0 dm_snapshot dm_crypt dm_mirror dm_region_hash dm_log dm_mod scsi_wait_scan sl811_hcd usbhid ohci_hcd uhci_hcd usb_storage ehci_hcd usbcore aic94xx libsas lpfc qla2xxx megaraid_sas megaraid_mbox megaraid_mm megaraid aacraid sx8 DAC960 cciss 3w_9xxx 3w_xxxx mptsas scsi_transport_sas mptfc scsi_transport_fc mptspi mptscsih mptbase atp870u dc395x qla1280 dmx3191d sym53c8xx gdth advansys initio BusLogic arcmsr aic7xxx aic79xx scsi_transport_spi sg pdc_adma sata_mv ahci libahci sata_qstor sata_vsc sata_uli sata_sis sata_sx4 sata_nv sata_via sata_svw sata_sil24 sata_sil sata_promise pata_sis [last unloaded: drm]

Pid: 11916, comm: modprobe Not tainted 2.6.36 #1 0A68h/HP xw4400 Workstation
RIP: 0010:[<ffffffffa0397101>]  [<ffffffffa0397101>] ttm_bo_init_mm+0x81/0x120 [ttm]
RSP: 0018:ffff88003ef83b68  EFLAGS: 00010206
RAX: 0000000000000000 RBX: ffff88003eaaa510 RCX: ffff88003f3f3e10
RDX: 0000000000000000 RSI: 0000000000020000 RDI: ffff88003eaaa5c8
RBP: ffff88003ef83ba8 R08: 0000000000000000 R09: ffff88003f3f3e00
R10: 0000000000000000 R11: dead000000200200 R12: 0000000000000002
R13: 0000000000000002 R14: ffff88003eaaa5a0 R15: ffff88003eaaa5c8
FS:  00007f167cf28700(0000) GS:ffff880001680000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000000000 CR3: 000000003f3c7000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process modprobe (pid: 11916, threadinfo ffff88003ef82000, task ffff88003faa4930)
Stack:
 ffff880000000000 0000000000020000 0000000000400025 ffff88003eaaa000
<0> ffff88003eaaa510 00000000fffffff4 0000000000400025 0000000000000000
<0> ffff88003ef83be8 ffffffffa0af2786 ffff88003ef83be8 ffff88003eaaa000
Call Trace:
 [<ffffffffa0af2786>] radeon_ttm_init+0x116/0x440 [radeon]
 [<ffffffffa0af343e>] radeon_bo_init+0x7e/0x90 [radeon]
 [<ffffffffa0b3c8cc>] rv770_init+0x10c/0x2b0 [radeon]
 [<ffffffffa0adc4c2>] radeon_device_init+0x332/0x490 [radeon]
 [<ffffffffa0addd32>] radeon_driver_load_kms+0xa2/0x180 [radeon]
 [<ffffffffa0797fb0>] drm_get_pci_dev+0x180/0x2a0 [drm]
 [<ffffffffa0b6580e>] radeon_pci_probe+0x10/0x271 [radeon]
 [<ffffffff8122b132>] local_pci_probe+0x12/0x20
 [<ffffffff8122bac0>] pci_device_probe+0x80/0xb0
 [<ffffffff812a6dfa>] ? driver_sysfs_add+0x7a/0xb0
 [<ffffffff812a6f3d>] driver_probe_device+0x8d/0x1a0
 [<ffffffff812a7050>] ? __driver_attach+0x0/0xa0
 [<ffffffff812a70e3>] __driver_attach+0x93/0xa0
 [<ffffffff812a7050>] ? __driver_attach+0x0/0xa0
 [<ffffffff812a6648>] bus_for_each_dev+0x68/0x90
 [<ffffffff812a6d79>] driver_attach+0x19/0x20
 [<ffffffff812a5f28>] bus_add_driver+0x1d8/0x270
 [<ffffffffa04a1000>] ? radeon_init+0x0/0xc1 [radeon]
 [<ffffffff812a73d8>] driver_register+0x78/0x140
 [<ffffffffa04a1000>] ? radeon_init+0x0/0xc1 [radeon]
 [<ffffffff8122bd71>] __pci_register_driver+0x51/0xd0
 [<ffffffffa04a1000>] ? radeon_init+0x0/0xc1 [radeon]
 [<ffffffffa079819f>] drm_pci_init+0xcf/0xe0 [drm]
 [<ffffffffa04a1000>] ? radeon_init+0x0/0xc1 [radeon]
 [<ffffffffa0790953>] drm_init+0x53/0x70 [drm]
 [<ffffffffa04a10bf>] radeon_init+0xbf/0xc1 [radeon]
 [<ffffffff810001de>] do_one_initcall+0x3e/0x170
 [<ffffffff8106a912>] sys_init_module+0xb2/0x200
 [<ffffffff810023ab>] system_call_fastpath+0x16/0x1b
Code: ff 50 10 89 c2 85 c0 75 59 49 89 5e 28 45 85 e4 74 22 48 83 7d c8 00 0f 84 8b 00 00 00 49 8b 46 50 48 8b 75 c8 89 55 c0 4c 89 ff <ff> 10 8b 55 c0 85 c0 75 46 4b 8d 4c ed 00 48 c1 e1 03 48 8d 04
RIP  [<ffffffffa0397101>] ttm_bo_init_mm+0x81/0x120 [ttm]
 RSP <ffff88003ef83b68>
CR2: 0000000000000000
---[ end trace ac441a0c39e96a14 ]---
Comment 3 Chris 2010-10-28 09:09:40 UTC
I can now enable KMS mode with the newest git tree from Linux 2.6 Linus, so seems it was fixed somewhere between 2.6.36 and the current Linux git tree.

`

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.