With a kernel built with CONFIG_AGP=y, CONFIG_AGP_INTEL=m and CONFIG_DRM_RADEON=y, enabling radeon KMS (either by the config option or radeon.modeset=1 boot parameter) results in an immediate kernel panic. Modesetting works fine when those options are all set to 'y' or all set to 'm'. Both Linus' git and 2.6.33 are affected. Full boot log follows. Linux version 2.6.34-rc3-00406-gcf90bfe (root@ulna.ellipticsemi.com) (gcc version 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC) ) #56 SMP PREEMPT Fri Apr 9 14:28:59 EDT 2010 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 000000001ff40000 (usable) BIOS-e820: 000000001ff40000 - 000000001ff50000 (ACPI data) BIOS-e820: 000000001ff50000 - 0000000020000000 (ACPI NVS) Notice: NX (Execute Disable) protection missing in CPU or disabled in BIOS! DMI 2.3 present. last_pfn = 0x1ff40 max_arch_pfn = 0x100000 x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 init_memory_mapping: 0000000000000000-000000001ff40000 RAMDISK: 1fbfc000 - 1ff30000 ACPI: RSDP 000f70e0 00014 (v00 ACPIAM) ACPI: RSDT 1ff40000 00030 (v01 INTEL D845EPT2 20020920 MSFT 00000097) ACPI: FACP 1ff40200 00081 (v02 INTEL D845EPT2 20020920 MSFT 00000097) ACPI: DSDT 1ff40400 0420A (v01 INTEL D845EPT2 0000010A MSFT 0100000D) ACPI: FACS 1ff50000 00040 ACPI: APIC 1ff40300 00068 (v01 INTEL D845EPT2 20020920 MSFT 00000097) ACPI: ASF! 1ff44610 00084 (v16 AMIASF I845GASF 00000001 MSFT 0100000D) 511MB LOWMEM available. mapped low ram: 0 - 1ff40000 low ram: 0 - 1ff40000 Zone PFN ranges: DMA 0x00000001 -> 0x00001000 Normal 0x00001000 -> 0x0001ff40 Movable zone start PFN for each node early_node_map[2] active PFN ranges 0: 0x00000001 -> 0x0000009f 0: 0x00000100 -> 0x0001ff40 Using APIC driver default ACPI: PM-Timer IO Port: 0x408 ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) ACPI: LAPIC (acpi_id[0x02] lapic_id[0x81] disabled) ACPI: LAPIC_NMI (acpi_id[0x01] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x02] dfl dfl lint[0x1]) ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) Using ACPI (MADT) for SMP configuration information SMP: Allowing 2 CPUs, 1 hotplug CPUs Allocating PCI resources starting at 20000000 (gap: 20000000:e0000000) setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:2 nr_node_ids:1 PERCPU: Embedded 16 pages/cpu @c2000000 s40980 r0 d24556 u2097152 pcpu-alloc: s40980 r0 d24556 u2097152 alloc=1*4194304 pcpu-alloc: [0] 0 1 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 129759 Kernel command line: ro root=/dev/VolGroup00/LogVol00 rhgb console=ttyS0,115200n8 radeon.modeset=1 PID hash table entries: 2048 (order: 1, 8192 bytes) Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Enabling fast FPU save and restore... done. Enabling unmasked SIMD FPU exception support... done. Initializing CPU#0 Subtract (34 early reservations) #1 [0000001000 - 0000002000] EX TRAMPOLINE #2 [0001000000 - 00019cbd6c] TEXT DATA BSS #3 [001fbfc000 - 001ff30000] RAMDISK #4 [000009fc00 - 0000100000] BIOS reserved #5 [00019cc000 - 00019d3110] BRK #6 [0000002000 - 0000003000] TRAMPOLINE #7 [0000007000 - 0000008000] PGTABLE #8 [00019d3180 - 0001dd3180] BOOTMEM #9 [00019cbd80 - 00019cbd84] BOOTMEM #10 [0001dd3180 - 0001dd33c0] BOOTMEM #11 [00019cbe00 - 00019cbe30] BOOTMEM #12 [0001dd3400 - 0001dd7c00] BOOTMEM #13 [00019cbe80 - 00019cbea7] BOOTMEM #14 [00019cbf00 - 00019cbfc4] BOOTMEM #15 [0001dd7c00 - 0001dd7c40] BOOTMEM #16 [0001dd7c80 - 0001dd7cc0] BOOTMEM #17 [0001dd7d00 - 0001dd7d40] BOOTMEM #18 [0001dd7d80 - 0001dd7dc0] BOOTMEM #19 [0001dd7e00 - 0001dd7e40] BOOTMEM #20 [0001dd7e80 - 0001dd7ec0] BOOTMEM #21 [0001dd7f00 - 0001dd7f4e] BOOTMEM #22 [0001dd7f80 - 0001dd7fce] BOOTMEM #23 [0002000000 - 0002010000] BOOTMEM #24 [0002200000 - 0002210000] BOOTMEM #25 [0001dda000 - 0001dda004] BOOTMEM #26 [0001dda080 - 0001dda084] BOOTMEM #27 [0001dda100 - 0001dda108] BOOTMEM #28 [0001dda180 - 0001dda188] BOOTMEM #29 [0001dda200 - 0001dda2a8] BOOTMEM #30 [0001dda300 - 0001dda368] BOOTMEM #31 [0001dd8000 - 0001dda000] BOOTMEM #32 [0001dda380 - 0001e1a380] BOOTMEM #33 [0001e1a380 - 0001e3a380] BOOTMEM Memory: 505136k/523520k available (2614k kernel code, 17992k reserved, 1670k data, 360k init, 0k highmem) virtual kernel memory layout: fixmap : 0xfff1f000 - 0xfffff000 ( 896 kB) vmalloc : 0xe0740000 - 0xfff1d000 ( 503 MB) lowmem : 0xc0000000 - 0xdff40000 ( 511 MB) .init : 0xc1430000 - 0xc148a000 ( 360 kB) .data : 0xc128d881 - 0xc142f388 (1670 kB) .text : 0xc1000000 - 0xc128d881 (2614 kB) Checking if this processor honours the WP bit even in supervisor mode...Ok. Hierarchical RCU implementation. NR_IRQS:512 Console: colour VGA+ 80x25 console [ttyS0] enabled Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar ... MAX_LOCKDEP_SUBCLASSES: 8 ... MAX_LOCK_DEPTH: 48 ... MAX_LOCKDEP_KEYS: 8191 ... CLASSHASH_SIZE: 4096 ... MAX_LOCKDEP_ENTRIES: 16384 ... MAX_LOCKDEP_CHAINS: 32768 ... CHAINHASH_SIZE: 16384 memory used by lock dependency info: 3567 kB per task-struct memory footprint: 1152 bytes Fast TSC calibration using PIT Detected 2000.232 MHz processor. Calibrating delay loop (skipped), value calculated using timer frequency.. 4000.46 BogoMIPS (lpj=2000232) Mount-cache hash table entries: 512 CPU0: Hyper-Threading is disabled mce: CPU supports 4 MCE banks CPU0: Thermal monitoring enabled (TM1) Performance Events: no PMU driver, software events only. Checking 'hlt' instruction... OK. Freeing SMP alternatives: 12k freed ACPI: Core revision 20100121 Enabling APIC mode: Flat. Using 1 I/O APICs ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 CPU0: Intel(R) Pentium(R) 4 CPU 2.00GHz stepping 04 Brought up 1 CPUs Total of 1 processors activated (4000.46 BogoMIPS). NET: Registered protocol family 16 ACPI: bus type pci registered PCI: PCI BIOS revision 2.10 entry at 0xf0031, last bus=2 PCI: Using configuration type 1 for base access bio: create slab <bio-0> at 0 ACPI: Executed 2 blocks of module-level executable AML code ACPI: Interpreter enabled ACPI: (supports S0 S5) ACPI: Using IOAPIC for interrupt routing ACPI: Power Resource [URP1] (off) ACPI: Power Resource [URP2] (off) ACPI: Power Resource [FDDP] (off) ACPI: Power Resource [LPTP] (off) ACPI: No dock devices found. PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug ACPI: PCI Root Bridge [PCI0] (0000:00) * The chipset may have PM-Timer Bug. Due to workarounds for a bug, * this clock source is slow. If you are sure your timer does not have * this bug, please use "acpi_pm_good" to disable the workaround pci 0000:00:1f.0: quirk: [io 0x0400-0x047f] claimed by ICH4 ACPI/GPIO/TCO pci 0000:00:1f.0: quirk: [io 0x0480-0x04bf] claimed by ICH4 GPIO pci 0000:00:01.0: PCI bridge to [bus 01-01] pci 0000:00:1e.0: PCI bridge to [bus 02-02] (subtractive decode) ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 9 10 *11 12 14 15) ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 9 10 *11 12 14 15) ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 *9 10 11 12 14 15) ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 *5 7 9 10 11 12 14 15) ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0, disabled. ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 *11 12 14 15) ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 *11 12 14 15) ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 *10 11 12 14 15) vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none vgaarb: loaded PCI: Using ACPI for IRQ routing Switching to clocksource tsc pnp: PnP ACPI init ACPI: bus type pnp registered pnp: PnP ACPI: found 15 devices ACPI: ACPI bus type pnp unregistered system 00:09: [io 0x04d0-0x04d1] has been reserved system 00:0d: [io 0x0400-0x047f] has been reserved system 00:0d: [io 0x0680-0x06ff] has been reserved system 00:0d: [io 0x0480-0x04bf] has been reserved system 00:0d: [mem 0xfec00000-0xfec00fff] could not be reserved system 00:0d: [mem 0xfee00000-0xfee00fff] has been reserved system 00:0e: [mem 0x00000000-0x0009ffff] could not be reserved system 00:0e: [mem 0x000c0000-0x000dffff] could not be reserved system 00:0e: [mem 0x000e0000-0x000fffff] could not be reserved system 00:0e: [mem 0x00100000-0x1fffffff] could not be reserved pci 0000:00:1f.1: BAR 5: assigned [mem 0x20000000-0x200003ff] pci 0000:00:1f.1: BAR 5: set to [mem 0x20000000-0x200003ff] (PCI address [0x20000000-0x200003ff] pci 0000:00:01.0: PCI bridge to [bus 01-01] pci 0000:00:01.0: bridge window [io 0xc000-0xcfff] pci 0000:00:01.0: bridge window [mem 0xfa900000-0xfa9fffff] pci 0000:00:01.0: bridge window [mem 0xe0600000-0xf06fffff pref] pci 0000:00:1e.0: PCI bridge to [bus 02-02] pci 0000:00:1e.0: bridge window [io 0xd000-0xdfff] pci 0000:00:1e.0: bridge window [mem 0xfaa00000-0xfeafffff] pci 0000:00:1e.0: bridge window [mem 0xf0700000-0xf27fffff pref] NET: Registered protocol family 2 IP route cache hash table entries: 4096 (order: 2, 16384 bytes) TCP established hash table entries: 16384 (order: 5, 131072 bytes) TCP bind hash table entries: 16384 (order: 7, 524288 bytes) TCP: Hash tables configured (established 16384 bind 16384) TCP reno registered UDP hash table entries: 256 (order: 2, 20480 bytes) UDP-Lite hash table entries: 256 (order: 2, 20480 bytes) NET: Registered protocol family 1 Unpacking initramfs... Freeing initrd memory: 3280k freed VFS: Disk quotas dquot_6.5.2 Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) msgmni has been set to 993 alg: No test for stdrng (krng) Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254) io scheduler noop registered io scheduler cfq registered (default) Linux agpgart interface v0.103 Hangcheck: starting hangcheck timer 0.9.0 (tick is 180 seconds, margin is 60 seconds). Hangcheck: Using get_cycles(). [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 [drm] radeon: Initializing kernel modesetting. [drm] register mmio base: 0xFA9F0000 [drm] register mmio size: 65536 [drm] GPU reset succeed (RBBM_STATUS=0x00000140) [drm] 1 Power State(s) [drm] State 0 Default (default) [drm] 1 Clock Mode(s) [drm] 0 engine/memory: 166000/166000 [drm] radeon: power management initialized BUG: unable to handle kernel NULL pointer dereference at 00000040 IP: [<c11a4c65>] radeon_agp_init+0x14/0x36b *pde = 00000000 Oops: 0000 [#1] PREEMPT SMP last sysfs file: Modules linked in: Pid: 1, comm: swapper Not tainted 2.6.34-rc3-00406-gcf90bfe #56 D845EPT2 / EIP: 0060:[<c11a4c65>] EFLAGS: 00010286 CPU: 0 EIP is at radeon_agp_init+0x14/0x36b EAX: 00000000 EBX: 00000000 ECX: c12884ed EDX: de9e1000 ESI: df578000 EDI: df578000 EBP: df44fe38 ESP: df44fde4 DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 Process swapper (pid: 1, ti=df44f000 task=df462020 task.ti=df44f000) Stack: 00000000 c19c6484 df44fe18 df578000 df578c60 c19c647c df578000 00000000 <0> df578d00 df44fe18 c1285566 c13a85ff df44fe24 df44fe38 c11f350c c13a85ff <0> 00000001 df578158 00000000 df578000 df578000 df44fe50 c11caf32 c11f8036 Call Trace: [<c1285566>] ? printk+0xf/0x11 [<c11f350c>] ? radeon_pm_init+0x1ef/0x1f9 [<c11caf32>] ? r100_init+0x18e/0x250 [<c11f8036>] ? vga_client_register+0x58/0x5f [<c11a0512>] ? radeon_device_init+0x28d/0x305 [<c119fb07>] ? radeon_vga_set_decode+0x0/0x20 [<c11a1212>] ? radeon_driver_load_kms+0x101/0x163 [<c117bf1c>] ? drm_get_dev+0x389/0x455 [<c12839a5>] ? radeon_pci_probe+0xd/0xf [<c111b240>] ? local_pci_probe+0xe/0x10 [<c111b3f6>] ? pci_device_probe+0x43/0x66 [<c1202110>] ? driver_probe_device+0x79/0x105 [<c12021df>] ? __driver_attach+0x43/0x5f [<c1201aa5>] ? bus_for_each_dev+0x3d/0x67 [<c1201fe7>] ? driver_attach+0x14/0x16 [<c120219c>] ? __driver_attach+0x0/0x5f [<c120151c>] ? bus_add_driver+0x104/0x236 [<c1202423>] ? driver_register+0x8b/0xeb [<c1112a07>] ? __raw_spin_lock_init+0x24/0x49 [<c111b5e3>] ? __pci_register_driver+0x4c/0xa5 [<c1177b15>] ? drm_init+0x58/0xb0 [<c144db18>] ? radeon_init+0x0/0xae [<c144dbc4>] ? radeon_init+0xac/0xae [<c1001051>] ? do_one_initcall+0x4c/0x136 [<c1430357>] ? kernel_init+0x114/0x198 [<c1430243>] ? kernel_init+0x0/0x198 [<c1002d3a>] ? kernel_thread_helper+0x6/0x1a Code: 8b 90 1c 03 00 00 85 d2 74 0b 83 7a 40 00 74 05 e8 83 7e fd ff 5d c3 55 89 e5 57 56 53 83 ec 48 89 c7 8b 50 04 8b 82 1c 03 00 00 <83> 78 40 00 75 1b 89 d0 e8 05 7e fd ff 89 45 cc 85 c0 74 0d 50 EIP: [<c11a4c65>] radeon_agp_init+0x14/0x36b SS:ESP 0068:df44fde4 CR2: 0000000000000040 ---[ end trace 0b3aebfa4a20514a ]--- Kernel panic - not syncing: Attempted to kill init! Pid: 1, comm: swapper Tainted: G D 2.6.34-rc3-00406-gcf90bfe #56 Call Trace: [<c1285566>] ? printk+0xf/0x11 [<c12854e6>] panic+0x42/0xb3 [<c1031fc1>] do_exit+0x5c/0x5d5 [<c102ffce>] ? kmsg_dump+0xff/0x113 [<c102f263>] ? oops_exit+0x2a/0x2f [<c128989c>] oops_end+0x92/0x9a [<c1019806>] no_context+0x114/0x11e [<c10068d6>] ? native_sched_clock+0x42/0x8d [<c1019949>] __bad_area_nosemaphore+0x139/0x141 [<c104a02d>] ? sched_clock_local+0x17/0x104 [<c101e8f3>] ? sched_slice+0x71/0x80 [<c128ae35>] ? do_page_fault+0x196/0x41e [<c101995e>] bad_area_nosemaphore+0xd/0x10 [<c128aef2>] do_page_fault+0x253/0x41e [<c110ef9c>] ? trace_hardirqs_on_thunk+0xc/0x10 [<c12888f0>] ? restore_all_notrace+0x0/0x18 [<c12884ed>] ? _raw_spin_unlock_irqrestore+0x2f/0x58 [<c128ac9f>] ? do_page_fault+0x0/0x41e [<c1288f6b>] error_code+0x6b/0x70 [<c12884ed>] ? _raw_spin_unlock_irqrestore+0x2f/0x58 [<c128ac9f>] ? do_page_fault+0x0/0x41e [<c11a4c65>] ? radeon_agp_init+0x14/0x36b [<c1285566>] ? printk+0xf/0x11 [<c11f350c>] ? radeon_pm_init+0x1ef/0x1f9 [<c11caf32>] r100_init+0x18e/0x250 [<c11f8036>] ? vga_client_register+0x58/0x5f [<c11a0512>] radeon_device_init+0x28d/0x305 [<c119fb07>] ? radeon_vga_set_decode+0x0/0x20 [<c11a1212>] radeon_driver_load_kms+0x101/0x163 [<c117bf1c>] drm_get_dev+0x389/0x455 [<c12839a5>] radeon_pci_probe+0xd/0xf [<c111b240>] local_pci_probe+0xe/0x10 [<c111b3f6>] pci_device_probe+0x43/0x66 [<c1202110>] driver_probe_device+0x79/0x105 [<c12021df>] __driver_attach+0x43/0x5f [<c1201aa5>] bus_for_each_dev+0x3d/0x67 [<c1201fe7>] driver_attach+0x14/0x16 [<c120219c>] ? __driver_attach+0x0/0x5f [<c120151c>] bus_add_driver+0x104/0x236 [<c1202423>] driver_register+0x8b/0xeb [<c1112a07>] ? __raw_spin_lock_init+0x24/0x49 [<c111b5e3>] __pci_register_driver+0x4c/0xa5 [<c1177b15>] drm_init+0x58/0xb0 [<c144db18>] ? radeon_init+0x0/0xae [<c144dbc4>] radeon_init+0xac/0xae [<c1001051>] do_one_initcall+0x4c/0x136 [<c1430357>] kernel_init+0x114/0x198 [<c1430243>] ? kernel_init+0x0/0x198 [<c1002d3a>] kernel_thread_helper+0x6/0x1a
Not sure how you expect this to work since we need AGP working.
I don't expect it to work. I do expect the driver to not oops, however.
Well, looks like this has been fixed in latest Linus' git. More than fixed, in fact: not only does the kernel not panic, but modesetting actually works (appears to fall back to a non-AGP mode of operation). commit ccb2ad579f910e6146adf4eb3aa50325253ee8c9 Author: Robert Fitzsimons <robfitz@273k.net> Date: Sat Apr 24 01:18:13 2010 +0100 drm/radeon/kms/agp The wrong AGP chipset can cause a NULL pointer dereference Selecting the wrong or no CONFIG_AGP_* chipset can cause a NULL pointer dereference when combined with CONFIG_DRM_RADEON_KMS and an old system with a R100 AGP card (should effect other cards too). The agp field will be set to NULL if no suitable AGP chipset driver is loaded, drm_agp_acquire already preforms a suitable NULL check so it can be used directly. Signed-off-by: Robert Fitzsimons <robfitz@273k.net> Signed-off-by: Dave Airlie <airlied@redhat.com>
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.