> > > Hi Dave, > > > > > > I've failed to correctly fix the via hang in the reclaim buffers rework > > > till now, so I'm only submitting the drm_sman removal of my drm cruft > > > removal series. > > > > Last attempt at your branch still had problem. Start I didn't have time > > track down the exact issue. I'm cloning the below branch and will test it. > > Thanks for cleanup. > > Jakob Bornecrantz quickly tested my attempt at fixing the deadlock you've > reported and noticed that the X server fails to start up (and that the > kernel hangs). Is that the same you're seeing? What was just merged to drm-next works fine. Its the reclaim buffer patches that cause the problem. In my case the X server starts but I get a blank screen. I have full debug on so this is what happens. Initializing cgroup subsys cpu Linux version 3.2.0-rc6-openchrome+ (jsimmons@debian) (gcc version 4.6.2 (Debian 4.6.2-7) ) #41 SMP Thu Dec 22 17:37:42 EST 2011 Command line: BOOT_IMAGE=/boot/vmlinuz-test root=UUID=2539cb3b-47b9-47fc-81c1-97dabc51b2b2 ro drm.debug=255 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009f400 (usable) BIOS-e820: 000000000009f400 - 00000000000a0000 (reserved) BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 000000007bef0000 (usable) BIOS-e820: 000000007bef0000 - 000000007bef3000 (ACPI NVS) BIOS-e820: 000000007bef3000 - 000000007bf00000 (ACPI data) BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved) NX (Execute Disable) protection: active DMI 2.3 present. DMI: MICRO-STAR INTERNATIONAL CO., LTD MS-7312/MS-7312, BIOS V1.2 01/25/2007 e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) e820 remove range: 00000000000a0000 - 0000000000100000 (usable) AGP bridge at 00:00:00 Aperture from AGP @ e8000000 old size 32 MB Aperture from AGP @ e8000000 size 128 MB (APSIZE f20) last_pfn = 0x7bef0 max_arch_pfn = 0x400000000 MTRR default type: uncachable MTRR fixed ranges enabled: 00000-9FFFF write-back A0000-BFFFF uncachable C0000-C7FFF write-protect C8000-CBFFF uncachable CC000-D3FFF write-back D4000-FFFFF uncachable MTRR variable ranges enabled: 0 base 0000000000 mask FFC0000000 write-back 1 base 0040000000 mask FFE0000000 write-back 2 base 0060000000 mask FFF0000000 write-back 3 base 0070000000 mask FFF8000000 write-back 4 base 0078000000 mask FFFC000000 write-back 5 base 007BF00000 mask FFFFF00000 uncachable 6 base 00E8000000 mask FFF8000000 write-combining 7 disabled x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 initial memory mapped : 0 - 20000000 Base memory trampoline at [ffff88000009d000] 9d000 size 8192 init_memory_mapping: 0000000000000000-000000007bef0000 0000000000 - 007be00000 page 2M 007be00000 - 007bef0000 page 4k kernel direct mapping tables up to 7bef0000 @ 1fffc000-20000000 RAMDISK: 37aba000 - 37d55000 ACPI: RSDP 00000000000f78c0 00014 (v00 VIAK8M) ACPI: RSDT 000000007bef3040 0002C (v01 VIAK8M AWRDACPI 42302E31 AWRD 00000000) ACPI: FACP 000000007bef30c0 00074 (v01 VIAK8M AWRDACPI 42302E31 AWRD 00000000) ACPI: DSDT 000000007bef3180 05396 (v01 VIAK8M AWRDACPI 00001000 MSFT 0100000E) ACPI: FACS 000000007bef0000 00040 ACPI: APIC 000000007bef8580 00068 (v01 VIAK8M AWRDACPI 42302E31 AWRD 00000000) ACPI: Local APIC address 0xfee00000 [ffffea0000000000-ffffea0001bfffff] PMD -> [ffff880079600000-ffff88007b1fffff] on node 0 Zone PFN ranges: DMA 0x00000010 -> 0x00001000 DMA32 0x00001000 -> 0x00100000 Normal empty Movable zone start PFN for each node early_node_map[2] active PFN ranges 0: 0x00000010 -> 0x0000009f 0: 0x00000100 -> 0x0007bef0 On node 0 totalpages: 507519 DMA zone: 56 pages used for memmap DMA zone: 2 pages reserved DMA zone: 3925 pages, LIFO batch:0 DMA32 zone: 6885 pages used for memmap DMA32 zone: 496651 pages, LIFO batch:31 Detected use of extended apic ids on hypertransport bus ACPI: PM-Timer IO Port: 0x4008 ACPI: Local APIC address 0xfee00000 ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) IOAPIC[0]: apic_id 2, version 3, 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 low level) ACPI: IRQ0 used by override. ACPI: IRQ2 used by override. ACPI: IRQ9 used by override. Using ACPI (MADT) for SMP configuration information SMP: Allowing 2 CPUs, 0 hotplug CPUs nr_irqs_gsi: 40 Allocating PCI resources starting at 7bf00000 (gap: 7bf00000:82d00000) setup_percpu: NR_CPUS:2 nr_cpumask_bits:2 nr_cpu_ids:2 nr_node_ids:1 PERCPU: Embedded 25 pages/cpu @ffff88007bc00000 s70592 r8192 d23616 u1048576 pcpu-alloc: s70592 r8192 d23616 u1048576 alloc=1*2097152 pcpu-alloc: [0] 0 1 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 500576 Kernel command line: BOOT_IMAGE=/boot/vmlinuz-test root=UUID=2539cb3b-47b9-47fc-81c1-97dabc51b2b2 ro drm.debug=255 PID hash table entries: 4096 (order: 3, 32768 bytes) Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes) Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes) Checking aperture... AGP bridge at 00:00:00 Aperture from AGP @ e8000000 old size 32 MB Aperture from AGP @ e8000000 size 128 MB (APSIZE f20) Node 0: aperture @ e8000000 size 128 MB Memory: 1990112k/2030528k available (2928k kernel code, 452k absent, 39964k reserved, 1416k data, 424k init) Hierarchical RCU implementation. RCU dyntick-idle grace-period acceleration is enabled. NR_IRQS:4352 nr_irqs:512 16 spurious 8259A interrupt: IRQ7. Console: colour VGA+ 80x25 console [tty0] enabled Fast TSC calibration using PIT Detected 2400.262 MHz processor. Marking TSC unstable due to TSCs unsynchronized Calibrating delay loop (skipped), value calculated using timer frequency.. 4800.52 BogoMIPS (lpj=9601048) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 256 tseg: 007bf00000 CPU: Physical Processor ID: 0 CPU: Processor Core ID: 0 mce: CPU supports 5 MCE banks using AMD E400 aware idle routine ACPI: Core revision 20110623 ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 CPU0: AMD Athlon(tm) 64 X2 Dual Core Processor 4600+ stepping 02 Performance Events: AMD PMU driver. ... version: 0 ... bit width: 48 ... generic registers: 4 ... value mask: 0000ffffffffffff ... max period: 00007fffffffffff ... fixed-purpose events: 0 ... event mask: 000000000000000f Booting Node 0, Processors #1 Ok. smpboot cpu 1: start_ip = 9d000 Brought up 2 CPUs Total of 2 processors activated (9600.68 BogoMIPS). NET: Registered protocol family 16 node 0 link 0: io port [1000, fffff] TOM: 0000000080000000 aka 2048M node 0 link 0: mmio [80000000, efffffff] node 0 link 0: mmio [f0000000, f3ffffff] node 0 link 0: mmio [f4000000, f4ffffff] node 0 link 0: mmio [f5000000, ff70ffff] node 0 link 0: mmio [a0000, bffff] bus: [00, ff] on node 0 link 0 bus: 00 index 0 [io 0x0000-0xffff] bus: 00 index 1 [mem 0x80000000-0xfcffffffff] bus: 00 index 2 [mem 0x000a0000-0x000bffff] ACPI: bus type pci registered PCI: Using configuration type 1 for base access bio: create slab <bio-0> at 0 ACPI: Added _OSI(Module Device) ACPI: Added _OSI(Processor Device) ACPI: Added _OSI(3.0 _SCP Extensions) ACPI: Added _OSI(Processor Aggregator Device) ACPI: EC: Look up EC in DSDT ACPI: Interpreter enabled ACPI: (supports S0 S5) ACPI: Using IOAPIC for interrupt routing ACPI: No dock devices found. HEST: Table not found. PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored) pci_root PNP0A03:00: host bridge window [io 0x0d00-0xffff] (ignored) pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) pci_root PNP0A03:00: host bridge window [mem 0x000c0000-0x000dffff] (ignored) pci_root PNP0A03:00: host bridge window [mem 0x80000000-0xfebfffff] (ignored) pci 0000:00:00.0: [1106:0204] type 0 class 0x000600 pci 0000:00:00.0: reg 10: [mem 0xe8000000-0xefffffff pref] pci 0000:00:00.1: [1106:1204] type 0 class 0x000600 pci 0000:00:00.2: [1106:2204] type 0 class 0x000600 pci 0000:00:00.3: [1106:3204] type 0 class 0x000600 pci 0000:00:00.4: [1106:4204] type 0 class 0x000600 pci 0000:00:00.7: [1106:7204] type 0 class 0x000600 pci 0000:00:01.0: [1106:b188] type 1 class 0x000604 pci 0000:00:01.0: supports D1 pci 0000:00:0a.0: [1102:0002] type 0 class 0x000401 pci 0000:00:0a.0: reg 10: [io 0xe300-0xe31f] pci 0000:00:0a.0: supports D1 D2 pci 0000:00:0a.1: [1102:7002] type 0 class 0x000980 pci 0000:00:0a.1: reg 10: [io 0xe900-0xe907] pci 0000:00:0a.1: supports D1 D2 pci 0000:00:0f.0: [1106:3149] type 0 class 0x000101 pci 0000:00:0f.0: reg 10: [io 0xea00-0xea07] pci 0000:00:0f.0: reg 14: [io 0xeb00-0xeb03] pci 0000:00:0f.0: reg 18: [io 0xe000-0xe007] pci 0000:00:0f.0: reg 1c: [io 0xe100-0xe103] pci 0000:00:0f.0: reg 20: [io 0xe200-0xe20f] pci 0000:00:0f.0: reg 24: [io 0xd000-0xd0ff] pci 0000:00:0f.1: [1106:0571] type 0 class 0x000101 pci 0000:00:0f.1: reg 20: [io 0xe400-0xe40f] pci 0000:00:10.0: [1106:3038] type 0 class 0x000c03 pci 0000:00:10.0: reg 20: [io 0xe500-0xe51f] pci 0000:00:10.0: supports D1 D2 pci 0000:00:10.0: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:10.0: PME# disabled pci 0000:00:10.1: [1106:3038] type 0 class 0x000c03 pci 0000:00:10.1: reg 20: [io 0xe600-0xe61f] pci 0000:00:10.1: supports D1 D2 pci 0000:00:10.1: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:10.1: PME# disabled pci 0000:00:10.2: [1106:3038] type 0 class 0x000c03 pci 0000:00:10.2: reg 20: [io 0xe700-0xe71f] pci 0000:00:10.2: supports D1 D2 pci 0000:00:10.2: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:10.2: PME# disabled pci 0000:00:10.3: [1106:3038] type 0 class 0x000c03 pci 0000:00:10.3: reg 20: [io 0xe800-0xe81f] pci 0000:00:10.3: supports D1 D2 pci 0000:00:10.3: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:10.3: PME# disabled pci 0000:00:10.4: [1106:3104] type 0 class 0x000c03 pci 0000:00:10.4: reg 10: [mem 0xf6000000-0xf60000ff] pci 0000:00:10.4: supports D1 D2 pci 0000:00:10.4: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:10.4: PME# disabled pci 0000:00:11.0: [1106:3227] type 0 class 0x000601 HPET not enabled in BIOS. You might try hpet=force boot option pci 0000:00:11.5: [1106:3059] type 0 class 0x000401 pci 0000:00:11.5: reg 10: [io 0xd400-0xd4ff] pci 0000:00:11.5: supports D1 D2 pci 0000:00:12.0: [1106:3065] type 0 class 0x000200 pci 0000:00:12.0: reg 10: [io 0xdc00-0xdcff] pci 0000:00:12.0: reg 14: [mem 0xf6001000-0xf60010ff] pci 0000:00:12.0: supports D1 D2 pci 0000:00:12.0: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:12.0: PME# disabled pci 0000:00:18.0: [1022:1100] type 0 class 0x000600 pci 0000:00:18.1: [1022:1101] type 0 class 0x000600 pci 0000:00:18.2: [1022:1102] type 0 class 0x000600 pci 0000:00:18.3: [1022:1103] type 0 class 0x000600 PCI: peer root bus 00 res updated from pci conf pci 0000:01:00.0: [1106:3108] type 0 class 0x000300 pci 0000:01:00.0: reg 10: [mem 0xf0000000-0xf3ffffff pref] pci 0000:01:00.0: reg 14: [mem 0xf4000000-0xf4ffffff] pci 0000:01:00.0: reg 30: [mem 0x00000000-0x0000ffff pref] pci 0000:01:00.0: supports D1 D2 pci 0000:00:01.0: PCI bridge to [bus 01-01] pci 0000:00:01.0: bridge window [mem 0xf4000000-0xf5ffffff] pci 0000:00:01.0: bridge window [mem 0xf0000000-0xf3ffffff pref] pci_bus 0000:00: on NUMA node 0 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] pci0000:00: Unable to request _OSC control (_OSC support mask: 0x1e) ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 6 7 *10 11 12) ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 6 7 10 *11 12) ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 6 7 10 11 12) *5 ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 6 7 10 11 12) *0, disabled. ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 6 7 10 11 12) *0, disabled. ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 6 7 10 11 12) *0, disabled. ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 6 7 10 11 12) *0, disabled. ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 6 7 10 11 12) *0, disabled. ACPI: PCI Interrupt Link [ALKA] (IRQs *20) ACPI: PCI Interrupt Link [ALKB] (IRQs *21) ACPI: PCI Interrupt Link [ALKC] (IRQs *22) ACPI: PCI Interrupt Link [ALKD] (IRQs *23) vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none vgaarb: loaded vgaarb: bridge control possible 0000:01:00.0 SCSI subsystem initialized libata version 3.00 loaded. usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb PCI: Using ACPI for IRQ routing PCI: pci_cache_line_size set to 64 bytes pci 0000:00:00.0: address space collision: [mem 0xe8000000-0xefffffff pref] conflicts with GART [mem 0xe8000000-0xefffffff] reserve RAM buffer: 000000000009f400 - 000000000009ffff reserve RAM buffer: 000000007bef0000 - 000000007bffffff pnp: PnP ACPI init ACPI: bus type pnp registered pnp 00:00: [mem 0x000f0000-0x000fffff] pnp 00:00: [mem 0x7bf00000-0x7bffffff] pnp 00:00: [mem 0x7bef0000-0x7befffff] pnp 00:00: [mem 0xffff0000-0xffffffff] pnp 00:00: [mem 0x00000000-0x0009ffff] pnp 00:00: [mem 0x00100000-0x7beeffff] pnp 00:00: [mem 0x7c000000-0x7fffffff] pnp 00:00: [mem 0xfec00000-0xfec00fff] pnp 00:00: [mem 0xfee00000-0xfee00fff] pnp 00:00: [mem 0xfff80000-0xfffeffff] pnp 00:00: disabling [mem 0x000f0000-0x000fffff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] pnp 00:00: disabling [mem 0x00000000-0x0009ffff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] pnp 00:00: disabling [mem 0x00100000-0x7beeffff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] system 00:00: [mem 0x7bf00000-0x7bffffff] could not be reserved system 00:00: [mem 0x7bef0000-0x7befffff] could not be reserved system 00:00: [mem 0xffff0000-0xffffffff] has been reserved system 00:00: [mem 0x7c000000-0x7fffffff] has been reserved system 00:00: [mem 0xfec00000-0xfec00fff] could not be reserved system 00:00: [mem 0xfee00000-0xfee00fff] has been reserved system 00:00: [mem 0xfff80000-0xfffeffff] has been reserved system 00:00: Plug and Play ACPI device, IDs PNP0c01 (active) pnp 00:01: [bus 00-ff] pnp 00:01: [io 0x0cf8-0x0cff] pnp 00:01: [io 0x0000-0x0cf7 window] pnp 00:01: [io 0x0d00-0xffff window] pnp 00:01: [mem 0x000a0000-0x000bffff window] pnp 00:01: [mem 0x000c0000-0x000dffff window] pnp 00:01: [mem 0x80000000-0xfebfffff window] pnp 00:01: Plug and Play ACPI device, IDs PNP0a03 (active) pnp 00:02: [io 0x4000-0x407f] pnp 00:02: [io 0x5000-0x500f] system 00:02: [io 0x4000-0x407f] has been reserved system 00:02: [io 0x5000-0x500f] has been reserved system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active) pnp 00:03: [io 0x0010-0x001f] pnp 00:03: [io 0x0022-0x003f] pnp 00:03: [io 0x0044-0x005f] pnp 00:03: [io 0x0062-0x0063] pnp 00:03: [io 0x0065-0x006f] pnp 00:03: [io 0x0074-0x007f] pnp 00:03: [io 0x0091-0x0093] pnp 00:03: [io 0x00a2-0x00bf] pnp 00:03: [io 0x00e0-0x00ef] pnp 00:03: [io 0x04d0-0x04d1] pnp 00:03: [io 0x0290-0x0297] system 00:03: [io 0x04d0-0x04d1] has been reserved system 00:03: [io 0x0290-0x0297] has been reserved system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active) pnp 00:04: [dma 4] pnp 00:04: [io 0x0000-0x000f] pnp 00:04: [io 0x0080-0x0090] pnp 00:04: [io 0x0094-0x009f] pnp 00:04: [io 0x00c0-0x00df] pnp 00:04: Plug and Play ACPI device, IDs PNP0200 (active) pnp 00:05: [io 0x0070-0x0073] pnp 00:05: [irq 8] pnp 00:05: Plug and Play ACPI device, IDs PNP0b00 (active) pnp 00:06: [io 0x0061] pnp 00:06: Plug and Play ACPI device, IDs PNP0800 (active) pnp 00:07: [io 0x00f0-0x00ff] pnp 00:07: [irq 13] pnp 00:07: Plug and Play ACPI device, IDs PNP0c04 (active) pnp 00:08: [io 0x03f0-0x03f5] pnp 00:08: [io 0x03f7] pnp 00:08: [irq 6] pnp 00:08: [dma 2] pnp 00:08: Plug and Play ACPI device, IDs PNP0700 (active) pnp 00:09: [io 0x03f8-0x03ff] pnp 00:09: [irq 4] pnp 00:09: Plug and Play ACPI device, IDs PNP0501 (active) pnp 00:0a: [io 0x02f8-0x02ff] pnp 00:0a: [irq 3] pnp 00:0a: Plug and Play ACPI device, IDs PNP0501 (active) pnp 00:0b: [io 0x0378-0x037f] pnp 00:0b: [io 0x0778-0x077b] pnp 00:0b: [irq 7] pnp 00:0b: Plug and Play ACPI device, IDs PNP0400 (active) pnp 00:0c: [io 0x0060] pnp 00:0c: [io 0x0064] pnp 00:0c: [irq 1] pnp 00:0c: Plug and Play ACPI device, IDs PNP0303 PNP030b (active) pnp: PnP ACPI: found 13 devices ACPI: ACPI bus type pnp unregistered Switching to clocksource acpi_pm PCI: max bus depth: 1 pci_try_num: 2 pci 0000:01:00.0: BAR 6: assigned [mem 0xf5000000-0xf500ffff pref] pci 0000:00:01.0: PCI bridge to [bus 01-01] pci 0000:00:01.0: bridge window [mem 0xf4000000-0xf5ffffff] pci 0000:00:01.0: bridge window [mem 0xf0000000-0xf3ffffff pref] pci 0000:00:01.0: setting latency timer to 64 pci_bus 0000:00: resource 4 [io 0x0000-0xffff] pci_bus 0000:00: resource 5 [mem 0x80000000-0xfcffffffff] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] pci_bus 0000:01: resource 1 [mem 0xf4000000-0xf5ffffff] pci_bus 0000:01: resource 2 [mem 0xf0000000-0xf3ffffff pref] NET: Registered protocol family 2 IP route cache hash table entries: 65536 (order: 7, 524288 bytes) TCP established hash table entries: 262144 (order: 10, 4194304 bytes) TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) TCP: Hash tables configured (established 262144 bind 65536) TCP reno registered UDP hash table entries: 1024 (order: 3, 32768 bytes) UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes) NET: Registered protocol family 1 pci 0000:00:00.0: MSI quirk detected; MSI disabled pci 0000:00:01.0: disabling DAC on VIA PCI bridge pci 0000:01:00.0: Boot video device PCI: CLS 32 bytes, default 64 Unpacking initramfs... Freeing initrd memory: 2668k freed agpgart-amd64 0000:00:00.0: AGP bridge [1106/0204] agpgart-amd64 0000:00:00.0: AGP aperture is 128M @ 0xe8000000 audit: initializing netlink socket (disabled) type=2000 audit(1324595731.264:1): initialized HugeTLB registered 2 MB page size, pre-allocated 0 pages msgmni has been set to 3892 Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input0 ACPI: Power Button [PWRB] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 ACPI: Power Button [PWRF] ACPI: Fan [FAN] (on) thermal LNXTHERM:00: registered as thermal_zone0 ACPI: Thermal Zone [THRM] (40 C) ERST: Table is not found! GHES: HEST is not enabled! Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A 00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A 00:0a: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A Linux agpgart interface v0.103 Hangcheck: starting hangcheck timer 0.9.1 (tick is 180 seconds, margin is 60 seconds). Hangcheck: Using getrawmonotonic(). [drm] Initialized drm 1.1.0 20060810 sata_via 0000:00:0f.0: version 2.6 ACPI: PCI Interrupt Link [ALKA] enabled at IRQ 20 sata_via 0000:00:0f.0: PCI INT B -> Link[ALKA] -> GSI 20 (level, low) -> IRQ 20 sata_via 0000:00:0f.0: routed to hard irq line 11 scsi0 : sata_via scsi1 : sata_via ata1: SATA max UDMA/133 cmd 0xea00 ctl 0xeb00 bmdma 0xe200 irq 20 ata2: SATA max UDMA/133 cmd 0xe000 ctl 0xe100 bmdma 0xe208 irq 20 pata_via 0000:00:0f.1: version 0.3.4 pata_via 0000:00:0f.1: PCI INT A -> Link[ALKA] -> GSI 20 (level, low) -> IRQ 20 scsi2 : pata_via scsi3 : pata_via ata3: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xe400 irq 14 ata4: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xe408 irq 15 tun: Universal TUN/TAP device driver, 1.6 tun: (C) 1999-2004 Max Krasnyansky <maxk@xxxxxxxxxxxx> via_rhine: v1.10-LK1.5.0 2010-10-09 Written by Donald Becker ACPI: PCI Interrupt Link [ALKD] enabled at IRQ 23 via-rhine 0000:00:12.0: PCI INT A -> Link[ALKD] -> GSI 23 (level, low) -> IRQ 23 via-rhine 0000:00:12.0: eth0: VIA Rhine II at 0xf6001000, 00:19:db:ab:85:68, IRQ 23 via-rhine 0000:00:12.0: eth0: MII PHY found at address 1, status 0x786d advertising 01e1 Link 45e1 ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ACPI: PCI Interrupt Link [ALKB] enabled at IRQ 21 ehci_hcd 0000:00:10.4: PCI INT C -> Link[ALKB] -> GSI 21 (level, low) -> IRQ 21 ehci_hcd 0000:00:10.4: EHCI Host Controller ehci_hcd 0000:00:10.4: new USB bus registered, assigned bus number 1 ehci_hcd 0000:00:10.4: irq 21, io mem 0xf6000000 ehci_hcd 0000:00:10.4: USB 2.0 started, EHCI 1.00 hub 1-0:1.0: USB hub found hub 1-0:1.0: 8 ports detected uhci_hcd: USB Universal Host Controller Interface driver uhci_hcd 0000:00:10.0: PCI INT A -> Link[ALKB] -> GSI 21 (level, low) -> IRQ 21 uhci_hcd 0000:00:10.0: UHCI Host Controller uhci_hcd 0000:00:10.0: new USB bus registered, assigned bus number 2 uhci_hcd 0000:00:10.0: irq 21, io base 0x0000e500 hub 2-0:1.0: USB hub found hub 2-0:1.0: 2 ports detected uhci_hcd 0000:00:10.1: PCI INT A -> Link[ALKB] -> GSI 21 (level, low) -> IRQ 21 uhci_hcd 0000:00:10.1: UHCI Host Controller uhci_hcd 0000:00:10.1: new USB bus registered, assigned bus number 3 uhci_hcd 0000:00:10.1: irq 21, io base 0x0000e600 hub 3-0:1.0: USB hub found hub 3-0:1.0: 2 ports detected uhci_hcd 0000:00:10.2: PCI INT B -> Link[ALKB] -> GSI 21 (level, low) -> IRQ 21 uhci_hcd 0000:00:10.2: UHCI Host Controller uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 4 uhci_hcd 0000:00:10.2: irq 21, io base 0x0000e700 hub 4-0:1.0: USB hub found hub 4-0:1.0: 2 ports detected uhci_hcd 0000:00:10.3: PCI INT B -> Link[ALKB] -> GSI 21 (level, low) -> IRQ 21 uhci_hcd 0000:00:10.3: UHCI Host Controller uhci_hcd 0000:00:10.3: new USB bus registered, assigned bus number 5 uhci_hcd 0000:00:10.3: irq 21, io base 0x0000e800 hub 5-0:1.0: USB hub found hub 5-0:1.0: 2 ports detected usbcore: registered new interface driver libusual i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1 i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp serio: i8042 KBD port at 0x60,0x64 irq 1 mousedev: PS/2 mouse device common for all mice i2c /dev entries driver md: raid10 personality registered for level 10 device-mapper: uevent: version 1.0.3 device-mapper: ioctl: 4.22.0-ioctl (2011-10-19) initialised: dm-devel@xxxxxxxxxx cpuidle: using governor ladder cpuidle: using governor menu usbcore: registered new interface driver usbhid usbhid: USB HID core driver TCP cubic registered NET: Registered protocol family 17 Registering the dns_resolver key type registered taskstats version 1 drivers/rtc/hctosys.c: unable to open rtc device (rtc0) input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2 ata3.00: ATAPI: SAMSUNG DVD-ROM SD-616, F000DEL, max UDMA/33 ata1: SATA link down 1.5 Gbps (SStatus 0 SControl 300) ata3.01: ATA-7: ST3120814A, 3.AAJ, max UDMA/100 ata3.01: 234441648 sectors, multi 16: LBA48 ata3.00: configured for UDMA/33 ata3.01: configured for UDMA/100 ata2: SATA link down 1.5 Gbps (SStatus 0 SControl 300) scsi 2:0:0:0: CD-ROM SAMSUNG DVD-ROM SD-616 F000 PQ: 0 ANSI: 5 sr0: scsi3-mmc drive: 48x/48x cd/rw xa/form2 cdda tray cdrom: Uniform CD-ROM driver Revision: 3.20 sr 2:0:0:0: Attached scsi CD-ROM sr0 sr 2:0:0:0: Attached scsi generic sg0 type 5 scsi 2:0:1:0: Direct-Access ATA ST3120814A 3.AA PQ: 0 ANSI: 5 sd 2:0:1:0: [sda] 234441648 512-byte logical blocks: (120 GB/111 GiB) sd 2:0:1:0: Attached scsi generic sg1 type 0 sd 2:0:1:0: [sda] Write Protect is off sd 2:0:1:0: [sda] Mode Sense: 00 3a 00 00 sd 2:0:1:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA sda: sda1 sda2 < sda5 > sd 2:0:1:0: [sda] Attached SCSI disk usb 5-2: new low-speed USB device number 2 using uhci_hcd Freeing unused kernel memory: 424k freed input: Cypress Sem PS2/USB Browser Combo Mouse as /devices/pci0000:00/0000:00:10.3/usb5/5-2/5-2:1.0/input/input3 generic-usb 0003:05FE:0011.0001: input,hidraw0: USB HID v1.00 Mouse [Cypress Sem PS2/USB Browser Combo Mouse] on usb-0000:00:10.3-2/input0 kjournald starting. Commit interval 5 seconds EXT3-fs (sda1): mounted filesystem with writeback data mode udevd[741]: starting version 175 rtc_cmos 00:05: RTC can wake from S4 rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0 rtc0: alarms up to one year, y3k, 242 bytes nvram parport_pc 00:0b: reported by Plug and Play ACPI parport0: PC-style at 0x378, irq 7 [PCSPP] gameport gameport0: EMU10K1 is pci0000:00:0a.1/gameport0, io 0xe900, speed 1129kHz k8temp 0000:00:18.3: Temperature readouts might be wrong - check erratum #141 snd_emu10k1 0000:00:0a.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 ACPI: PCI Interrupt Link [ALKC] enabled at IRQ 22 snd_via82xx 0000:00:11.5: PCI INT C -> Link[ALKC] -> GSI 22 (level, low) -> IRQ 22 snd_via82xx 0000:00:11.5: setting latency timer to 64 Adding 2249064k swap on /dev/sda5. Priority:-1 extents:1 across:2249064k EXT3-fs (sda1): using internal journal loop: module loaded RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. FS-Cache: Loaded FS-Cache: Netfs 'nfs' registered for caching via-rhine 0000:00:12.0: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 NET4: DECnet for Linux: V.2.5.68s (C) 1995-2003 Linux DECnet Project Team DECnet: Routing cache hash table of 1024 buckets, 16Kbytes NET: Registered protocol family 12 [drm:drm_pci_init], [drm:drm_get_pci_dev], pci 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [drm:drm_get_minor], [drm:drm_get_minor], new minor assigned 0 [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). [drm] No driver support for vblank timestamp query. [drm] Initialized via 2.11.1 20070202 for 0000:01:00.0 on minor 0 [drm:drm_stub_open], [drm:drm_open_helper], pid = 1801, minor = 0 [drm:via_driver_open], [drm:drm_setup], [drm:drm_ioctl], pid=1801, cmd=0xc0106407, nr=0x07, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0106401, nr=0x01, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0106401, nr=0x01, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0406400, nr=0x00, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0406400, nr=0x00, dev 0xe200, auth=1 [drm:drm_release], open_count = 1 [drm:drm_release], pid = 1801, device = 0xe200, open_count = 1 [drm:drm_lastclose], [drm:drm_lastclose], driver lastclose completed [drm:drm_lastclose], lastclose completed [drm:drm_stub_open], [drm:drm_open_helper], pid = 1801, minor = 0 [drm:via_driver_open], [drm:drm_setup], [drm:drm_ioctl], pid=1801, cmd=0xc0406400, nr=0x00, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0406400, nr=0x00, dev 0xe200, auth=1 [drm:drm_release], open_count = 1 [drm:drm_release], pid = 1801, device = 0xe200, open_count = 1 [drm:drm_lastclose], [drm:drm_lastclose], driver lastclose completed [drm:drm_lastclose], lastclose completed [drm:drm_stub_open], [drm:drm_open_helper], pid = 1801, minor = 0 [drm:via_driver_open], [drm:drm_setup], [drm:drm_ioctl], pid=1801, cmd=0xc0406400, nr=0x00, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0406400, nr=0x00, dev 0xe200, auth=1 [drm:drm_release], open_count = 1 [drm:drm_release], pid = 1801, device = 0xe200, open_count = 1 [drm:drm_lastclose], [drm:drm_lastclose], driver lastclose completed [drm:drm_lastclose], lastclose completed [drm:drm_stub_open], [drm:drm_open_helper], pid = 1801, minor = 0 [drm:via_driver_open], [drm:drm_setup], [drm:drm_ioctl], pid=1801, cmd=0xc0106407, nr=0x07, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0106401, nr=0x01, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0106401, nr=0x01, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0106407, nr=0x07, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0286415, nr=0x15, dev 0xe200, auth=1 [drm:drm_addmap_core], offset = 0x00000000, size = 0x00002000, type = 2 [drm:drm_addmap_core], 8192 13 ffffc900004f0000 [drm:drm_mmap_locked], start = 0x7f91e3988000, end = 0x7f91e398a000, page offset = 0x2b7ff [drm:drm_vm_open_locked], 0x7f91e3988000,0x00002000 [drm:drm_do_vm_shm_fault], shm_fault 0x0 [drm:drm_do_vm_shm_fault], shm_fault 0x1000 [drm:drm_ioctl], pid=1801, cmd=0xc0286415, nr=0x15, dev 0xe200, auth=1 [drm:drm_addmap_core], offset = 0xf0000000, size = 0x04000000, type = 0 [drm:drm_ioctl], pid=1801, cmd=0xc0106426, nr=0x26, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0106426, nr=0x26, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0086420, nr=0x20, dev 0xe200, auth=1 [drm:drm_addctx], 1 [drm:drm_ioctl], pid=1801, cmd=0x40086422, nr=0x22, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1 [drm:drm_lock], 1 (pid 1801) requests lock (0x00000000), flags = 0x00000000 [drm:drm_lock], 1 has lock [drm:drm_fasync], fd = 9, device = 0xe200 [drm:drm_ioctl], pid=1801, cmd=0xc0286415, nr=0x15, dev 0xe200, auth=1 [drm:drm_addmap_core], offset = 0xf4000000, size = 0x0000d000, type = 1 [drm:drm_ioctl], pid=1801, cmd=0xc0286415, nr=0x15, dev 0xe200, auth=1 [drm:drm_addmap_core], offset = 0xf0000000, size = 0x04000000, type = 0 [drm:drm_ioctl], pid=1801, cmd=0x6430, nr=0x30, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0x80386433, nr=0x33, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0x80386433, nr=0x33, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0x80386433, nr=0x33, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0x40086432, nr=0x32, dev 0xe200, auth=1 agpgart-amd64 0000:00:00.0: AGP 3.0 bridge agpgart-amd64 0000:00:00.0: putting AGP V3 device into 8x mode pci 0000:01:00.0: putting AGP V3 device into 8x mode [drm:drm_ioctl], pid=1801, cmd=0xc0206434, nr=0x34, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0x40106436, nr=0x36, dev 0xe200, auth=1 [drm:drm_agp_bind], base = 0xe8000000 entry->bound = 0xe8000000 [drm:drm_ioctl], pid=1801, cmd=0x80386433, nr=0x33, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0x40086442, nr=0x42, dev 0xe200, auth=1 [drm:via_agp_init], offset = 0, size = 31457280 [drm:drm_ioctl], pid=1801, cmd=0xc0286415, nr=0x15, dev 0xe200, auth=1 [drm:drm_addmap_core], offset = 0x00000000, size = 0x01e00000, type = 3 [drm:drm_addmap_core], AGP offset = 0xe8000000, size = 0x01e00000 [drm:drm_mmap_locked], start = 0x7f91d8af3000, end = 0x7f91da8f3000, page offset = 0xe8000 [drm:drm_mmap_locked], Type = 3; start = 0x7f91d8af3000, end = 0x7f91da8f3000, offset = 0xe8000000 [drm:drm_vm_open_locked], 0x7f91d8af3000,0x01e00000 [drm:drm_ioctl], pid=1801, cmd=0x40086443, nr=0x43, dev 0xe200, auth=1 [drm:via_fb_init], offset = 0, size = 67108864 [drm:drm_ioctl], pid=1801, cmd=0x40286444, nr=0x44, dev 0xe200, auth=1 [drm:via_map_init], [drm:via_do_init_map], [drm:via_init_futex], [drm:drm_ioctl], pid=1801, cmd=0xc0206440, nr=0x40, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0206440, nr=0x40, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0206440, nr=0x40, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0206440, nr=0x40, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0206440, nr=0x40, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0206440, nr=0x40, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0x40206447, nr=0x47, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0206440, nr=0x40, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0206440, nr=0x40, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0286415, nr=0x15, dev 0xe200, auth=1 [drm:drm_addmap_core], offset = 0xf0000000, size = 0x04000000, type = 0 [drm:drm_stub_open], [drm:drm_open_helper], pid = 1801, minor = 0 [drm:via_driver_open], [drm:drm_ioctl], pid=1801, cmd=0xc0406400, nr=0x00, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0406400, nr=0x00, dev 0xe200, auth=1 [drm:drm_release], open_count = 2 [drm:drm_release], pid = 1801, device = 0xe200, open_count = 2 [drm:drm_stub_open], [drm:drm_open_helper], pid = 1801, minor = 0 [drm:via_driver_open], [drm:drm_ioctl], pid=1801, cmd=0xc0106407, nr=0x07, dev 0xe200, auth=1 [drm:drm_ioctl], ret = fffffff3 [drm:drm_ioctl], pid=1801, cmd=0xc0106407, nr=0x07, dev 0xe200, auth=1 [drm:drm_ioctl], ret = fffffff3 [drm:drm_ioctl], pid=1801, cmd=0xc0106401, nr=0x01, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0106401, nr=0x01, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0x80046402, nr=0x02, dev 0xe200, auth=1 [drm:drm_add_magic], 1 [drm:drm_getmagic], 1 [drm:drm_ioctl], pid=1801, cmd=0xc0406400, nr=0x00, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0xc0406400, nr=0x00, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0x40046411, nr=0x11, dev 0xe200, auth=1 [drm:drm_authmagic], 1 [drm:drm_remove_magic], 1 [drm:drm_mmap_locked], start = 0x7f91d405f000, end = 0x7f91d805f000, page offset = 0xf0000 [drm:drm_mmap_locked], Type = 0; start = 0x7f91d405f000, end = 0x7f91d805f000, offset = 0xf0000000 [drm:drm_vm_open_locked], 0x7f91d405f000,0x04000000 [drm:drm_mmap_locked], start = 0x7f91e3986000, end = 0x7f91e3988000, page offset = 0x2b7ff [drm:drm_vm_open_locked], 0x7f91e3986000,0x00002000 [drm:drm_vm_shm_close], 0x7f91e3986000,0x00002000 [drm:drm_vm_close_locked], 0x7f91d405f000,0x04000000 [drm:drm_release], open_count = 2 [drm:drm_release], pid = 1801, device = 0xe200, open_count = 2 [drm:drm_vm_open_locked], 0x7f91d8af3000,0x01e00000 [drm:drm_vm_open_locked], 0x7f91e3988000,0x00002000 [drm:drm_vm_close_locked], 0x7f91d8af3000,0x01e00000 [drm:drm_vm_shm_close], 0x7f91e3988000,0x00002000 [drm:drm_vm_open_locked], 0x7f91d8af3000,0x01e00000 [drm:drm_vm_open_locked], 0x7f91e3988000,0x00002000 [drm:drm_vm_close_locked], 0x7f91d8af3000,0x01e00000 [drm:drm_vm_shm_close], 0x7f91e3988000,0x00002000 [drm:drm_ioctl], pid=1801, cmd=0x4008642b, nr=0x2b, dev 0xe200, auth=1 [drm:drm_ioctl], pid=1801, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1 [drm:drm_lock], 1 (pid 1801) requests lock (0x80000000), flags = 0x00000000 [drm:drm_lock], 1 interrupted [drm:drm_ioctl], ret = fffffffc [drm:drm_ioctl], pid=1801, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1 [drm:drm_lock], 1 (pid 1801) requests lock (0xc0000000), flags = 0x00000000 [drm:drm_lock], 1 interrupted [drm:drm_ioctl], ret = fffffffc [drm:drm_ioctl], pid=1801, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1 [drm:drm_lock], 1 (pid 1801) requests lock (0xc0000000), flags = 0x00000000 [drm:drm_lock], 1 interrupted [drm:drm_ioctl], ret = fffffffc [drm:drm_ioctl], pid=1801, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1 [drm:drm_lock], 1 (pid 1801) requests lock (0xc0000000), flags = 0x00000000 [drm:drm_lock], 1 interrupted [drm:drm_ioctl], ret = fffffffc [drm:drm_ioctl], pid=1801, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1 [drm:drm_lock], 1 (pid 1801) requests lock (0xc0000000), flags = 0x00000000 [drm:drm_lock], 1 interrupted [drm:drm_ioctl], ret = fffffffc [drm:drm_ioctl], pid=1801, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1 [drm:drm_lock], 1 (pid 1801) requests lock (0xc0000000), flags = 0x00000000 [drm:drm_lock], 1 interrupted [drm:drm_ioctl], ret = fffffffc [drm:drm_ioctl], pid=1801, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1 [drm:drm_lock], 1 (pid 1801) requests lock (0xc0000000), flags = 0x00000000 Here are your updated reclaim patches updated against drm-next. diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c index c00cf15..3e65f4d 100644 --- a/drivers/gpu/drm/drm_fops.c +++ b/drivers/gpu/drm/drm_fops.c @@ -361,61 +361,10 @@ int drm_fasync(int fd, struct file *filp, int on) } EXPORT_SYMBOL(drm_fasync); -/* - * Reclaim locked buffers; note that this may be a bad idea if the current - * context doesn't have the hw lock... - */ -static void drm_reclaim_locked_buffers(struct drm_device *dev, struct file *f) -{ - struct drm_file *file_priv = f->private_data; - - if (drm_i_have_hw_lock(dev, file_priv)) { - dev->driver->reclaim_buffers_locked(dev, file_priv); - } else { - unsigned long _end = jiffies + 3 * DRM_HZ; - int locked = 0; - - drm_idlelock_take(&file_priv->master->lock); - - /* - * Wait for a while. - */ - do { - spin_lock_bh(&file_priv->master->lock.spinlock); - locked = file_priv->master->lock.idle_has_lock; - spin_unlock_bh(&file_priv->master->lock.spinlock); - if (locked) - break; - schedule(); - } while (!time_after_eq(jiffies, _end)); - - if (!locked) { - DRM_ERROR("reclaim_buffers_locked() deadlock. Please rework this\n" - "\tdriver to use reclaim_buffers_idlelocked() instead.\n" - "\tI will go on reclaiming the buffers anyway.\n"); - } - - dev->driver->reclaim_buffers_locked(dev, file_priv); - drm_idlelock_release(&file_priv->master->lock); - } -} - static void drm_master_release(struct drm_device *dev, struct file *filp) { struct drm_file *file_priv = filp->private_data; - if (dev->driver->reclaim_buffers_locked && - file_priv->master->lock.hw_lock) - drm_reclaim_locked_buffers(dev, filp); - - if (dev->driver->reclaim_buffers_idlelocked && - file_priv->master->lock.hw_lock) { - drm_idlelock_take(&file_priv->master->lock); - dev->driver->reclaim_buffers_idlelocked(dev, file_priv); - drm_idlelock_release(&file_priv->master->lock); - } - - if (drm_i_have_hw_lock(dev, file_priv)) { DRM_DEBUG("File %p released, freeing lock for context %d\n", filp, _DRM_LOCKING_CONTEXT(file_priv->master->lock.hw_lock->lock)); @@ -423,10 +372,8 @@ static void drm_master_release(struct drm_device *dev, struct file *filp) _DRM_LOCKING_CONTEXT(file_priv->master->lock.hw_lock->lock)); } - if (drm_core_check_feature(dev, DRIVER_HAVE_DMA) && - !dev->driver->reclaim_buffers_locked) { - dev->driver->reclaim_buffers(dev, file_priv); - } + if (drm_core_check_feature(dev, DRIVER_HAVE_DMA)) + drm_core_reclaim_buffers(dev, file_priv); } static void drm_events_release(struct drm_file *file_priv) diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 22c8ab7..e14f658 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -844,7 +844,6 @@ static struct drm_driver driver = { .resume = i915_resume, .device_is_agp = i915_driver_device_is_agp, - .reclaim_buffers = drm_core_reclaim_buffers, .master_create = i915_master_create, .master_destroy = i915_master_destroy, #if defined(CONFIG_DEBUG_FS) diff --git a/drivers/gpu/drm/mga/mga_drv.c b/drivers/gpu/drm/mga/mga_drv.c index f9a925d..b1bb46d 100644 --- a/drivers/gpu/drm/mga/mga_drv.c +++ b/drivers/gpu/drm/mga/mga_drv.c @@ -75,7 +75,6 @@ static struct drm_driver driver = { .irq_postinstall = mga_driver_irq_postinstall, .irq_uninstall = mga_driver_irq_uninstall, .irq_handler = mga_driver_irq_handler, - .reclaim_buffers = drm_core_reclaim_buffers, .ioctls = mga_ioctls, .dma_ioctl = mga_dma_buffers, .fops = &mga_driver_fops, diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c index e4a7cfe..681217b 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drv.c +++ b/drivers/gpu/drm/nouveau/nouveau_drv.c @@ -423,7 +423,6 @@ static struct drm_driver driver = { .get_vblank_counter = drm_vblank_count, .enable_vblank = nouveau_vblank_enable, .disable_vblank = nouveau_vblank_disable, - .reclaim_buffers = drm_core_reclaim_buffers, .ioctls = nouveau_ioctls, .fops = &nouveau_driver_fops, .gem_init_object = nouveau_gem_object_new, diff --git a/drivers/gpu/drm/r128/r128_drv.c b/drivers/gpu/drm/r128/r128_drv.c index 6a5f439..a32d9b8 100644 --- a/drivers/gpu/drm/r128/r128_drv.c +++ b/drivers/gpu/drm/r128/r128_drv.c @@ -71,7 +71,6 @@ static struct drm_driver driver = { .irq_postinstall = r128_driver_irq_postinstall, .irq_uninstall = r128_driver_irq_uninstall, .irq_handler = r128_driver_irq_handler, - .reclaim_buffers = drm_core_reclaim_buffers, .ioctls = r128_ioctls, .dma_ioctl = r128_cce_buffers, .fops = &r128_driver_fops, diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index c3ef1d2..3b0a4c0 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -244,7 +244,6 @@ static struct drm_driver driver_old = { .irq_postinstall = radeon_driver_irq_postinstall, .irq_uninstall = radeon_driver_irq_uninstall, .irq_handler = radeon_driver_irq_handler, - .reclaim_buffers = drm_core_reclaim_buffers, .ioctls = radeon_ioctls, .dma_ioctl = radeon_cp_buffers, .fops = &radeon_driver_old_fops, @@ -346,7 +345,6 @@ static struct drm_driver kms_driver = { .irq_postinstall = radeon_driver_irq_postinstall_kms, .irq_uninstall = radeon_driver_irq_uninstall_kms, .irq_handler = radeon_driver_irq_handler_kms, - .reclaim_buffers = drm_core_reclaim_buffers, .ioctls = radeon_ioctls_kms, .gem_init_object = radeon_gem_object_init, .gem_free_object = radeon_gem_object_free, diff --git a/drivers/gpu/drm/savage/savage_bci.c b/drivers/gpu/drm/savage/savage_bci.c index cb1ee4e..1c00dbd 100644 --- a/drivers/gpu/drm/savage/savage_bci.c +++ b/drivers/gpu/drm/savage/savage_bci.c @@ -1050,6 +1050,7 @@ void savage_reclaim_buffers(struct drm_device *dev, struct drm_file *file_priv) { struct drm_device_dma *dma = dev->dma; drm_savage_private_t *dev_priv = dev->dev_private; + int release_idlelock = 0; int i; if (!dma) @@ -1059,7 +1060,8 @@ void savage_reclaim_buffers(struct drm_device *dev, struct drm_file *file_priv) if (!dma->buflist) return; - /*i830_flush_queue(dev); */ + if (file_priv->master && file_priv->master->lock.hw_lock) + drm_idlelock_take(&file_priv->master->lock); for (i = 0; i < dma->buf_count; i++) { struct drm_buf *buf = dma->buflist[i]; @@ -1075,7 +1077,8 @@ void savage_reclaim_buffers(struct drm_device *dev, struct drm_file *file_priv) } } - drm_core_reclaim_buffers(dev, file_priv); + if (release_idlelock) + drm_idlelock_release(&file_priv->master->lock); } struct drm_ioctl_desc savage_ioctls[] = { diff --git a/drivers/gpu/drm/savage/savage_drv.c b/drivers/gpu/drm/savage/savage_drv.c index 89afe0b..d31d4cc 100644 --- a/drivers/gpu/drm/savage/savage_drv.c +++ b/drivers/gpu/drm/savage/savage_drv.c @@ -52,9 +52,9 @@ static struct drm_driver driver = { .dev_priv_size = sizeof(drm_savage_buf_priv_t), .load = savage_driver_load, .firstopen = savage_driver_firstopen, + .preclose = savage_reclaim_buffers, .lastclose = savage_driver_lastclose, .unload = savage_driver_unload, - .reclaim_buffers = savage_reclaim_buffers, .ioctls = savage_ioctls, .dma_ioctl = savage_bci_buffers, .fops = &savage_driver_fops, diff --git a/drivers/gpu/drm/sis/sis_drv.c b/drivers/gpu/drm/sis/sis_drv.c index 06da063..7bfc0f2 100644 --- a/drivers/gpu/drm/sis/sis_drv.c +++ b/drivers/gpu/drm/sis/sis_drv.c @@ -104,10 +104,9 @@ static struct drm_driver driver = { .load = sis_driver_load, .unload = sis_driver_unload, .open = sis_driver_open, + .preclose = sis_reclaim_buffers_locked, .postclose = sis_driver_postclose, .dma_quiescent = sis_idle, - .reclaim_buffers = NULL, - .reclaim_buffers_idlelocked = sis_reclaim_buffers_locked, .lastclose = sis_lastclose, .ioctls = sis_ioctls, .fops = &sis_driver_fops, diff --git a/drivers/gpu/drm/sis/sis_mm.c b/drivers/gpu/drm/sis/sis_mm.c index 46cb2bc..63c2f75 100644 --- a/drivers/gpu/drm/sis/sis_mm.c +++ b/drivers/gpu/drm/sis/sis_mm.c @@ -322,14 +322,18 @@ void sis_reclaim_buffers_locked(struct drm_device *dev, struct sis_file_private *file_priv = file->driver_priv; struct sis_memblock *entry, *next; + int release_idlelock = 0; + + if (file->master && file->master->lock.hw_lock) + drm_idlelock_take(&file->master->lock); + mutex_lock(&dev->struct_mutex); if (list_empty(&file_priv->obj_list)) { mutex_unlock(&dev->struct_mutex); return; } - if (dev->driver->dma_quiescent) - dev->driver->dma_quiescent(dev); + sis_idle(dev); list_for_each_entry_safe(entry, next, &file_priv->obj_list, @@ -344,6 +348,10 @@ void sis_reclaim_buffers_locked(struct drm_device *dev, kfree(entry); } mutex_unlock(&dev->struct_mutex); + + if (release_idlelock) + drm_idlelock_release(&file->master->lock); + return; } diff --git a/drivers/gpu/drm/tdfx/tdfx_drv.c b/drivers/gpu/drm/tdfx/tdfx_drv.c index 1613c78..90f6b13 100644 --- a/drivers/gpu/drm/tdfx/tdfx_drv.c +++ b/drivers/gpu/drm/tdfx/tdfx_drv.c @@ -54,7 +54,6 @@ static const struct file_operations tdfx_driver_fops = { static struct drm_driver driver = { .driver_features = DRIVER_USE_MTRR, - .reclaim_buffers = drm_core_reclaim_buffers, .fops = &tdfx_driver_fops, .name = DRIVER_NAME, .desc = DRIVER_DESC, diff --git a/drivers/gpu/drm/via/via_drv.c b/drivers/gpu/drm/via/via_drv.c index 02661f3..e927b4c 100644 --- a/drivers/gpu/drm/via/via_drv.c +++ b/drivers/gpu/drm/via/via_drv.c @@ -75,6 +75,7 @@ static struct drm_driver driver = { .load = via_driver_load, .unload = via_driver_unload, .open = via_driver_open, + .preclose = via_reclaim_buffers_locked, .postclose = via_driver_postclose, .context_dtor = via_final_context, .get_vblank_counter = via_get_vblank_counter, @@ -85,9 +86,6 @@ static struct drm_driver driver = { .irq_uninstall = via_driver_irq_uninstall, .irq_handler = via_driver_irq_handler, .dma_quiescent = via_driver_dma_quiescent, - .reclaim_buffers = drm_core_reclaim_buffers, - .reclaim_buffers_locked = NULL, - .reclaim_buffers_idlelocked = via_reclaim_buffers_locked, .lastclose = via_lastclose, .ioctls = via_ioctls, .fops = &via_driver_fops, diff --git a/drivers/gpu/drm/via/via_mm.c b/drivers/gpu/drm/via/via_mm.c index bedb23d..f29d0c5 100644 --- a/drivers/gpu/drm/via/via_mm.c +++ b/drivers/gpu/drm/via/via_mm.c @@ -215,6 +215,10 @@ void via_reclaim_buffers_locked(struct drm_device *dev, { struct via_file_private *file_priv = file->driver_priv; struct via_memblock *entry, *next; + int release_idlelock = 0; + + if (file->master && file->master->lock.hw_lock) + drm_idlelock_take(&file->master->lock); mutex_lock(&dev->struct_mutex); if (list_empty(&file_priv->obj_list)) { @@ -222,8 +226,7 @@ void via_reclaim_buffers_locked(struct drm_device *dev, return; } - if (dev->driver->dma_quiescent) - dev->driver->dma_quiescent(dev); + via_driver_dma_quiescent(dev); list_for_each_entry_safe(entry, next, &file_priv->obj_list, owner_list) { @@ -232,5 +235,9 @@ void via_reclaim_buffers_locked(struct drm_device *dev, kfree(entry); } mutex_unlock(&dev->struct_mutex); + + if (release_idlelock) + drm_idlelock_release(&file->master->lock); + return; } diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c index f390f5f..75ee411 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -1093,7 +1093,6 @@ static struct drm_driver driver = { .get_vblank_counter = vmw_get_vblank_counter, .enable_vblank = vmw_enable_vblank, .disable_vblank = vmw_disable_vblank, - .reclaim_buffers_locked = NULL, .ioctls = vmw_ioctls, .num_ioctls = DRM_ARRAY_SIZE(vmw_ioctls), .dma_quiescent = NULL, /*vmw_dma_quiescent, */ diff --git a/drivers/staging/gma500/psb_drv.c b/drivers/staging/gma500/psb_drv.c index 9581680..2d7afb3 100644 --- a/drivers/staging/gma500/psb_drv.c +++ b/drivers/staging/gma500/psb_drv.c @@ -1182,7 +1182,6 @@ static struct drm_driver driver = { .open = psb_driver_open, .preclose = psb_driver_preclose, .postclose = psb_driver_close, - .reclaim_buffers = drm_core_reclaim_buffers, .gem_init_object = psb_gem_init_object, .gem_free_object = psb_gem_free_object, diff --git a/include/drm/drmP.h b/include/drm/drmP.h index ecd5984..6abe15c 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -854,12 +854,6 @@ struct drm_driver { void (*irq_preinstall) (struct drm_device *dev); int (*irq_postinstall) (struct drm_device *dev); void (*irq_uninstall) (struct drm_device *dev); - void (*reclaim_buffers) (struct drm_device *dev, - struct drm_file * file_priv); - void (*reclaim_buffers_locked) (struct drm_device *dev, - struct drm_file *file_priv); - void (*reclaim_buffers_idlelocked) (struct drm_device *dev, - struct drm_file *file_priv); void (*set_version) (struct drm_device *dev, struct drm_set_version *sv); _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel