start_thread question...

2001-05-20 Thread Dave Airlie


I'm implementing start_thread for the VAX port and am wondering does
start_thread have to return to load_elf_binary? I'm working on the init
thread and what is happening is it is returning the whole way back to the
execve caller .. which I know shouldn't happen.

so I suppose what I'm looking for is the point where the user space code
gets control... is it when the registers are set in the start_thread? if
so how does start_thread return

On the VAX we have to call a return from interrupt to get to user space
and I'm trying to figure out where this should happen...

Dave.

-- 
David Airlie, Software Engineer
http://www.skynet.ie/~airlied / [EMAIL PROTECTED]
pam_smb / Linux DecStation / Linux VAX / ILUG person


-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: [LV] start_thread question...

2001-05-20 Thread Dave Airlie


Okay I think I've gotten it solved most of the way, we weren't calling
execve via the system call interface, so once I made it go via the system
call and I fill out pc, sp and psl registers in start_thread, it seems to
go further..

Thanks for all the help...

Dave.

On Sun, 20 May 2001, Kenn Humborg wrote:

 On Sun, May 20, 2001 at 05:24:48PM +0100, Dave Airlie wrote:
 
  I'm implementing start_thread for the VAX port and am wondering does
  start_thread have to return to load_elf_binary? I'm working on the init
  thread and what is happening is it is returning the whole way back to the
  execve caller .. which I know shouldn't happen.
 
  so I suppose what I'm looking for is the point where the user space code
  gets control... is it when the registers are set in the start_thread? if
  so how does start_thread return
 
  On the VAX we have to call a return from interrupt to get to user space
  and I'm trying to figure out where this should happen...

 I haven't got time to look at this in detail, but you could
 probably do it by frobbing the saved registers that will be
 restored by the ret_from_syscall in entry.S.  Do you have
 a pt_regs *regs function argument at the right point?  If
 so, it should point to these saved registers.

 Later,
 Kenn



-- 
David Airlie, Software Engineer
http://www.skynet.ie/~airlied / [EMAIL PROTECTED]
pam_smb / Linux DecStation / Linux VAX / ILUG person


-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Linux/VAX booting to a shell.

2001-06-16 Thread Dave Airlie


Hi all, (mind crossposts on follow ups..)

attached below is a bootlog from the Linux/VAX port, booting up, loading
up busybox/uClibc sh and cat /proc/cpuinfo, from my VAXStation 3100m38,

Thanks to the other two members of the core VAX porting team, Andy
Phillips and Kenn Humborg and others on the linux-vax list who've given
their help, this is the second major milestone for the project, (gcc
porting was the first) now to get it working on a few other systems and
move into userspace...

Regards,
Dave.

p.s. who said the Irish didn't hack kernels :-)

--
David Airlie, Software Engineer
http://www.skynet.ie/~airlied / [EMAIL PROTECTED]
pam_smb / Linux DecStation / Linux VAX / ILUG person


-ESA0
CPU type: KA42
Boot Head.S loaded at address 9600
rpb/bootr5/ap/sp    0348 8A00
relocated at phys address 001001B2
CPU type: 0A05 sidex: 04010102

Starting VM
Linux/VAX ([EMAIL PROTECTED])
IO mapped phys addr iomap_base 0x2008, 0x0001 pages at virt 0x80fe4000 (IOMAP PTE 
index 0x)
IO unmapping 0x0001 pages at PTE index 0x
IO mapped phys addr iomap_base 0x200a, 0x0001 pages at virt 0x80fe4000 (IOMAP PTE 
index 0x)
RPB info:  l_pfncnt: 7f1f, .l_vmb_version: 0a000400 .l_badpgs: 
Physical memory: 7f1f HW pagelets, 0fe3 pages  (16271KB)
CPU type: KA42, SID: 
calling start_kernel...
Linux version 2.4.2-20010307 (airlied@radon) (gcc version 2.95.2-linuxvax-20001231 
(release)) #622 Sat Jun 16 13:32:20 IST 2001
bootmap size = 0200
calling free_bootmem(start=0200, len=000ffe00)
calling free_bootmem(start=001f88b8, len=00dea748)
On node 0 totalpages: 4067
zone(0): 4067 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/nfs rw nfsroot=/tftpboot/vaxroot console=/dev/ttyS
Calibrating delay loop... 5.42 BogoMIPS
max low pfn is   FE3000
VMALLOC_START is 810e4000
vmallocmap_base is 8020FE18, sbr 801EE198, diff  10E4000
Memory: 15000k/16268k available
Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 1024 (order: 1, 8192 bytes)
POSIX conformance testing by UNIFIX
kernel_thread: calling thread function at 80100824
IO mapped phys addr iomap_base 0x2008, 0x0001 pages at virt 0x80fe5000 (IOMAP PTE 
index 0x0001)
vsbus: interrupt mask 0
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
kernel_thread: calling thread function at 8010d250
Starting kswapd v1.8
kernel_thread: calling thread function at 80118636
kernel_thread: calling thread function at 80120b00
kernel_thread: calling thread function at 80118790
kernel_thread: calling thread function at 80120c08
pty: 256 Unix98 ptys configured
block: queued sectors max/low 9685kB/3228kB, 64 slots per queue
Serial driver version 5.02 (2000-08-09) with no serial options enabled
DECstation DZ serial driver version 1.02
ttyS0 at 0x80fe4000 (irq = 176, 177)
ttyS1 at 0x80fe4000 (irq = 176, 177)
ttyS2 at 0x80fe4000 (irq = 176, 177)
ttyS3 at 0x80fe4000 (irq = 176, 177)
vaxlance.c: v0.008 by Linux Mips DECstation task force + [EMAIL PROTECTED]
IO mapped phys addr iomap_base 0x200e, 0x0001 pages at virt 0x80fe6000 (IOMAP PTE 
index 0x0002)
IO mapped phys addr iomap_base 0x2009, 0x0001 pages at virt 0x80fe7000 (IOMAP PTE 
index 0x0003)
Ethernet address in ROM: 08:00:2b:17:0a:7f
IO unmapping 0x0001 pages at PTE index 0x0003
Autoprobing LANCE interrupt vector... probed IRQ 148
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 512 bind 512)
Sending BOOTP requests OK
IP-Config: Got BOOTP answer from 192.168.2.15, my address is 192.168.2.55
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
Looking up port of RPC 13/2 on 192.168.2.15
Looking up port of RPC 15/2 on 192.168.2.15
kernel_thread: calling thread function at 80186ef8
VFS: Mounted root (nfs filesystem).
Freeing unused kernel memory: 28k freed
In CHRDEV_OPEN 5 1 80151fb6
dz opening line 3
page 80042d24, num 3964 ,pte_val A4C07BE0
k_platform is 76 61 78 00
u_platform is 76 61 78 00
starting thread14B10 7F80 80051F50


BusyBox v0.51 (2001.06.16-11:59+) Built-in shell (lash)
Enter 'help' for a list of built-in commands.

/ # mount -t proc none /proc
/ # cat /proc/cpuinfo
cpu : VAX
cpu type:
cpu sidex   : 0
page size   : 4096
BogoMIPS: 5.42
/ #



-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



[OOPS] 2.2.19 USB and Digianswer/Tektronix sniffer

2001-03-29 Thread Dave Airlie


when boot Linux 2.2.19 with a Digianswer Bluetooth Sniffer plugged into
the USB I get the following oops ... I know the device isn't supported but
I'd like to be able to leave it plugged in without oopsen between
Linux/Windows..

Regards,
Dave.

ksymoops 0.7c on i686 2.2.19.  Options used
 -V (default)
 -k /proc/ksyms (default)
 -l /proc/modules (default)
 -o /lib/modules/2.2.19/ (default)
 -m /usr/src/linux/System.map (default)

Warning: You did not tell me where to find symbol information.  I will
assume that the log matches the kernel and modules that are running
right now and I'll use the default options above for symbol resolution.
If the current kernel and/or modules do not match the log, you can get
more accurate output by telling me the kernel version and where to find
map, modules, ksyms etc.  ksymoops -h explains the options.

Unable to handle kernel NULL pointer dereference at virtual address 
current-tss.cr3 = 00101000, %cr3 = 00101000
*pde = 
Oops: 0002
CPU:0
EIP:0010:[c0120825]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010202
eax: 0039   ebx: c40fc080   ecx: c01a2c68   edx: cf422000
esi: c1f69120   edi: 0202   ebp:    esp: c6f95f1c
ds: 0018   es: 0018   ss: 0018
Process khubd (pid: 1646, process nr: 100, stackpage=c6f95000)
Stack:   c1f6915c c01bed26 d09695ea c1f69120 ce79c600 0010
     cf73d25c d0976b8d  ce79c600 d0968ad0 ce79c600
   ce79c600  d096993e ce79c600 ce79c600   0001
Call Trace: [d09695ea] [d0976b8d] [d0968ad0] [d096993e] [d096b659] 
[d096b719] [d09710e7]
   [d0970001] [d097253c] [d096b8bd] [d0968050] [c0107b8b] [d0968000]
Code: c7 05 00 00 00 00 00 00 00 00 eb 1b 8d 76 00 56 68 22 b0 18

EIP; c0120825 kfree+179/1a8   =
Trace; d09695ea [usbcore]usb_destroy_configuration+66/1a8
Trace; d0976b8d [usb-uhci]uhci_free_dev+29/30
Trace; d0968ad0 [usbcore]usb_free_dev+24/30
Trace; d096993e [usbcore]usb_disconnect+ea/f4
Trace; d096b659 [usbcore]usb_hub_port_connect_change+2f9/324
Trace; d096b719 [usbcore]usb_hub_events+95/1f0
Trace; d09710e7 [usbcore]usb_bandwidth_option+18a7/20b4
Trace; d0970001 [usbcore]usb_bandwidth_option+7c1/20b4
Trace; d097253c [usbcore]__ksymtab_usb_inc_dev_use+4/8
Trace; d096b8bd [usbcore]usb_hub_thread+49/6c
Trace; d0968050 [usbcore].text.start+4/8c
Trace; c0107b8b kernel_thread+23/30
Trace; d0968000 [serial].bss.end+778d/77d9
Code;  c0120825 kfree+179/1a8
 _EIP:
Code;  c0120825 kfree+179/1a8   =
   0:   c7 05 00 00 00 00 00  movl   $0x0,0x0   =
Code;  c012082c kfree+180/1a8
   7:   00 00 00
Code;  c012082f kfree+183/1a8
   a:   eb 1b jmp27 _EIP+0x27 c012084c kfree+1a0/1a8
Code;  c0120831 kfree+185/1a8
   c:   8d 76 00  lea0x0(%esi),%esi
Code;  c0120834 kfree+188/1a8
   f:   56push   %esi
Code;  c0120835 kfree+189/1a8
  10:   68 22 b0 18 00push   $0x18b022


1 warning issued.  Results may not be reliable.

-- 
David Airlie, Software Engineer
http://www.skynet.ie/~airlied / [EMAIL PROTECTED]
pam_smb / Linux DecStation / Linux VAX / ILUG person


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: [OOPS] 2.2.19 USB and Digianswer/Tektronix sniffer

2001-03-29 Thread Dave Airlie


And of course the olibgatory self-followup...

usb-uhci.c: USB UHCI at I/O 0x1080, IRQ 9
usb-uhci.c: Detected 2 ports
usb.c: new USB bus registered, assigned bus number 1
usb.c: USB new device connect, assigned device number 1
hub.c: USB hub found
hub.c: 2 ports detected
usb.c: USB new device connect, assigned device number 2
usb-uhci.c: interrupt, status 2, frame# 879
usb-uhci.c: interrupt, status 2, frame# 881
usb-uhci.c: interrupt, status 2, frame# 883
usb-uhci.c: interrupt, status 2, frame# 885
usb-uhci.c: interrupt, status 2, frame# 887
usb.c: couldn't get all of config descriptors
usb.c: unable to get configuration (error=-84)
usb.c: USB new device connect, assigned device number -1
usb.c: USB device not responding, giving up (error=-90)
usb.c: USB disconnect on device -1
kmem_free: Bad obj addr (objp=c1f69120, name=size-32)

forgot people might want to see this bit as well..

Dave.


On Thu, 29 Mar 2001, Dave Airlie wrote:


 when boot Linux 2.2.19 with a Digianswer Bluetooth Sniffer plugged into
 the USB I get the following oops ... I know the device isn't supported but
 I'd like to be able to leave it plugged in without oopsen between
 Linux/Windows..

 Regards,
   Dave.

 ksymoops 0.7c on i686 2.2.19.  Options used
  -V (default)
  -k /proc/ksyms (default)
  -l /proc/modules (default)
  -o /lib/modules/2.2.19/ (default)
  -m /usr/src/linux/System.map (default)

 Warning: You did not tell me where to find symbol information.  I will
 assume that the log matches the kernel and modules that are running
 right now and I'll use the default options above for symbol resolution.
 If the current kernel and/or modules do not match the log, you can get
 more accurate output by telling me the kernel version and where to find
 map, modules, ksyms etc.  ksymoops -h explains the options.

 Unable to handle kernel NULL pointer dereference at virtual address 
 current-tss.cr3 = 00101000, %cr3 = 00101000
 *pde = 
 Oops: 0002
 CPU:0
 EIP:0010:[c0120825]
 Using defaults from ksymoops -t elf32-i386 -a i386
 EFLAGS: 00010202
 eax: 0039   ebx: c40fc080   ecx: c01a2c68   edx: cf422000
 esi: c1f69120   edi: 0202   ebp:    esp: c6f95f1c
 ds: 0018   es: 0018   ss: 0018
 Process khubd (pid: 1646, process nr: 100, stackpage=c6f95000)
 Stack:   c1f6915c c01bed26 d09695ea c1f69120 ce79c600 0010
  cf73d25c d0976b8d  ce79c600 d0968ad0 ce79c600
ce79c600  d096993e ce79c600 ce79c600   0001
 Call Trace: [d09695ea] [d0976b8d] [d0968ad0] [d096993e] [d096b659] 
[d096b719] [d09710e7]
[d0970001] [d097253c] [d096b8bd] [d0968050] [c0107b8b] [d0968000]
 Code: c7 05 00 00 00 00 00 00 00 00 eb 1b 8d 76 00 56 68 22 b0 18

 EIP; c0120825 kfree+179/1a8   =
 Trace; d09695ea [usbcore]usb_destroy_configuration+66/1a8
 Trace; d0976b8d [usb-uhci]uhci_free_dev+29/30
 Trace; d0968ad0 [usbcore]usb_free_dev+24/30
 Trace; d096993e [usbcore]usb_disconnect+ea/f4
 Trace; d096b659 [usbcore]usb_hub_port_connect_change+2f9/324
 Trace; d096b719 [usbcore]usb_hub_events+95/1f0
 Trace; d09710e7 [usbcore]usb_bandwidth_option+18a7/20b4
 Trace; d0970001 [usbcore]usb_bandwidth_option+7c1/20b4
 Trace; d097253c [usbcore]__ksymtab_usb_inc_dev_use+4/8
 Trace; d096b8bd [usbcore]usb_hub_thread+49/6c
 Trace; d0968050 [usbcore].text.start+4/8c
 Trace; c0107b8b kernel_thread+23/30
 Trace; d0968000 [serial].bss.end+778d/77d9
 Code;  c0120825 kfree+179/1a8
  _EIP:
 Code;  c0120825 kfree+179/1a8   =
0:   c7 05 00 00 00 00 00  movl   $0x0,0x0   =
 Code;  c012082c kfree+180/1a8
7:   00 00 00
 Code;  c012082f kfree+183/1a8
a:   eb 1b jmp27 _EIP+0x27 c012084c kfree+1a0/1a8
 Code;  c0120831 kfree+185/1a8
c:   8d 76 00  lea0x0(%esi),%esi
 Code;  c0120834 kfree+188/1a8
f:   56push   %esi
 Code;  c0120835 kfree+189/1a8
   10:   68 22 b0 18 00push   $0x18b022


 1 warning issued.  Results may not be reliable.



-- 
David Airlie, Software Engineer
http://www.skynet.ie/~airlied / [EMAIL PROTECTED]
pam_smb / Linux DecStation / Linux VAX / ILUG person


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



RE: skb allocation problems (More Brain damage!)

2001-04-11 Thread Dave Airlie


What compiler are you using to compile the kernel?

Dave.

On Wed, 11 Apr 2001 [EMAIL PROTECTED] wrote:

  Well, I don't know then. You have to debug it. It's probably
  something stupid
  (if fundamental services like alloc_skb/kfree_skb were
  completely buggy
  someone surely would have noticed earlier)

 yep, at first i thought it was because of sume stupidity in my module...but
 now it seems that actually it is not my code which is doing something
 stupidjust now i have found out that even simple ping faces similar
 problems here is the output that i get when i ping from the host
 192.168.102.29 (runs 2.4.1) to 192.168.102.22 (runs 2.4.3) (Note:I don't
 insert any kernel modules of my own on these machines):


 PING 192.168.102.22 (192.168.102.22) from 192.168.102.29 : 100(128) bytes of
 data.
 108 bytes from hobbes.sr.ntc.nokia.com (192.168.102.22): icmp_seq=0 ttl=255
 time=36.5 ms
 wrong data byte #36 should be 0x24 but was 0x45
   19 45 d4 3a e 7a a 0 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19
 1a 1b 1c 1d 1e 1f
   20 21 22 23 45 0 0 80 0 0 40 0 ff 1 2d f8 c0 a8 66 16 c0 a8 66 1d 0
 0 0 0 4 c 0 0
   19 45 d4 3a e 7a a 0 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19
 1a 1b

 --- 192.168.102.22 ping statistics ---
 1 packets transmitted, 1 packets received, 0% packet loss
 round-trip min/avg/max = 36.5/36.5/36.5 ms


 Note that the problem starts with byte #36 which goes on like " 45 0 0 80 0
 ..." which is in fact the outer IP header!! So certainly there are
 buffer overruns on the other end (host 192.168.102.22)

 And as a I said earlier, only ping packets with size within certain range
 create this problem..Something is terribly wrong here!! But as I am not
 a Linux mm guru, i can't tell what is wrong here!


 regards,
 imran



-- 
David Airlie, Software Engineer
http://www.skynet.ie/~airlied / [EMAIL PROTECTED]
pam_smb / Linux DecStation / Linux VAX / ILUG person


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: 2.6.20-mm2

2007-02-17 Thread Dave Airlie

- git-drm.patch is still in disgrace



Okay I think I've fixed it up, some of the locking code from the DRM
git devel repo was completely integrated..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 0/6] fault vs truncate/invalidate race fix

2007-03-18 Thread Dave Airlie

 the new fault hander made the memory manager code a lot cleaner and
 very less hacky in a lot of cases. so I'd rather merge the clean code
 than have to fight with the current code...

Note that you can probably get away with NOPFN_REFAULT etc... like I did
for the SPEs in the meantime.


Indeed, Thomas has done this work and I'm just lining up a TTM tree to
start the merge process..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/7] DRM: correct PCI domain setting for ALPHA

2007-04-11 Thread Dave Airlie

NAK

I already have this queued in the DRM git tree.. Ivan, Jay can you
check an -mm kernel contains it? it'll go in the next merge window..

Dave.

On 4/11/07, Ivan Kokshaysky [EMAIL PROTECTED] wrote:

Files:

drivers/char/drm/drmP.h

The PCI domain is the hose's index, not the hose's root bus number.
Note that this code only applies to ALPHA.


Signed-off-by: Jay Estabrook [EMAIL PROTECTED]
Signed-off-by: Ivan Kokshaysky [EMAIL PROTECTED]

---

diff -Naurp a/drivers/char/drm/drmP.h b/drivers/char/drm/drmP.h
--- a/drivers/char/drm/drmP.h   2007-04-02 13:03:24.0 -0400
+++ b/drivers/char/drm/drmP.h   2007-04-02 13:49:38.0 -0400
@@ -764,7 +764,7 @@ static __inline__ int drm_core_check_fea
 }

 #ifdef __alpha__
-#define drm_get_pci_domain(dev) dev-hose-bus-number
+#define drm_get_pci_domain(dev) dev-hose-index
 #else
 #define drm_get_pci_domain(dev) 0
 #endif
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Video GL rendering worked only between 2.6.20 and 2.6.21-rc1

2007-02-24 Thread Dave Airlie

The machine is a Centrino laptop with an i810 card. So I guess those are
the responsible files:

drivers/char/drm/i810_*.c
drivers/video/i810/*


drivers/char/agp/i810*
and
drivers/char/drm/i915*

are most likely.. but it could be anything in the DRM or AGP subdirs..
perhaps two X.org logs showing the difference..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 0/6] fault vs truncate/invalidate race fix

2007-02-26 Thread Dave Airlie


I've also got rid of the horrible populate API, and integrated nonlinear pages
properly with the page fault path.

Downside is that this adds one more vector through which the buffered write
deadlock can occur. However this is just a very tiny one (pte being unmapped
for reclaim), compared to all the other ways that deadlock can occur (unmap,
reclaim, truncate, invalidate). I doubt it will be noticable. At any rate, it
is better than data corruption.

I hope these can get merged (at least into -mm) soon.


Have these been put into mm? can I expect them in the next -mm so I
can start merging up the drm memory manager code to my -mm tree..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 0/6] fault vs truncate/invalidate race fix

2007-02-26 Thread Dave Airlie

On 2/27/07, Andrew Morton [EMAIL PROTECTED] wrote:

 On Tue, 27 Feb 2007 15:36:03 +1100 Dave Airlie [EMAIL PROTECTED] wrote:
 
  I've also got rid of the horrible populate API, and integrated nonlinear 
pages
  properly with the page fault path.
 
  Downside is that this adds one more vector through which the buffered write
  deadlock can occur. However this is just a very tiny one (pte being unmapped
  for reclaim), compared to all the other ways that deadlock can occur (unmap,
  reclaim, truncate, invalidate). I doubt it will be noticable. At any rate, 
it
  is better than data corruption.
 
  I hope these can get merged (at least into -mm) soon.

 Have these been put into mm?

Not yet - I need to get back on the correct continent, review the code,
stuff like that.  It still hurts that this work makes the write() deadlock
harder to hit, and we haven't worked out how to fix that.

 can I expect them in the next -mm so I
 can start merging up the drm memory manager code to my -mm tree..

What is the linkage between these patches and DRM?



the new fault hander made the memory manager code a lot cleaner and
very less hacky in a lot of cases. so I'd rather merge the clean code
than have to fight with the current code...

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


drm + 4GB RAM + swiotlb = drm craps out

2007-04-01 Thread Dave Airlie

Okay I've got a bug reported before and now again about  4GB + radeon
blows up the DRM... on Intel hw...

What the drm currently does for the PCI GART table is it allocates a
chunk of memory (8MB) with vmalloc_32(), then when it decides to use
it it goes through every page of it calls pci_map_single() (with
PCI_DMA_TODEVICE, which is probably wrong...) with every page from the
vmalloc mapping and puts the bus addresses of the pages into the PCI
GART table on the GPU.

So when swiotlb happens, as you can guess it all falls apart as the
drm never calls sync functions at any stage...

The main problem is the ring buffer and scratch write back, these
values are read/write from both the CPU and GPU quite a lot, so this
leads me to think I should really just be using dma_alloc_coherent for
the whole lot, however this is an 8MB mapping and possibly could be
getting larger in the future and dynamic as we do dynamic PCIEGART
support for the radeons...

So I suppose I'm asking for ideas on the correct way to do this, and
perhaps any quick way to patch up the problem I'm seeing now by making
swiotlb not get involved 

Regards,
Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: drm + 4GB RAM + swiotlb = drm craps out

2007-04-01 Thread Dave Airlie


 So when swiotlb happens, as you can guess it all falls apart as the
 drm never calls sync functions at any stage...

You would have hit this on any platform that does caching
in the PCI controller as well.


We must not have a great intersect of radeon and such systems..



Coherent memory was created for precisely the case where the cpu
and the device frequently access the memory.

8MB is indeed a lot for the kind of allocation that the coherent
DMA implementation uses.

Does it really have to be all in one big 8MB chunk?  I doubt it.
Perhaps you can therefore create multiple DMA pools instead?  See
include/linux/dmapool.h


It currently is required to be in a big 8MB chunk as it gets chopped
up by the X server not the kernel, so kernel needs to allocate pages
to back it when X inits, yes this is ugly, no it can't be fixed
without time-travelling and fixing deployed X servers...

Really we probably only need the ring buffer to be in coherent memory,
the rest of the stuff is used for DMA buffers which are mainly filled
by the CPU and read by the GPU. However I cannot change this without
breaking X, the solution is really to use TTM for this sort of
stuff I'm a bit worried as the AGP driver now uses vmalloc_32
which really is a meaningless interface on 64-bit systems..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: drm + 4GB RAM + swiotlb = drm craps out

2007-04-01 Thread Dave Airlie

It might explain why my machine hung when I tried to use
radeon with DRM on my sparc64 workstation :-)  I have
investigating that on my todo list.


True, maybe the intersection is me + hw like that + radeon :-)


I don't know what to recommend to you, getting 8MB of linear memory
really just isn't practical.


This is the thing it doesn't need to be linear, I have a GART onboard
the radeon that I can fill in, I just need internally in the kernel to
access it linearly and in userspace to map it linearly, but it doesn't
need to be physcially linear, vmalloc_32 + map_single should in theory
be possible if.. see below...



Perhaps we'll have to create something ugly like vmalloc_nobounce().

Remind me again why you're ending up with swiotlb'd pages?
vmalloc_32() uses GFP_KERNEL which should use entirely lowmem and thus
RAM below 4GB and not anything which should need bounce buffering.


On a 64-bit machine GFP_KERNEL can give me any memory... it all works
fine on 32-bit highmem kernel as I don't get highmem... I really need
__GFP_DMA32 memory but we don't have a generic allocator that gives
this out that I can see..


Are you expecting to be able to virtually remap these pages in
PCI space as one huge 8MB chunk too and that's how swiotlb gets
involved?  That won't work, sorry...


Well I feed the bus address for each page into a GART table in the GPU
and it does the linear stuff internally in the GPU memory
controller...

I suppose I want __GFP_I_D_RATHER_DIE_THAN_BOUNCE.

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: drm + 4GB RAM + swiotlb = drm craps out

2007-04-01 Thread Dave Airlie


 On a 64-bit machine GFP_KERNEL can give me any memory... it all works
 fine on 32-bit highmem kernel as I don't get highmem... I really need
 __GFP_DMA32 memory but we don't have a generic allocator that gives
 this out that I can see..

__get_free_pages(..., __GFP_DMA32) on 64bit or __GFP_KERNEL or i386
(only gives you ~900MB)


Doesn't __get_free_pages give me physically linear memory, which while
nice it isn't essential for what I need, so if I can't get my full
allocation I could in theory just start to fallback down the orders
and calling it multiple times to actually get the amount of memory I
need, this just seems overly cumbersome when what I really want is
vmalloc_32 to just work correctly on 64-bit systems... (why doesn't
vmalloc_32 pass __GFP_DMA32 to the allocator)


Not sure what you mean? __alloc_pages never bounces by itself.
The nearest you can get is __GFP_DMA/__GFP_DMA32, but these have
their own 16MB/4GB zones and don't use the swiotlb pools. And of course it
only gives you plain memory, but doesn't remap or copy anything.


Yes I want __GFP_DMA32 but I'd like it with vmalloc not with
__get_free_pages and I've no great need for physically linear page
allocations and as I'm after quite a large order I can see this
failing ... granted with a 4GB system maybe not that quickly..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: drm + 4GB RAM + swiotlb = drm craps out

2007-04-02 Thread Dave Airlie


 need, this just seems overly cumbersome when what I really want is
 vmalloc_32 to just work correctly on 64-bit systems... (why doesn't
 vmalloc_32 pass __GFP_DMA32 to the allocator)

It probably should, but see second part of sentence above.

And please never put closed lists in cc of l-k posts. Evil cc dropped.


Ah okay I'll just do an allocator based on single pages and see if I
can fix the kernel side to have the sg knowledge

btw Its not a closed list, it's is a moderated list, all the posts do
get through to it and the people on it are probably interested...

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Replacement for page fault notifiers?

2008-01-08 Thread Dave Airlie
On Jan 9, 2008 6:32 AM, Christoph Hellwig [EMAIL PROTECTED] wrote:
 On Tue, Jan 08, 2008 at 09:06:38PM +0200, Pekka Paalanen wrote:
  - Is there anything coming to replace register_page_fault_notifier()?

 no.

  - Has someone found another way to accomplish the same without patching
  the kernel?

 no.

  - Should I start writing a patch to bring back the notifiers, based on
  the commit that removed them?

 no.

  People started to complain to me that mmio-trace does not compile for
  2.6.24. At least the Nouveau project is a regular user of mmio-trace
  for reverse-engineering, and the tool should be easy to use. Therefore
  I would prefer not to force casual contributors to patch their kernels
  as it might be too much for some. I am hoping that 2.6.25, if not
  2.6.24, would contain a mechanism to accomplish what I need.

 Please make mmio tracing generic enough so it works for every device and
 submit it for inclusion as a config option.


Christoph,

it is generic code, it works by patching the module you load and is in
no way nvidia specific, I think we should revert your chance
as the notifiers have a valid user and one it has been planned to upstream..

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 1/3] drm: nopage

2008-01-08 Thread Dave Airlie
 Well they're all gone.. ;)
 
 There is a nopfn method which I converted in a subsequent patch I sent you.
 Maybe that's what you mean?
 

Ah thats what it was, we added a nopfn not a nopage..

Thanks,

Dave.

 Thanks,
 Nick
  
  Dave.
  
   
   Anyway, please apply.
   
   --
   
   drm: nopage
   
   Convert drm from nopage to fault.
   Remove redundant vma range checks.
   
   Signed-off-by: Nick Piggin [EMAIL PROTECTED]
   Cc: [EMAIL PROTECTED]
   Cc: linux-kernel@vger.kernel.org
   ---
 
 
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 1/3] drm: nopage

2008-01-08 Thread Dave Airlie


 Dave, this patch is against 2.6.24-rc6-mm1. You said git-drm had rewritten 
 this area,
 but the patch didn't have any rejects and seems to run fine here (although 
 I'm not
 exactly sure how to exercise drm too well).

Hi Nick,

there should be a new nopage method added though which you need to 
convert..

Dave.

 
 Anyway, please apply.
 
 --
 
 drm: nopage
 
 Convert drm from nopage to fault.
 Remove redundant vma range checks.
 
 Signed-off-by: Nick Piggin [EMAIL PROTECTED]
 Cc: [EMAIL PROTECTED]
 Cc: linux-kernel@vger.kernel.org
 ---
  drivers/char/drm/drm_vm.c |  131 
 +-
  1 file changed, 61 insertions(+), 70 deletions(-)
 
 Index: linux-2.6/drivers/char/drm/drm_vm.c
 ===
 --- linux-2.6.orig/drivers/char/drm/drm_vm.c
 +++ linux-2.6/drivers/char/drm/drm_vm.c
 @@ -70,7 +70,7 @@ static pgprot_t drm_io_prot(uint32_t map
  }
  
  /**
 - * \c nopage method for AGP virtual memory.
 + * \c fault method for AGP virtual memory.
   *
   * \param vma virtual memory area.
   * \param address access address.
 @@ -80,8 +80,8 @@ static pgprot_t drm_io_prot(uint32_t map
   * map, get the page, increment the use count and return it.
   */
  #if __OS_HAS_AGP
 -static __inline__ struct page *drm_do_vm_nopage(struct vm_area_struct *vma,
 - unsigned long address)
 +static __inline__ int drm_do_vm_fault(struct vm_area_struct *vma,
 + struct vm_fault *vmf)
  {
   struct drm_file *priv = vma-vm_file-private_data;
   struct drm_device *dev = priv-head-dev;
 @@ -93,19 +93,24 @@ static __inline__ struct page *drm_do_vm
* Find the right map
*/
   if (!drm_core_has_AGP(dev))
 - goto vm_nopage_error;
 + goto vm_fault_error;
  
   if (!dev-agp || !dev-agp-cant_use_aperture)
 - goto vm_nopage_error;
 + goto vm_fault_error;
  
   if (drm_ht_find_item(dev-map_hash, vma-vm_pgoff, hash))
 - goto vm_nopage_error;
 + goto vm_fault_error;
  
   r_list = drm_hash_entry(hash, struct drm_map_list, hash);
   map = r_list-map;
  
   if (map  map-type == _DRM_AGP) {
 - unsigned long offset = address - vma-vm_start;
 + /*
 +  * Using vm_pgoff as a selector forces us to use this unusual
 +  * addressing scheme.
 +  */
 + unsigned long offset = (unsigned long)vmf-virtual_address -
 + vma-vm_start;
   unsigned long baddr = map-offset + offset;
   struct drm_agp_mem *agpmem;
   struct page *page;
 @@ -127,7 +132,7 @@ static __inline__ struct page *drm_do_vm
   }
  
   if (!agpmem)
 - goto vm_nopage_error;
 + goto vm_fault_error;
  
   /*
* Get the page, inc the use count, and return it
 @@ -135,27 +140,28 @@ static __inline__ struct page *drm_do_vm
   offset = (baddr - agpmem-bound)  PAGE_SHIFT;
   page = virt_to_page(__va(agpmem-memory-memory[offset]));
   get_page(page);
 + vmf-page = page;
  
   DRM_DEBUG
   (baddr = 0x%lx page = 0x%p, offset = 0x%lx, count=%d\n,
baddr, __va(agpmem-memory-memory[offset]), offset,
page_count(page));
  
 - return page;
 + return 0;
   }
 -  vm_nopage_error:
 - return NOPAGE_SIGBUS;   /* Disallow mremap */
 +  vm_fault_error:
 + return VM_FAULT_SIGBUS; /* Disallow mremap */
  }
  #else/* __OS_HAS_AGP */
 -static __inline__ struct page *drm_do_vm_nopage(struct vm_area_struct *vma,
 - unsigned long address)
 +static __inline__ int drm_do_vm_fault(struct vm_area_struct *vma,
 + struct vm_fault *vmf)
  {
 - return NOPAGE_SIGBUS;
 + return VM_FAULT_SIGBUS;
  }
  #endif   /* __OS_HAS_AGP */
  
  /**
 - * \c nopage method for shared virtual memory.
 + * \c fault method for shared virtual memory.
   *
   * \param vma virtual memory area.
   * \param address access address.
 @@ -164,28 +170,27 @@ static __inline__ struct page *drm_do_vm
   * Get the mapping, find the real physical page to map, get the page, and
   * return it.
   */
 -static __inline__ struct page *drm_do_vm_shm_nopage(struct vm_area_struct 
 *vma,
 - unsigned long address)
 +static __inline__ int drm_do_vm_shm_fault(struct vm_area_struct *vma,
 + struct vm_fault *vmf)
  {
   struct drm_map *map = (struct drm_map *) vma-vm_private_data;
   unsigned long offset;
   unsigned 

[PATCH] Revert x86: optimize page faults like all other achitectures and kill notifier cruft

2008-01-08 Thread Dave Airlie

[This an initial RFC but I'd like to have this patch in before 2.6.24 goes 
final as it really breaks this useful feature]

mmiotrace the MMIO access tracer used to reverse engineer binary blobs
used this notifier interface and is planned on being pushed upstream.

Having users able to just use the tracer module without having to rebuild 
their kernel to add in a page fault handler hack means we get a lot 
greater coverage for reverse engineering efforts.

Signed-off-by: David Airlie [EMAIL PROTECTED]

This reverts commit 74a0b5762713a26496db72eac34fbbed46f20fce.
Conflicts:

include/asm-avr32/kprobes.h
include/asm-ia64/kprobes.h
include/asm-s390/kprobes.h
include/asm-x86/kdebug_32.h
include/asm-x86/kdebug_64.h
include/asm-x86/kprobes_64.h
---
 arch/x86/kernel/kprobes_32.c  |3 +-
 arch/x86/kernel/kprobes_64.c  |1 +
 arch/x86/mm/fault_32.c|   43 ++-
 arch/x86/mm/fault_64.c|   44 +++-
 include/asm-avr32/kdebug.h|   16 ++
 include/asm-avr32/kprobes.h   |1 +
 include/asm-ia64/kdebug.h |   15 ++
 include/asm-ia64/kprobes.h|1 +
 include/asm-powerpc/kdebug.h  |   19 +
 include/asm-powerpc/kprobes.h |1 +
 include/asm-s390/kdebug.h |   15 ++
 include/asm-s390/kprobes.h|1 +
 include/asm-sh/kdebug.h   |2 +
 include/asm-sparc64/kdebug.h  |   18 
 include/asm-sparc64/kprobes.h |1 +
 include/asm-x86/kdebug.h  |3 ++
 include/asm-x86/kprobes_32.h  |2 +-
 include/asm-x86/kprobes_64.h  |1 +
 kernel/kprobes.c  |   39 +--
 19 files changed, 183 insertions(+), 43 deletions(-)

diff --git a/arch/x86/kernel/kprobes_32.c b/arch/x86/kernel/kprobes_32.c
index 3a020f7..1ba8fee 100644
--- a/arch/x86/kernel/kprobes_32.c
+++ b/arch/x86/kernel/kprobes_32.c
@@ -586,7 +586,7 @@ out:
return 1;
 }
 
-int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr)
+static int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr)
 {
struct kprobe *cur = kprobe_running();
struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
@@ -668,6 +668,7 @@ int __kprobes kprobe_exceptions_notify(struct 
notifier_block *self,
ret = NOTIFY_STOP;
break;
case DIE_GPF:
+   case DIE_PAGE_FAULT:
/* kprobe_running() needs smp_processor_id() */
preempt_disable();
if (kprobe_running() 
diff --git a/arch/x86/kernel/kprobes_64.c b/arch/x86/kernel/kprobes_64.c
index 5df19a9..279cea7 100644
--- a/arch/x86/kernel/kprobes_64.c
+++ b/arch/x86/kernel/kprobes_64.c
@@ -654,6 +654,7 @@ int __kprobes kprobe_exceptions_notify(struct 
notifier_block *self,
ret = NOTIFY_STOP;
break;
case DIE_GPF:
+   case DIE_PAGE_FAULT:
/* kprobe_running() needs smp_processor_id() */
preempt_disable();
if (kprobe_running() 
diff --git a/arch/x86/mm/fault_32.c b/arch/x86/mm/fault_32.c
index a2273d4..f03cc93 100644
--- a/arch/x86/mm/fault_32.c
+++ b/arch/x86/mm/fault_32.c
@@ -25,7 +25,6 @@
 #include linux/kprobes.h
 #include linux/uaccess.h
 #include linux/kdebug.h
-#include linux/kprobes.h
 
 #include asm/system.h
 #include asm/desc.h
@@ -33,27 +32,33 @@
 
 extern void die(const char *,struct pt_regs *,long);
 
-#ifdef CONFIG_KPROBES
-static inline int notify_page_fault(struct pt_regs *regs)
+static ATOMIC_NOTIFIER_HEAD(notify_page_fault_chain);
+
+int register_page_fault_notifier(struct notifier_block *nb)
 {
-   int ret = 0;
-
-   /* kprobe_running() needs smp_processor_id() */
-   if (!user_mode_vm(regs)) {
-   preempt_disable();
-   if (kprobe_running()  kprobe_fault_handler(regs, 14))
-   ret = 1;
-   preempt_enable();
-   }
+   vmalloc_sync_all();
+   return atomic_notifier_chain_register(notify_page_fault_chain, nb);
+}
+EXPORT_SYMBOL_GPL(register_page_fault_notifier);
 
-   return ret;
+int unregister_page_fault_notifier(struct notifier_block *nb)
+{
+   return atomic_notifier_chain_unregister(notify_page_fault_chain, nb);
 }
-#else
-static inline int notify_page_fault(struct pt_regs *regs)
+EXPORT_SYMBOL_GPL(unregister_page_fault_notifier);
+
+static inline int notify_page_fault(struct pt_regs *regs, long err)
 {
-   return 0;
+   struct die_args args = {
+   .regs = regs,
+   .str = page fault,
+   .err = err,
+   .trapnr = 14,
+   .signr = SIGSEGV
+   };
+   return atomic_notifier_call_chain(notify_page_fault_chain,
+ DIE_PAGE_FAULT, args);
 }
-#endif
 
 /*
  * Return EIP plus the CS segment base.  The segment limit is also
@@ -331,7 +336,7 

Re: [patch 1/1] Convert drivers in drivers/char/drm to use .unlocked_ioctl

2008-01-08 Thread Dave Airlie

 The drm drivers in this patch all used drm_ioctl to perform their
 ioctl calls.  The common function is converted to use lock_kernel()
 and unlock_kernel() and the drivers are converted to use .unlocked_ioctl
 

NAK

I've started looking at this already in the drm git tree, I'm going to 
provide both locked and unlocked paths for drivers to choose, as we need 
to audit the drivers on a per-driver basis, the other option is to provide 
wrappers in each driver to do the lock/unlock kernel and leave drm_ioctl 
alone..

I'll take a look kmalloc failure case sounds like a bug though..

Dave.

 Signed-off-by: Kevin Winchester [EMAIL PROTECTED]
 
 ---
 
 I also noted that in the failed kmalloc case in drm_ioctl(), the function
 immediately returns -ENOMEM, rather than following the error path that
 calls atomic_dec(dev-ioctl_count);.  I'm not sure if the ioctl_count
 is just not important in the -ENOMEM case, or if this is a bug.
 
  drivers/char/drm/drmP.h   |3 +--
  drivers/char/drm/drm_drv.c|   10 ++
  drivers/char/drm/i810_dma.c   |2 +-
  drivers/char/drm/i810_drv.c   |2 +-
  drivers/char/drm/i830_dma.c   |2 +-
  drivers/char/drm/i830_drv.c   |2 +-
  drivers/char/drm/i915_drv.c   |2 +-
  drivers/char/drm/mga_drv.c|2 +-
  drivers/char/drm/r128_drv.c   |2 +-
  drivers/char/drm/radeon_drv.c |2 +-
  drivers/char/drm/savage_drv.c |2 +-
  drivers/char/drm/sis_drv.c|2 +-
  drivers/char/drm/tdfx_drv.c   |2 +-
  drivers/char/drm/via_drv.c|2 +-
  14 files changed, 19 insertions(+), 18 deletions(-)
 
 Index: v2.6.24-rc7/drivers/char/drm/drmP.h
 ===
 --- v2.6.24-rc7.orig/drivers/char/drm/drmP.h
 +++ v2.6.24-rc7/drivers/char/drm/drmP.h
 @@ -833,8 +833,7 @@ static inline int drm_mtrr_del(int handl
   /* Driver support (drm_drv.h) */
  extern int drm_init(struct drm_driver *driver);
  extern void drm_exit(struct drm_driver *driver);
 -extern int drm_ioctl(struct inode *inode, struct file *filp,
 -  unsigned int cmd, unsigned long arg);
 +extern long drm_ioctl(struct file *filp, unsigned int cmd, unsigned long 
 arg);
  extern long drm_compat_ioctl(struct file *filp,
unsigned int cmd, unsigned long arg);
  extern int drm_lastclose(struct drm_device *dev);
 Index: v2.6.24-rc7/drivers/char/drm/drm_drv.c
 ===
 --- v2.6.24-rc7.orig/drivers/char/drm/drm_drv.c
 +++ v2.6.24-rc7/drivers/char/drm/drm_drv.c
 @@ -438,7 +438,6 @@ static int drm_version(struct drm_device
  /**
   * Called whenever a process performs an ioctl on /dev/drm.
   *
 - * \param inode device inode.
   * \param file_priv DRM file private.
   * \param cmd command.
   * \param arg user argument.
 @@ -447,8 +446,7 @@ static int drm_version(struct drm_device
   * Looks up the ioctl function in the ::ioctls table, checking for root
   * previleges if so required, and dispatches to the respective function.
   */
 -int drm_ioctl(struct inode *inode, struct file *filp,
 -   unsigned int cmd, unsigned long arg)
 +long drm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
  {
   struct drm_file *file_priv = filp-private_data;
   struct drm_device *dev = file_priv-head-dev;
 @@ -458,6 +456,7 @@ int drm_ioctl(struct inode *inode, struc
   int retcode = -EINVAL;
   char *kdata = NULL;
  
 + lock_kernel();
   atomic_inc(dev-ioctl_count);
   atomic_inc(dev-counts[_DRM_STAT_IOCTLS]);
   ++file_priv-ioctl_count;
 @@ -494,8 +493,10 @@ int drm_ioctl(struct inode *inode, struc
   } else {
   if (cmd  (IOC_IN | IOC_OUT)) {
   kdata = kmalloc(_IOC_SIZE(cmd), GFP_KERNEL);
 - if (!kdata)
 + if (!kdata) {
 + unlock_kernel();
   return -ENOMEM;
 + }
   }
  
   if (cmd  IOC_IN) {
 @@ -520,6 +521,7 @@ int drm_ioctl(struct inode *inode, struc
   atomic_dec(dev-ioctl_count);
   if (retcode)
   DRM_DEBUG(ret = %x\n, retcode);
 + unlock_kernel();
   return retcode;
  }
  
 Index: v2.6.24-rc7/drivers/char/drm/i810_dma.c
 ===
 --- v2.6.24-rc7.orig/drivers/char/drm/i810_dma.c
 +++ v2.6.24-rc7/drivers/char/drm/i810_dma.c
 @@ -115,7 +115,7 @@ static int i810_mmap_buffers(struct file
  static const struct file_operations i810_buffer_fops = {
   .open = drm_open,
   .release = drm_release,
 - .ioctl = drm_ioctl,
 + .unlocked_ioctl = drm_ioctl,
   .mmap = i810_mmap_buffers,
   .fasync = drm_fasync,
  };
 Index: v2.6.24-rc7/drivers/char/drm/i810_drv.c
 ===
 --- v2.6.24-rc7.orig/drivers/char/drm/i810_drv.c
 +++ 

Re: [PATCH] Revert x86: optimize page faults like all other achitectures and kill notifier cruft

2008-01-08 Thread Dave Airlie

 
 An alternative might be to come up with something decent and target 2.6.24.x

I don't see mmiotrace getting merged into a stable kernel... how do 
however see it getting cleaned up for 2.6.25 now that people know how 
fragile the kernel hooks for it are..

 We put the crappy code back in for 2.6.24 then take it out immediately
 after 2.6.24 and put something else in to support mmiotrace and perhaps the
 other new mystery features to which you refer below.  hm.

(I think the other mystery feature is actually a Novell kernel debugger 
but I'm not sure, madwifi use it for similiar reasons to mmiotrace I 
think..)

 all that crap
 }
   
   
   But that's all speculation.  Has anyone actually measured the pagefault
   latency impact of this change?

Message-Id: [EMAIL PROTECTED]
Subject: [patch 20/38] Minor fault path optimization.
Date:   Fri, 27 Apr 2007 16:05:23 +0200

was a patch to do exactly that.. hch decided the feature wasn't useful and 
posted a patch to remove it..

 
 That change has been in the mainline tree for nearly three months.  All
 these affected parties have left it until the eve of 2.6.24 to actually
 tell us about it.  This is causing me sympathy problems :(
 

Jan first complained on the 4th Decemeber last year, I'm just posting this 
now because Linus said send him a patch to revert regressions rather than 
just complain, I've prepared the patch to put back the old behaviour from 
2.6.23. This was only brought to my notice this morning but I'm not going 
to let that stop me from trying to find a correct fix rather than just 
ripping the feature out..

I think we could apply the page fault cleanup patch I mentioned earlier on 
top of this patch and get back the 300 cycles and that would make people 
happy, it makes sense for mmiotrace to use kprobes hooks and not have to 
do this stuff directly but if that is what is wanted the mmiotrace guys 
can do it directly in the future.

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 1/1] Convert drivers in drivers/char/drm to use .unlocked_ioctl

2008-01-08 Thread Dave Airlie

 On Wed, Jan 09, 2008 at 03:37:50AM +, Dave Airlie wrote:
  
   The drm drivers in this patch all used drm_ioctl to perform their
   ioctl calls.  The common function is converted to use lock_kernel()
   and unlock_kernel() and the drivers are converted to use .unlocked_ioctl
   
  
  NAK
 
 Did you actually read Kevin's patch? 


Kevin's patch adds the lock/unlock to drm_ioctl which is exactly what I 
don't want, I want to have drm_ioctl become drm_unlocked_ioctl, and 
drm_ioctl to wrap it with the lock/unlocks, then the drivers can all
use unlocked_ioctl like Kevins patch pointing to drm_ioctl, and can 
migrate over to drm_unlocked_ioctl post lock auditing, the new latest i915 
driver seems to be fine with unlocked ioctls so far..

Yes I can use Kevin's patch as a base most likely, but it doesn't do what 
I want yet, and I've already started to do it properly in the drm upstream 
trees

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: CPA patchset

2008-01-10 Thread Dave Airlie

 finally managed to get the time to review your CPA patchset, and i
 fundamentally agree with most of the detail changes done in it. But here
 are a few structural high-level observations:

 - firstly, there's no rationale given. So we'll change ioremap()/etc.
   from doing a cflush-range instruction instead of a WBINVD. But why?
   WBINVD isnt particular fast (takes a few msecs), but why is that a
   problem? Drivers dont do high-frequency ioremap-ing. It's typically
   only done at driver/device startup and that's it. Whether module load
   time takes 1254 msecs instead of 1250 msecs is no big deal.

read graphics drivers, even though I think we may avoid the whole path
if we can and end up doing some of this in the drivers
when they know more about the situation so can avoid safeties..

but I still see this being used in AGP a fair bit at some point on
some drivers..

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: CPA patchset

2008-01-10 Thread Dave Airlie
On Jan 10, 2008 7:55 PM, Andi Kleen [EMAIL PROTECTED] wrote:
 On Thu, Jan 10, 2008 at 07:44:03PM +1000, Dave Airlie wrote:
  
   finally managed to get the time to review your CPA patchset, and i
   fundamentally agree with most of the detail changes done in it. But here
   are a few structural high-level observations:
  
   - firstly, there's no rationale given. So we'll change ioremap()/etc.
 from doing a cflush-range instruction instead of a WBINVD. But why?
 WBINVD isnt particular fast (takes a few msecs), but why is that a
 problem? Drivers dont do high-frequency ioremap-ing. It's typically
 only done at driver/device startup and that's it. Whether module load
 time takes 1254 msecs instead of 1250 msecs is no big deal.
 
  read graphics drivers, even though I think we may avoid the whole path

 You mean avoid change_page_attr() ?

yes in some cases...


  if we can and end up doing some of this in the drivers
  when they know more about the situation so can avoid safeties..

 Please explain, but it sounds very dubious.

So on Intel 9xx hardware we know how to flush the whole pipe from chip
to chipset to RAM, so when in the Intel
 driver we can leave pages mapped cached, and just flush all stages
before having the GPU access them,

This is only possible as long as we know all the parts involved, for
example on AMD we have problems with that
over-eager prefetching so for drivers on AMD chipsets we have to do
something else more than likely using change_page_attr.


 Well GARTs and those are widely used even without AGP busses.

Yes mainly we have used this scheme with Intel GARTs (also the only
driver we have done with the new GPU system) by working closely with
Intel engineers..

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: X-freeze after clflush changes [Was: 2.6.23-rc6-mm1]

2007-09-19 Thread Dave Airlie
On 9/20/07, Andi Kleen [EMAIL PROTECTED] wrote:
 On Wed, Sep 19, 2007 at 12:10:17PM -0700, Andrew Morton wrote:
  On Wed, 19 Sep 2007 16:59:04 +0200 Jiri Slaby [EMAIL PROTECTED] wrote:
 
   -8-8-8-8-8-8
   That means
   void agp_generic_destroy_page(void *addr)
   {
   struct page *page;
  
   if (addr == NULL)
   return;
  
   page = virt_to_page(addr);
   (1) unmap_page_from_agp(page);
   put_page(page);
   (2) free_page((unsigned long)addr);
   atomic_dec(agp_bridge-current_memory_agp);
   }
  
   (1) unmap_page_from_agp - change_page_attr - change_page_attr_addr -
   __change_page_attr - save_page - list_add(fpage-lru, deferred_pages);
   (2) free_page - free_pages - __free_pages - free_hot_page -
   free_hot_cold_page - list_add(page-lru, pcp-list);
 
  that'll hurt.
 
   any ideas how to fix this?
 
  We should hold a single reference on the page for its membership in
  deferred_pages.

 The code is broken anyways. If you free pages without flushing
 them first some other innocent user allocating them will end up
 with possible uncached pages for some time.

 Does this simple patch help?

 -Andi


 Flush uncached AGP pages before freeing

In theory this should be handled by the caller, so as to avoid the
overhead of continuous flushing however I can see a potential race
condition here if the pages are put back into the kernel before the
caller flushes the mappings..

Do we need some sort of two step approach here? as flushing after each
page would be a major overhead for dynamic agp stuff in the new memory
manager..

Dave.


 Signed-off-by: Andi Kleen [EMAIL PROTECTED]

 Index: linux/drivers/char/agp/generic.c
 ===
 --- linux.orig/drivers/char/agp/generic.c
 +++ linux/drivers/char/agp/generic.c
 @@ -1185,6 +1185,7 @@ void agp_generic_destroy_page(void *addr

 page = virt_to_page(addr);
 unmap_page_from_agp(page);
 +   flush_agp_mappings();
 put_page(page);
 free_page((unsigned long)addr);
 atomic_dec(agp_bridge-current_memory_agp);
 -
 To unsubscribe from this list: send the line unsubscribe linux-kernel in
 the body of a message to [EMAIL PROTECTED]
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 Please read the FAQ at  http://www.tux.org/lkml/

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: X-freeze after clflush changes [Was: 2.6.23-rc6-mm1]

2007-09-19 Thread Dave Airlie
 The code is broken anyways. If you free pages without flushing
 them first some other innocent user allocating them will end up
 with possible uncached pages for some time.

 Does this simple patch help?


I've attached a more complicated patch that does a 2 stage effort to
unmapping and freeing pages. My kernel no longer hangs with this
patch...

Jiri can you confirm?

I'll look at the other issue separately..

Dave.
From 225696d75e7ec0bafbb47b935bd700e3fbeefbde Mon Sep 17 00:00:00 2001
From: Dave Airlie [EMAIL PROTECTED]
Date: Thu, 20 Sep 2007 11:30:41 +1000
Subject: [PATCH] agp: fix race condition between unmapping and freeing pages

With Andi's clflush fixup, we were getting hangs on server exit, flushing
the mappings after freeing each page helped.

This showed up a race condition where the pages after being freed could be
reused before the agp mappings had been flushed. Flushing after each single
page is a bad thing for future drm work, so make the page destroy a two pass
unmapping all the pages, flushing the mappings, and then destroying the pages.

Signed-off-by: Dave Airlie [EMAIL PROTECTED]
---
 drivers/char/agp/agp.h   |7 +--
 drivers/char/agp/ali-agp.c   |   29 +
 drivers/char/agp/backend.c   |   12 
 drivers/char/agp/generic.c   |   20 ++--
 drivers/char/agp/i460-agp.c  |4 ++--
 drivers/char/agp/intel-agp.c |6 --
 6 files changed, 50 insertions(+), 28 deletions(-)

diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h
index 8955e7f..b83824c 100644
--- a/drivers/char/agp/agp.h
+++ b/drivers/char/agp/agp.h
@@ -58,6 +58,9 @@ struct gatt_mask {
 	 * devices this will probably be ignored */
 };
 
+#define AGP_PAGE_DESTROY_UNMAP 1
+#define AGP_PAGE_DESTROY_FREE 2
+
 struct aper_size_info_8 {
 	int size;
 	int num_entries;
@@ -113,7 +116,7 @@ struct agp_bridge_driver {
 	struct agp_memory *(*alloc_by_type) (size_t, int);
 	void (*free_by_type)(struct agp_memory *);
 	void *(*agp_alloc_page)(struct agp_bridge_data *);
-	void (*agp_destroy_page)(void *);
+	void (*agp_destroy_page)(void *, int flags);
 int (*agp_type_to_mask_type) (struct agp_bridge_data *, int);
 };
 
@@ -267,7 +270,7 @@ int agp_generic_remove_memory(struct agp_memory *mem, off_t pg_start, int type);
 struct agp_memory *agp_generic_alloc_by_type(size_t page_count, int type);
 void agp_generic_free_by_type(struct agp_memory *curr);
 void *agp_generic_alloc_page(struct agp_bridge_data *bridge);
-void agp_generic_destroy_page(void *addr);
+void agp_generic_destroy_page(void *addr, int flags);
 void agp_free_key(int key);
 int agp_num_entries(void);
 u32 agp_collect_device_status(struct agp_bridge_data *bridge, u32 mode, u32 command);
diff --git a/drivers/char/agp/ali-agp.c b/drivers/char/agp/ali-agp.c
index 4941ddb..2b65155 100644
--- a/drivers/char/agp/ali-agp.c
+++ b/drivers/char/agp/ali-agp.c
@@ -156,29 +156,34 @@ static void *m1541_alloc_page(struct agp_bridge_data *bridge)
 	return addr;
 }
 
-static void ali_destroy_page(void * addr)
+static void ali_destroy_page(void * addr, int flags)
 {
 	if (addr) {
-		global_cache_flush();	/* is this really needed?  --hch */
-		agp_generic_destroy_page(addr);
-		global_flush_tlb();
+		if (flags  AGP_PAGE_DESTROY_UNMAP) {
+			global_cache_flush();	/* is this really needed?  --hch */
+			agp_generic_destroy_page(addr, flags);
+			global_flush_tlb();
+		} else
+			agp_generic_destroy_page(addr, flags);
 	}
 }
 
-static void m1541_destroy_page(void * addr)
+static void m1541_destroy_page(void * addr, int flags)
 {
 	u32 temp;
 
 	if (addr == NULL)
 		return;
 
-	global_cache_flush();
-
-	pci_read_config_dword(agp_bridge-dev, ALI_CACHE_FLUSH_CTRL, temp);
-	pci_write_config_dword(agp_bridge-dev, ALI_CACHE_FLUSH_CTRL,
-			(((temp  ALI_CACHE_FLUSH_ADDR_MASK) |
-			  virt_to_gart(addr)) | ALI_CACHE_FLUSH_EN));
-	agp_generic_destroy_page(addr);
+	if (flags  AGP_PAGE_DESTROY_UNMAP) {
+		global_cache_flush();
+	  
+		pci_read_config_dword(agp_bridge-dev, ALI_CACHE_FLUSH_CTRL, temp);
+		pci_write_config_dword(agp_bridge-dev, ALI_CACHE_FLUSH_CTRL,
+   (((temp  ALI_CACHE_FLUSH_ADDR_MASK) |
+	 virt_to_gart(addr)) | ALI_CACHE_FLUSH_EN));
+	}
+	agp_generic_destroy_page(addr, flags);
 }
 
 
diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c
index 1b47c89..832ded2 100644
--- a/drivers/char/agp/backend.c
+++ b/drivers/char/agp/backend.c
@@ -189,9 +189,11 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge)
 
 err_out:
 	if (bridge-driver-needs_scratch_page) {
-		bridge-driver-agp_destroy_page(
-gart_to_virt(bridge-scratch_page_real));
+		bridge-driver-agp_destroy_page(gart_to_virt(bridge-scratch_page_real),
+		 AGP_PAGE_DESTROY_UNMAP);
 		flush_agp_mappings();
+		bridge-driver-agp_destroy_page(gart_to_virt(bridge-scratch_page_real),
+		 AGP_PAGE_DESTROY_FREE);
 	}
 	if (got_gatt)
 		bridge-driver-free_gatt_table(bridge);
@@ -215,9 +217,11 @@ static void

Re: X-freeze after clflush changes [Was: 2.6.23-rc6-mm1]

2007-09-19 Thread Dave Airlie
On 9/20/07, Jiri Slaby [EMAIL PROTECTED] wrote:
 On 09/19/2007 09:54 PM, Andi Kleen wrote:
  Yeah. (But X doesn't run -- this is maybe the known issue in this release).
 
  What do you mean with not run?

 (II) intel(0): Initializing HW Cursor
 (II) intel(0): xf86BindGARTMemory: bind key 0 at 0x005ff000 (pgoffset 1535)
 (WW) intel(0): xf86BindGARTMemory: binding of gart memory with key 0
 at offset 0x5ff000 failed (Invalid argument)

 Fatal server error:
 Couldn't bind memory for front buffer

 I thought I'd seen a thread about this issue, but I can't find it now. Is it
 known or am I seeing ghosts yet, Andrew?


Can you send me a complete Xorg log file?

and lspci -vv?

my 945 works fine with my drm tree on top of Linus with clflush + my
agp fix I just sent out ..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: X-freeze after clflush changes [Was: 2.6.23-rc6-mm1]

2007-09-20 Thread Dave Airlie
  Fatal server error:
  Couldn't bind memory for front buffer
 
  I thought I'd seen a thread about this issue, but I can't find it now. Is 
  it
  known or am I seeing ghosts yet, Andrew?
 
 
  Can you send me a complete Xorg log file?

 Maybe you are rather interested in these dmesg lines:
 Linux agpgart interface v0.102
 agpgart: suspend/resume problematic: resume with 3D/DRI active may lockup 
 X.Org
 on some chipset/BIOS combos (see DEBUG_AGP_PM in intel-agp.c)
 agpgart: Detected an Intel G33 Chipset.
 agpgart: Detected 8192K stolen memory.
 agpgart: AGP aperture is 256M @ 0xd000
 [drm] Initialized drm 1.1.0 20060810
 ACPI: PCI Interrupt :00:02.0[A] - GSI 16 (level, low) - IRQ 16
 [drm] Initialized i915 1.6.0 20060119 on minor 0
 ...
 set status page addr 0x00033000
 agpgart: pg_start == 0x05ff,intel_private.gtt_entries == 0x0800
 agpgart: Trying to insert into local/stolen memory

 So the problem is, that X passes too low start.

 The X log:
 http://www.fi.muni.cz/~xslaby/sklad/Xorg.0.log.old


I've cc'd Zhenyu who might be able to shed some light on this? can you
try 2.6.23-rc7 as maybe the G33 support still needs some work.. or
maybe I'm missing a patch in the drm..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Prospects of DRM TTM making it into 2.6.24?

2007-11-19 Thread Dave Airlie

 What are the prospects of the DRM TTM changes making it into 2.6.24? I 
 noticed that Andrew has them [1] in his mm tree... any chance of that 
 getting pushed into Linus' tree for 2.6.24?
 

No the merge window for 2.6.24 closed a few weeks ago. TTM wasn't in -mm 
for the 2.6.23 cycle as we hadn't finished the API stabilisation work in 
time. So I don't expect we'll see it before 2.6.25.

I also have a few AGP changes I need to line up to support the chipset 
flushing work I've done to support TTM properly..

Dave.

On Mon, 19 Nov 2007, Bastian, Waldo wrote:

 Cheers,
 Waldo
 
 [1] http://userweb.kernel.org/~akpm/mmotm/broken-out/git-drm.patch 
 
 Intel Corporation - Platform Software Engineering, UMG - Hillsboro, Oregon
 
 -
 This SF.net email is sponsored by: Microsoft
 Defy all challenges. Microsoft(R) Visual Studio 2005.
 http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
 --
 ___
 Dri-devel mailing list
 [EMAIL PROTECTED]
 https://lists.sourceforge.net/lists/listinfo/dri-devel
 
 

Re: [patch 03/18] drm: nopage

2007-12-05 Thread Dave Airlie

 Convert drm from nopage to fault.
 Remove redundant vma range checks.

Hi Nick,

can you rebase against the -mm tree? or are you pushing this for before 
then? if so can you supply me a patch against -mm?

The drm git tree has a new VM user for the memory manager..

Dave.

 
 Signed-off-by: Nick Piggin [EMAIL PROTECTED]
 Cc: [EMAIL PROTECTED]
 Cc: linux-kernel@vger.kernel.org
 ---
  drivers/char/drm/drm_vm.c |  131 
 +-
  1 file changed, 61 insertions(+), 70 deletions(-)
 
 Index: linux-2.6/drivers/char/drm/drm_vm.c
 ===
 --- linux-2.6.orig/drivers/char/drm/drm_vm.c
 +++ linux-2.6/drivers/char/drm/drm_vm.c
 @@ -66,7 +66,7 @@ static pgprot_t drm_io_prot(uint32_t map
  }
  
  /**
 - * \c nopage method for AGP virtual memory.
 + * \c fault method for AGP virtual memory.
   *
   * \param vma virtual memory area.
   * \param address access address.
 @@ -76,8 +76,8 @@ static pgprot_t drm_io_prot(uint32_t map
   * map, get the page, increment the use count and return it.
   */
  #if __OS_HAS_AGP
 -static __inline__ struct page *drm_do_vm_nopage(struct vm_area_struct *vma,
 - unsigned long address)
 +static __inline__ int drm_do_vm_fault(struct vm_area_struct *vma,
 + struct vm_fault *vmf)
  {
   struct drm_file *priv = vma-vm_file-private_data;
   struct drm_device *dev = priv-head-dev;
 @@ -89,19 +89,24 @@ static __inline__ struct page *drm_do_vm
* Find the right map
*/
   if (!drm_core_has_AGP(dev))
 - goto vm_nopage_error;
 + goto vm_fault_error;
  
   if (!dev-agp || !dev-agp-cant_use_aperture)
 - goto vm_nopage_error;
 + goto vm_fault_error;
  
   if (drm_ht_find_item(dev-map_hash, vma-vm_pgoff, hash))
 - goto vm_nopage_error;
 + goto vm_fault_error;
  
   r_list = drm_hash_entry(hash, struct drm_map_list, hash);
   map = r_list-map;
  
   if (map  map-type == _DRM_AGP) {
 - unsigned long offset = address - vma-vm_start;
 + /*
 +  * Using vm_pgoff as a selector forces us to use this unusual
 +  * addressing scheme.
 +  */
 + unsigned long offset = (unsigned long)vmf-virtual_address -
 + vma-vm_start;
   unsigned long baddr = map-offset + offset;
   struct drm_agp_mem *agpmem;
   struct page *page;
 @@ -123,7 +128,7 @@ static __inline__ struct page *drm_do_vm
   }
  
   if (!agpmem)
 - goto vm_nopage_error;
 + goto vm_fault_error;
  
   /*
* Get the page, inc the use count, and return it
 @@ -131,27 +136,28 @@ static __inline__ struct page *drm_do_vm
   offset = (baddr - agpmem-bound)  PAGE_SHIFT;
   page = virt_to_page(__va(agpmem-memory-memory[offset]));
   get_page(page);
 + vmf-page = page;
  
   DRM_DEBUG
   (baddr = 0x%lx page = 0x%p, offset = 0x%lx, count=%d\n,
baddr, __va(agpmem-memory-memory[offset]), offset,
page_count(page));
  
 - return page;
 + return 0;
   }
 -  vm_nopage_error:
 - return NOPAGE_SIGBUS;   /* Disallow mremap */
 +  vm_fault_error:
 + return VM_FAULT_SIGBUS; /* Disallow mremap */
  }
  #else/* __OS_HAS_AGP */
 -static __inline__ struct page *drm_do_vm_nopage(struct vm_area_struct *vma,
 - unsigned long address)
 +static __inline__ int drm_do_vm_fault(struct vm_area_struct *vma,
 + struct vm_fault *vmf)
  {
 - return NOPAGE_SIGBUS;
 + return VM_FAULT_SIGBUS;
  }
  #endif   /* __OS_HAS_AGP */
  
  /**
 - * \c nopage method for shared virtual memory.
 + * \c fault method for shared virtual memory.
   *
   * \param vma virtual memory area.
   * \param address access address.
 @@ -160,28 +166,27 @@ static __inline__ struct page *drm_do_vm
   * Get the mapping, find the real physical page to map, get the page, and
   * return it.
   */
 -static __inline__ struct page *drm_do_vm_shm_nopage(struct vm_area_struct 
 *vma,
 - unsigned long address)
 +static __inline__ int drm_do_vm_shm_fault(struct vm_area_struct *vma,
 + struct vm_fault *vmf)
  {
   struct drm_map *map = (struct drm_map *) vma-vm_private_data;
   unsigned long offset;
   unsigned long i;
   struct page *page;
  
 - if (address  vma-vm_end)
 - return NOPAGE_SIGBUS;   /* Disallow mremap */
   if (!map)
 - 

Re: Prospects of DRM TTM making it into 2.6.24?

2007-11-20 Thread Dave Airlie
 
  I also have a few AGP changes I need to line up to support the chipset
  flushing work I've done to support TTM properly..
 

 Did anything happen with that null-pointer deref I was hitting?


I've rebased the patches in my tree along with a chunk I missed which
should make your patch unnecessary.

Do you pull my agp-mm tree into -mm?

ssh://master.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6 agp-mm
if not..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC PATCH 00/12] PAT 64b: PAT support for X86_64

2007-12-13 Thread Dave Airlie

 Yes. It is that wonderful time of the year again.
 No, no. We are not talking about holiday season or new year here.
 
 We are talking about one another rehash of why we do not support PAT in x86
 question and series of patches that implement some PAT support before going
 into hibernation again. Only difference is that we hope to take this little
 further this time and may be really get this support into
 upstream kernel soon.

Woot, PAT support: this time we mean it!!

I'll just give one comment after a reading your todo..

 * Do we need to allow RAM pages to be mapped as WC? If not, then
   we don't need to follow the TLB flush mechanism (make pte not present,
   flush, and set pte with new mapping) mentioned in section 10.12.4 of SDM
   Vol3a.

Yes, the main use for GPUs is to have RAM pages mapped WC, and placed into 
a GART on the GPU side, currently for Intel IGD we are okay as the CPU can 
access the GPU GART aperture, but other chips exist where this isn't 
possible, I think poulsbo and possible some of the AMD IGPs..

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC PATCH 00/12] PAT 64b: PAT support for X86_64

2007-12-14 Thread Dave Airlie
On Dec 15, 2007 8:00 AM, Siddha, Suresh B [EMAIL PROTECTED] wrote:
 On Fri, Dec 14, 2007 at 12:28:25AM +, Dave Airlie wrote:
  Yes, the main use for GPUs is to have RAM pages mapped WC, and placed into
  a GART on the GPU side, currently for Intel IGD we are okay as the CPU can
  access the GPU GART aperture, but other chips exist where this isn't
  possible, I think poulsbo and possible some of the AMD IGPs..

 Ok. So how is it working today on these platforms with no PAT support.
 Open source drivers use UC or WB on these platforms? As this RAM is not
 contiguous, one can't use MTRRs to set WC. Right?

 Well, if WC is needed for RAM, then we have to address it too.


It doesn't work really, which is mostly the problem :)

We mostly use UC on these pages, or WB within cache coherent domains.
mtrrs are totally useless in this situation.

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC PATCH 00/12] PAT 64b: PAT support for X86_64

2007-12-14 Thread Dave Airlie
  It doesn't work really, which is mostly the problem :)
 
  We mostly use UC on these pages, or WB within cache coherent domains.
  mtrrs are totally useless in this situation.
 

 In what sense does it not work?

oh I was mostly joking hence the smily.. really it just means thing
run slower than they need to..

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[RFC] AGP initial support for chipset flushing..

2007-10-29 Thread Dave Airlie

Hi,

We've uncovered a need when using the new memory manager to flush the 
chipset global write buffers on certain intel chipset due to a lack of 
coherency..

The attached patches add a new AGP interface  for this purpose and 
implements this in the Intel AGP driver. This stuff is based of some 
guesswork in the 915 case from comments in the documentation :).

Unfortuantely the 965 BIOS doesn't set this stuff up properly and it 
doesn't use a standard BAR address, so I have to do it by hand, I'd 
appreciate any commentary particularly in the setting up of the resource 
stuff.

Regards,
Dave.From b9dcf514d0f1f61dc482cac622ffd2d79d500bf8 Mon Sep 17 00:00:00 2001
From: Dave Airlie [EMAIL PROTECTED]
Date: Mon, 29 Oct 2007 15:14:03 +1000
Subject: [PATCH] agp: add chipset flushing support to AGP interface

This bumps the AGP interface to 0.103.

Certain Intel chipsets contains a global write buffer, and this can require
flushing from the drm or X.org to make sure all data has hit RAM before
initiating a GPU transfer, due to a lack of coherency with the integrated
graphics device and this buffer.

This just adds generic support to the AGP interfaces, a follow-on patch
will add support to the Intel driver to use this interface.

Signed-off-by: Dave Airlie [EMAIL PROTECTED]
---
 drivers/char/agp/agp.h  |3 ++-
 drivers/char/agp/backend.c  |2 +-
 drivers/char/agp/compat_ioctl.c |4 
 drivers/char/agp/compat_ioctl.h |2 ++
 drivers/char/agp/frontend.c |   11 +++
 drivers/char/agp/generic.c  |7 +++
 include/linux/agp_backend.h |1 +
 include/linux/agpgart.h |1 +
 8 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h
index b83824c..9ec9374 100644
--- a/drivers/char/agp/agp.h
+++ b/drivers/char/agp/agp.h
@@ -117,7 +117,8 @@ struct agp_bridge_driver {
 	void (*free_by_type)(struct agp_memory *);
 	void *(*agp_alloc_page)(struct agp_bridge_data *);
 	void (*agp_destroy_page)(void *, int flags);
-int (*agp_type_to_mask_type) (struct agp_bridge_data *, int);
+	int (*agp_type_to_mask_type) (struct agp_bridge_data *, int);
+	void (*chipset_flush)(struct agp_bridge_data *);
 };
 
 struct agp_bridge_data {
diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c
index 832ded2..f9c180c 100644
--- a/drivers/char/agp/backend.c
+++ b/drivers/char/agp/backend.c
@@ -43,7 +43,7 @@
  * fix some real stupidity. It's only by chance we can bump
  * past 0.99 at all due to some boolean logic error. */
 #define AGPGART_VERSION_MAJOR 0
-#define AGPGART_VERSION_MINOR 102
+#define AGPGART_VERSION_MINOR 103
 static const struct agp_version agp_current_version =
 {
 	.major = AGPGART_VERSION_MAJOR,
diff --git a/drivers/char/agp/compat_ioctl.c b/drivers/char/agp/compat_ioctl.c
index ecd4248..3927579 100644
--- a/drivers/char/agp/compat_ioctl.c
+++ b/drivers/char/agp/compat_ioctl.c
@@ -273,6 +273,10 @@ long compat_agp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 	case AGPIOC_UNBIND32:
 		ret_val = compat_agpioc_unbind_wrap(curr_priv, (void __user *) arg);
 		break;
+
+	case AGPIOC_CHIPSET_FLUSH32:
+		ret_val = agpioc_chipset_flush_wrap(curr_priv);
+		break;
 	}
 
 ioctl_out:
diff --git a/drivers/char/agp/compat_ioctl.h b/drivers/char/agp/compat_ioctl.h
index 71939d6..0c9678a 100644
--- a/drivers/char/agp/compat_ioctl.h
+++ b/drivers/char/agp/compat_ioctl.h
@@ -39,6 +39,7 @@
 #define AGPIOC_DEALLOCATE32 _IOW (AGPIOC_BASE, 7, compat_int_t)
 #define AGPIOC_BIND32   _IOW (AGPIOC_BASE, 8, compat_uptr_t)
 #define AGPIOC_UNBIND32 _IOW (AGPIOC_BASE, 9, compat_uptr_t)
+#define AGPIOC_CHIPSET_FLUSH32 _IO (AGPIOC_BASE, 10)
 
 struct agp_info32 {
 	struct agp_version version;	/* version of the driver*/
@@ -101,5 +102,6 @@ void agp_free_memory_wrap(struct agp_memory *memory);
 struct agp_memory *agp_allocate_memory_wrap(size_t pg_count, u32 type);
 struct agp_memory *agp_find_mem_by_key(int key);
 struct agp_client *agp_find_client_by_pid(pid_t id);
+int agpioc_chipset_flush_wrap(struct agp_file_private *priv);
 
 #endif /* _AGP_COMPAT_H */
diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c
index 7791e98..9bd5a95 100644
--- a/drivers/char/agp/frontend.c
+++ b/drivers/char/agp/frontend.c
@@ -960,6 +960,13 @@ static int agpioc_unbind_wrap(struct agp_file_private *priv, void __user *arg)
 	return agp_unbind_memory(memory);
 }
 
+int agpioc_chipset_flush_wrap(struct agp_file_private *priv)
+{
+	DBG();
+	agp_flush_chipset(agp_bridge);
+	return 0;
+}
+
 static int agp_ioctl(struct inode *inode, struct file *file,
 		 unsigned int cmd, unsigned long arg)
 {
@@ -1033,6 +1040,10 @@ static int agp_ioctl(struct inode *inode, struct file *file,
 	case AGPIOC_UNBIND:
 		ret_val = agpioc_unbind_wrap(curr_priv, (void __user *) arg);
 		break;
+	   
+	case AGPIOC_CHIPSET_FLUSH:
+		ret_val = agpioc_chipset_flush_wrap(curr_priv);
+		break;
 	}
 
 ioctl_out:
diff

Re: [RFC] AGP initial support for chipset flushing..

2007-10-29 Thread Dave Airlie

 
 In this case, we're performing basically a dma_sync*(...DMA_TO_DEVICE) 
 right?  Can we be sure that a single flush is sufficient?  Is there any 
 window between when we flush and when we start accessing memory with 
 the device that we could get into more caching trouble?

Not that I can think off, but I don't work for the company who screwed up 
the coherency :-), and I don't have the docs, so please investigate for me 
;-)

 Looks reasonable, I'm not sure we can do much better.  The only concern 
 I have is that allocating some more PCI space like that may end up 
 clobbering some *other* hidden BIOS mapping, but there's not a whole 
 lot we can do about that.

Again I'm trying to workaround broken BIOS.. nothing I can do.

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Interaction between Xen and XFS: stray RW mappings

2007-10-21 Thread Dave Airlie
On 10/15/07, Andi Kleen [EMAIL PROTECTED] wrote:
  Hmm, OK. It looks like DRM vmallocs memory (which gives highmem).

 I meant I'm not sure if it uses that memory uncached. I admit
 not quite understanding that code. There used to be at least
 one place where it set UC for an user mapping though.

Currently the only DRM memory handed to userspace is vmalloc_32 in drm_scatter.c

I notice the VIA driver does its own vmalloc for dmablit, so it may
have an issue with this if highmem is involved.

This will change with the upcoming memory manager so I'll need to
investigate it a bit perhaps...

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: drm i915 hangs on heavy io load

2012-10-29 Thread Dave Airlie
On Tue, Oct 30, 2012 at 10:49 AM, Norbert Preining prein...@logic.at wrote:
 On Mo, 29 Okt 2012, Tino Keitel wrote:
 Section Device
 Option AccelMethod SNA
 Identifier  Card0
 Driver  intel
 EndSection

 Thanks, running now with SNA. Let us see what happens.

Please don't, we ain't going to find the bug any quicker changing
variables, if the only thing that changed on your system was the
kernel then we need to figure out which kernel changes caused it and
remove them. Changing userspace is only complicating things and making
it less likely we'll ever find the regressions. Once we find the
regression, changing userspace optiosn to help understand it is more
reasonable.

How long does it take you to reproduce, and does it happen when in
actual use. On my laptop I've noticed I come back to it sometimes and
gnome-shell is dead. This never happened pre 3.7-rc's. But for me its
a 3-4 day window so far for it to die, which makes bisecting it a bit
of a major problem. and I'm just finished bisecting the last Ironlake
regression that took over a month.

I would suggest starting a bisect on drivers/gpu/drm/i915 from 3.6
final to 3.7-rc1 or maybe -rc2.

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] drm nouveau fixes

2012-10-30 Thread Dave Airlie

Hi Linus,

just a nouveau set, since we have a couple of reports on lkml/dri-devel of 
regressions that this should fix I sent it along on its own.

Dave.

The following changes since commit 8f0d8163b50e01f398b14bcd4dc039ac5ab18d64:

  Linux 3.7-rc3 (2012-10-28 12:24:48 -0700)

are available in the git repository at:
  git://people.freedesktop.org/~airlied/linux drm-fixes

Ben Skeggs (6):
  drm/nouveau: silence modesetting spam on pre-gf8 chipsets
  drm/nouveau/i2c: fix typo when checking nvio i2c port validity
  drm/nouveau: allow creation of zero-sized mm
  drm/nv50/fb: prevent oops on chipsets without compression tags
  drm/nouveau: resurrect headless mode since rework
  drm/nouveau: headless mode by default if pci class != vga display

Dave Airlie (1):
  Merge branch 'drm-nouveau-fixes' of 
git://people.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes

 drivers/gpu/drm/nouveau/core/core/mm.c |9 --
 drivers/gpu/drm/nouveau/core/include/core/mm.h |1 -
 drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c  |   10 ++
 drivers/gpu/drm/nouveau/core/subdev/i2c/base.c |2 +-
 drivers/gpu/drm/nouveau/nouveau_display.c  |   36 ++--
 drivers/gpu/drm/nouveau/nouveau_drm.c  |   36 ++--
 drivers/gpu/drm/nouveau/nouveau_drm.h  |2 +
 drivers/gpu/drm/nouveau/nouveau_irq.c  |   16 ++
 drivers/gpu/drm/nouveau/nv04_dac.c |   16 +-
 drivers/gpu/drm/nouveau/nv04_dfp.c |   14 
 drivers/gpu/drm/nouveau/nv04_tv.c  |9 ++---
 11 files changed, 83 insertions(+), 68 deletions(-)
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] drm fixes

2012-09-27 Thread Dave Airlie

Hi Linus

the three nouveau fixes quiten unneeded dmesg spam that people are 
seeing and pondering, 
the udl fix stops it from trying to driver monitors that are too big, 
where we get a black screen.
and vmware memory alloc problem.

Dave.

The following changes since commit 6f0f9b6b3fcfe5e156f20d4f804f0d505c750b3c:

  Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net (2012-09-25 
14:20:29 -0700)

are available in the git repository at:


  git://people.freedesktop.org/~airlied/linux drm-fixes

for you to fetch changes up to d638163099c86f65984d85aab7ddf2cf78fa3a16:

  Merge branch 'drm-nouveau-fixes' of 
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes (2012-09-27 
17:58:53 +1000)



Ben Skeggs (3):
  drm/nouveau: silence a debug message triggered by newer userspace
  drm/nvc0/ltcg: mask off intr 0x10
  drm/nvc0/fifo: ignore bits in PFIFO_INTR that aren't set in PFIFO_INTR_EN

Dan Carpenter (1):
  vmwgfx: corruption in vmw_event_fence_action_create()

Dave Airlie (3):
  Merge branch 'drm-nouveau-fixes' of 
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes
  drm/udl: limit modes to the sku pixel limits.
  Merge branch 'drm-nouveau-fixes' of 
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes

 drivers/gpu/drm/nouveau/nouveau_abi16.c | 2 +-
 drivers/gpu/drm/nouveau/nvc0_fb.c   | 1 +
 drivers/gpu/drm/nouveau/nvc0_fifo.c | 3 ++-
 drivers/gpu/drm/nouveau/nve0_fifo.c | 3 ++-
 drivers/gpu/drm/udl/udl_connector.c | 7 +++
 drivers/gpu/drm/vmwgfx/vmwgfx_fence.c   | 2 +-
 6 files changed, 14 insertions(+), 4 deletions(-)
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 3.5 regression on i915

2012-10-05 Thread Dave Airlie
On Sat, Oct 6, 2012 at 9:42 AM, Willy Tarreau w...@1wt.eu wrote:
 Chris, Daniel,

 since version 3.5, my Asus EeePC 1005HA bugs during startx. I didn't
 have the time to investigate until this evening.

 I could bisect the commits and found that the following one was merged
 in 3.5-rc1 and is responsible for these bugs that can reliably be
 triggered :

   1b50247a8ddde4af5aaa0e6bc125615372ce6c16 is the first bad commit
   commit 1b50247a8ddde4af5aaa0e6bc125615372ce6c16
   Author: Chris Wilson ch...@chris-wilson.co.uk
   Date:   Tue Apr 24 15:47:30 2012 +0100

 drm/i915: Remove the list of pinned inactive objects

 Simplify object tracking by removing the inactive but pinned list. The
 only place where this was used is for counting the available memory,
 which is just as easy performed by checking all objects on the rare
 occasions it is required (application startup). For ease of debugging,
 we keep the reporting of pinned objects through the error-state and
 debugfs.

 Signed-off-by: Chris Wilson ch...@chris-wilson.co.uk
 Signed-off-by: Daniel Vetter daniel.vet...@ffwll.ch

 I tried to revert it from 3.5.6-rc1 but it does not revert cleanly at all
 and I'm totall unfamiliar with this code to attempt anything sane at this
 time of the night.

 The crash happens here in i915_gem_entervt_ioctl() :

 3659  BUG_ON(!list_empty(dev_priv-mm.active_list));
 3660  BUG_ON(!list_empty(dev_priv-mm.flushing_list));
  - 3661  BUG_ON(!list_empty(dev_priv-mm.inactive_list));
 3662  mutex_unlock(dev-struct_mutex);

 More info in the trace below :

 [ cut here ]
 kernel BUG at drivers/gpu/drm/i915/i915_gem.c:3661!
 invalid opcode:  [#1] SMP
 Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq 
 snd_seq_device snd_pcm_oss snd_mixer_oss uvcvideo videobuf2_core videodev 
 videobuf2_vmalloc videobuf2_memops uhci_hcd ath9k mac80211 
 snd_hda_codec_realtek ath9k_common microcode ath9k_hw psmouse serio_raw sg 
 ath cfg80211 atl1c lpc_ich mfd_core ehci_hcd snd_hda_intel snd_hda_codec 
 snd_hwdep snd_pcm rtc_cmos snd_timer snd evdev eeepc_laptop snd_page_alloc 
 sparse_keymap

 Pid: 2866, comm: X Not tainted 3.5.6-rc1-eeepc #1 ASUSTeK Computer INC. 
 1005HA/1005HA
 EIP: 0060:[c12dc291] EFLAGS: 00013297 CPU: 0
 EIP is at i915_gem_entervt_ioctl+0xf1/0x110
 EAX: f5941df4 EBX: f594 ECX:  EDX: 0002
 ESI: f5835400 EDI:  EBP: f51d7e38 ESP: f51d7e20
  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
 CR0: 8005003b CR2: b760e0a0 CR3: 351b6000 CR4: 07d0
 DR0:  DR1:  DR2:  DR3: 
 DR6: 0ff0 DR7: 0400
 Process X (pid: 2866, ti=f51d6000 task=f61af8d0 task.ti=f51d6000)
 Stack:
  0001  f5835414 f51d7e84 f5835400 f54f85c0 f51d7f10 c12b530b
  0001 c151b139 c14751b6 c152e030 0b32 6459 0059 e200
  0001  6459 c159ddd0 c12dc1a0 ffea  
 Call Trace:
  [c12b530b] drm_ioctl+0x2eb/0x440
  [c12dc1a0] ? i915_gem_init+0xe0/0xe0
  [c1052b2b] ? enqueue_hrtimer+0x1b/0x50
  [c1053321] ? __hrtimer_start_range_ns+0x161/0x330
  [c10530b3] ? lock_hrtimer_base+0x23/0x50
  [c1053163] ? hrtimer_try_to_cancel+0x33/0x70
  [c12b5020] ? drm_version+0x90/0x90
  [c10ca171] vfs_ioctl+0x31/0x50
  [c10ca2e4] do_vfs_ioctl+0x64/0x510
  [c10535de] ? hrtimer_nanosleep+0x8e/0x100
  [c1052c20] ? update_rmtp+0x80/0x80
  [c10ca7c9] sys_ioctl+0x39/0x60
  [c1433949] syscall_call+0x7/0xb
 Code: 83 c4 0c 5b 5e 5f 5d c3 c7 44 24 04 2c 05 53 c1 c7 04 24 6f ef 47 c1 e8 
 6e e0 fd ff c7 83 38 1e 00 00 00 00 00 00 e9 3f ff ff ff 0f 0b eb fe 0f 0b 
 eb fe 8d b4 26 00 00 00 00 0f 0b eb fe 8d b6
 EIP: [c12dc291] i915_gem_entervt_ioctl+0xf1/0x110 SS:ESP 0068:f51d7e20
 ---[ end trace dd332ec083cbd513 ]---

 I have the full dmesg if that can help. I do not have KMS and have not
 tested 3.6-* yet.

 $ grep I915 .config
 CONFIG_DRM_I915=y
 # CONFIG_DRM_I915_KMS is not set

Any reason you don't have KMS, you'll keep hitting these non-kms bugs
since it has no users anymore really.

Granted they'll get fixed, but I suspect its a losing battle over time.

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 3.5 regression on i915

2012-10-06 Thread Dave Airlie
On Sat, Oct 6, 2012 at 3:27 AM, Willy Tarreau w...@1wt.eu wrote:
 On Sat, Oct 06, 2012 at 01:58:45AM +0200, Willy Tarreau wrote:
 On Sat, Oct 06, 2012 at 09:48:57AM +1000, Dave Airlie wrote:
  Any reason you don't have KMS, you'll keep hitting these non-kms bugs
  since it has no users anymore really.
 
  Granted they'll get fixed, but I suspect its a losing battle over time.

 Well, back in old times every time I tried to enable it, I only ran into
 problems so I got used to disable it, which made sense since it didn't
 bring me any benefit.

 OK I found why in the end. When I enable KMS, my X server fails to start
 and segfaults in intel_drv.so. So I think that the comment in Kconfig
 below is quite appropriate :

Okay are you running a really old userspace? just wondering what could
cause this.

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] make CONFIG_EXPERIMENTAL invisible and default

2012-10-06 Thread Dave Airlie

 Really I would much prefer to add some Don't enable it unless you're
 doing kernel hacking.
 If unsure say N text in the Kconfig.

 I can understand that distros want to cover as much feature as they
 can for their users. But
 should it be an excuse for not reading outstanding warnings in Kconfig
 help text?

 In my experience, they do not read these warnings carefully.  :-(
 Or perhaps they do read them, but react to them by running the code
 through some test suite rather than by putting full faith in the
 warning.


I think Kconfig is mostly what distro would like to use the thing is
the Kconfig text needs to be there upfront when its merged, not two
months later, since then it too late for a distro to notice.

I'd bet most distros would read the warnings, but in a lot of cases
the warning don't exist until its too late.

Dave.


 Or may be add some specific warning yeah. I wouldn't mind much.

 We have some weeks to think about it -- I cannot see pushing a
 warning in as a regression.  ;-)

 Thanx, Paul

 --
 To unsubscribe from this list: send the line unsubscribe linux-kernel in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 Please read the FAQ at  http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] drm for 3.7-rc1 (part 2)

2012-10-07 Thread Dave Airlie

Hi Linus,

This is the follow-up pull, 3 pieces

a) exynos next stuff, was delayed but looks okay to me, one patch in v4l 
bits but it was acked by v4l person.
b) UAPI disintegration bits
c) intel fixes - DP fixes, hang fixes, other misc fixes.

Dave.

The following changes since commit 0b8e74c6f44094189dbe78baf4101acc7570c6af:

  Merge branch 'v4l_for_linus' of 
git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media (2012-10-07 
17:49:05 +0900)

are available in the git repository at:


  git://people.freedesktop.org/~airlied/linux.git drm-next

for you to fetch changes up to 1f31c69dac71bebc0f00bc8534a6345782045501:

  Merge branch 'drm-intel-fixes' of 
git://people.freedesktop.org/~danvet/drm-intel into drm-next (2012-10-07 
21:13:54 +1000)



Adam Jackson (6):
  drm: Export drm_probe_ddc()
  drm/dp: Update DPCD defines
  drm/i915/dp: Fetch downstream port info if needed during DPCD fetch
  drm/i915/dp: Be smarter about connection sense for branch devices
  drm/dp: Document DP spec versions for various DPCD registers
  drm/dp: Make sink count DP 1.2 aware

Ben Widawsky (2):
  drm/i915: Fix set_caching locking
  drm/i915: Fix GT_MODE default value

Chris Wilson (3):
  drm/i915: Actually invalidate the TLB for the SandyBridge HW contexts w/a
  drm/i915: Flush the pending flips on the CRTC before modification
  drm/i915: Try harder to complete DP training pattern 1

Daniel Vetter (2):
  drm/i915: call drm_handle_vblank before finish_page_flip
  drm/i915: don't frob the vblank ts in finish_page_flip

Dave Airlie (3):
  Merge branch 'disintegrate-drm' of 
git://git.infradead.org/users/dhowells/linux-headers into drm-next
  Merge branch 'exynos-drm-next' of 
git://git.infradead.org/users/kmpark/linux-samsung into drm-next
  Merge branch 'drm-intel-fixes' of 
git://people.freedesktop.org/~danvet/drm-intel into drm-next

David Howells (1):
  UAPI: (Scripted) Disintegrate include/drm

Dmitry Rogozhkin (1):
  drm/i915: EBUSY status handling added to i915_gem_fault().

Inki Dae (16):
  drm/exynos: added device object to subdrv's remove callback as argument
  drm/exynos: separated subdrv_probe function into two parts.
  drm/exynos: separeated fimd_power_on into some parts.
  drm/exynos: fixed duplicated mode setting.
  drm/exynos: add wait_for_vblank callback interface.
  drm/exynos: make sure that hardware overlay for fimd is disabled
  drm/exynos: make sure that hardware overlay for hdmi is disabled
  drm/exynos: check NV12M format specific to Exynos properly
  drm/exynos: update crtc to plane safely
  drm/exynos: Disable plane when released
  drm/exynos: add pid to g2d_runqueue_node
  drm/exynos: fix duplicated mutex lock issue
  drm/exynos: check crtc's dpms mode at page flip
  drm/exynos: check crtc's dpms mode at SetCrtc
  drm/exynos: support drm_wait_vblank feature for VIDI
  drm/exynos: fix display power call issue.

Jani Nikula (1):
  drm/i915: use adjusted_mode instead of mode for checking the 6bpc force 
flag

Jesse Barnes (1):
  drm/i915: set swizzling to none on VLV

Joonyoung Shim (2):
  drm/exynos: fix to calculate CRTC shown via screen
  drm/exynos: fix kcalloc size of g2d cmdlist node

Leela Krishna Amudala (1):
  drm/exynos: add platform_device_id table and driver data for drm fimd

Mika Kuoppala (1):
  drm/i915: print warning if vmi915_gem_fault error is not handled

Rahul Sharma (9):
  drm: exynos: remove drm hdmi platform data struct
  drm: exynos: hdmi: add support for exynos5 ddc
  drm: exynos: hdmi: add support for exynos5 hdmiphy
  drm: exynos: hdmi: add support for platform variants for mixer
  drm: exynos: hdmi: add support to disable video processor in mixer
  drm: exynos: hdmi: add support for exynos5 mixer
  drm: exynos: hdmi: replace is_v13 with version check in hdmi
  drm: exynos: hdmi: add support for exynos5 hdmi
  drm: exynos: hdmi: remove drm common hdmi platform data struct

Sachin Kamat (1):
  drm/exynos: Fix potential NULL pointer dereference

Tomasz Stanislawski (5):
  media: s5p-hdmi: add HPD GPIO to platform data
  drm: exynos: hdmi: support for platform variants
  drm: exynos: hdmi: fix interrupt handling
  drm: exynos: hdmi: use s5p-hdmi platform data
  drm: exynos: hdmi: turn off HPD interrupt in HDMI chip

 drivers/gpu/drm/drm_edid.c|3 +-
 drivers/gpu/drm/exynos/exynos_ddc.c   |   22 +-
 drivers/gpu/drm/exynos/exynos_drm_connector.c |   50 +-
 drivers/gpu/drm/exynos/exynos_drm_connector.h |4 +
 drivers/gpu/drm/exynos/exynos_drm_core.c  |  100 ++-
 drivers/gpu/drm/exynos/exynos_drm_crtc.c  |   20 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.h   |   19 +-
 drivers/gpu/drm/exynos/exynos_drm_encoder.c   |  116 ++-
 drivers/gpu/drm/exynos

[git pull] drm fixes

2012-11-03 Thread Dave Airlie

Hi Linus,

scattered selection of fixes:
radeon: load detect fixes from SuSE/AMD
intel: misc i830, sdvo regression, vesafb kickoff ums fix
exynos: maintainers entry update + fixes
udl: fix stride scanout issue

its slightly bigger than I'd probably like, but nothing looked dangerous 
enough to hold off on.

Dave.

The following changes since commit 4936b172d699434547addbe452c2d600ea6a4baf:

  Merge branch 'drm-nouveau-fixes' of 
git://people.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes (2012-10-31 
13:46:09 +1000)

are available in the git repository at:

  git://people.freedesktop.org/~airlied/linux drm-fixes

Alex Deucher (1):
  drm/radeon: add load detection support for ext DAC on R200 (v2)

Chris Wilson (1):
  drm/i915: Only kick out vesafb if we takeover the fbcon with KMS

Daniel Vetter (3):
  drm/i915: fix overlay on i830M
  drm/i915: VGA needs to be on pipe A on i830M
  drm/i915: clear the entire sdvo infoframe buffer

Dave Airlie (4):
  Merge branch 'drm-intel-fixes' of 
git://people.freedesktop.org/~danvet/drm-intel into drm-fixes
  Merge branch 'drm-fixes-3.7' of git://people.freedesktop.org/~agd5f/linux 
into drm-fixes
  Merge branch 'exynos-drm-fixes' of 
git://git.kernel.org/.../daeinki/drm-exynos into drm-fixes
  drm/udl: fix stride issues scanning out stride != width*bpp

Egbert Eich (6):
  DRM/Radeon: Fix Load Detection on legacy primary DAC.
  DRM/Radeon: Fix primary DAC Load Detection for RV100 chips.
  DRM/Radeon: On DVI-I use Load Detection when EDID is bogus.
  DRM/Radeon: Clean up code in TV DAC load detection.
  DRM/Radeon: Fix TV DAC Load Detection for single CRTC chips.
  DRM/radeon: For single CRTC GPUs move handling of CRTC_CRT_ON to 
crtc_dpms().

Igor Murzov (1):
  drm/radeon: fix ATPX function documentation

Inki Dae (2):
  drm/exynos: fix display on issue
  MAINTAINERS: Add git repository for Exynos DRM

Jani Nikula (1):
  drm/i915: be less verbose about inability to provide vendor backlight

Peter Senna Tschudin (1):
  drivers/gpu/drm/radeon/evergreen_cs.c: Remove unnecessary semicolon

Rahul Sharma (1):
  drm: exynos: removed warning due to missing typecast for mixer driver data

Rob Clark (1):
  drm/exynos: add support for ARCH_MULTIPLATFORM

 MAINTAINERS |1 +
 drivers/gpu/drm/exynos/Kconfig  |2 +-
 drivers/gpu/drm/exynos/exynos_drm_connector.c   |1 +
 drivers/gpu/drm/exynos/exynos_drm_encoder.c |   33 +++--
 drivers/gpu/drm/exynos/exynos_mixer.c   |2 +-
 drivers/gpu/drm/i915/i915_dma.c |3 +-
 drivers/gpu/drm/i915/intel_crt.c|2 +-
 drivers/gpu/drm/i915/intel_overlay.c|   14 ++-
 drivers/gpu/drm/i915/intel_panel.c  |2 +-
 drivers/gpu/drm/i915/intel_sdvo.c   |   62 ++---
 drivers/gpu/drm/i915/intel_sdvo_regs.h  |2 +
 drivers/gpu/drm/radeon/evergreen_cs.c   |2 +-
 drivers/gpu/drm/radeon/radeon_atpx_handler.c|4 +-
 drivers/gpu/drm/radeon/radeon_connectors.c  |   28 +++-
 drivers/gpu/drm/radeon/radeon_legacy_crtc.c |   15 ++-
 drivers/gpu/drm/radeon/radeon_legacy_encoders.c |  175 +++
 drivers/gpu/drm/udl/udl_drv.h   |2 +-
 drivers/gpu/drm/udl/udl_fb.c|   12 +-
 drivers/gpu/drm/udl/udl_transfer.c  |5 +-
 19 files changed, 275 insertions(+), 92 deletions(-)
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: drm i915 hangs on heavy io load

2012-11-04 Thread Dave Airlie
On Sun, Nov 4, 2012 at 10:44 AM, Norbert Preining prein...@logic.at wrote:
 Hi all,

 On Di, 30 Okt 2012, Dave Airlie wrote:
 I would suggest starting a bisect on drivers/gpu/drm/i915 from 3.6
 final to 3.7-rc1 or maybe -rc2.

 Sorry for my ignorance ... I did on master branch
 $ git checkout v3.7-rc1
 ...
 $ git bisect start drivers/gpu/drm/i915
 $ git bisect bad
 $ git bisect good v3.6
 Bisecting: 121 revisions left to test after this (roughly 7 steps)
 [25c5b2665fe4cc5a93edd29b62e7c05c1526] drm/i915: implement new 
 set_mode code flow
 $
 after that I am back somewhere around
 3.6.0-rc2
 ???

 Am I doing something wrong? I thought I am bisecting between 3.6 and 3.7.-rc2?
 How can I go back to 3.6.0-rc2?

Yeah thats fine, bisecting works by going to where commits were
originally committed, so drm-intel-next was 3.6.0-rc2 at some point
was only merged into Linus later.

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: nouveau, linux3.7-rc3: BUG: unable to handle kernel paging request at fffffffffffffff8

2012-11-05 Thread Dave Airlie
On Mon, Nov 5, 2012 at 8:29 AM, Antonio Ospite osp...@studenti.unina.it wrote:
 On Mon, 29 Oct 2012 23:16:24 +0100
 Antonio Ospite osp...@studenti.unina.it wrote:

 Hi,

 I am experiencing a bug with nouveau with linux-3.7-rc3 (and since rc1),
 my video adapter is the one integrated on the MSI M3N78-VM motherboard
 (hence x86_64):

 [...]
 [ 1943.858601] BUG: unable to handle kernel paging request at 
 fff8
 [ 1943.858669] IP: [a031a67a] nouveau_mm_head+0x30/0x127 [nouveau]
 [ 1943.858779] PGD 160d067 PUD 160e067 PMD 0
 [ 1943.858803] Oops:  [#1] SMP
 [..]
 [ 1943.860018] Call Trace:
 [ 1943.860019]  [810fa13d] ? kmem_cache_alloc_trace+0xbf/0xcf
 [ 1943.860019]  [81060f13] ? should_resched+0x5/0x23
 [ 1943.860019]  [a032a10a] ? nv50_fb_vram_new+0xc5/0x1f2 [nouveau]

 Ben, I cannot reproduce the crash with 3.7-rc4, I spotted commits
 a7dbf00 and 5cad16a which seem to be related to the problem I was
 having; would you mind elaborating a bit about what you think was
 causing the crash on my side? Maybe the chipset used on this motherboard
 doesn't support some feature? And how did you figured out from the logs?


5cad16acd25b16681a060d28d10eeacf98d07701 is the actual fix

The chipset hasn't got Z compression support, and the oops once decoded pointed
out the new code was trying to allocate Z tags from a NULL memory block. The old
code use to allocate an empty memory block instead of NULL, and it got
lost in the
rewrite, Ben just fixed it to allow empty memory blocks again.

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] drm radeon + core fixes

2012-11-06 Thread Dave Airlie

Hi Linus,

a single radeon typo fix for a regressions
and two fixes for a regression in the open helper addres space stuff.

Dave.

The following changes since commit 3d70f8c617a436c7146ecb81df2265b4626dfe89:

  Linux 3.7-rc4 (2012-11-04 11:07:39 -0800)

are available in the git repository at:
  git://people.freedesktop.org/~airlied/linux drm-fixes

Alex Deucher (1):
  drm/radeon: fix typo in evergreen_mc_resume()

Ilija Hadzic (2):
  drm: restore open_count if drm_setup fails
  drm: set dev_mapping before calling drm_open_helper

 drivers/gpu/drm/drm_fops.c |   44 ---
 drivers/gpu/drm/radeon/evergreen.c |2 +-
 2 files changed, 31 insertions(+), 15 deletions(-)
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] pci/runtime-pm: respect devices autosuspend timeout on config access

2012-11-06 Thread Dave Airlie
So I've been adding runtime pm to nouveau/radeon, and on X start it does a
lot of pci accesses. Now because the pm on these devices is equivalent
to D3cold, we have to resume them which involves a heavy latency due to
POSTing the cards. The driver configures the autosuspend timeout to 5s for
this reason, and I think the PCI layer config accesses should respect
the autosuspend.

Cc: Huang Ying ying.hu...@intel.com
Cc: Bjorn Helgaas bhelg...@google.com
Cc: Rafael J. Wysocki r...@sisk.pl
Signed-off-by: Dave Airlie airl...@redhat.com
---
 drivers/pci/pci-sysfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index 02d107b..12d3d52 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -487,7 +487,7 @@ pci_config_pm_runtime_put(struct pci_dev *pdev)
struct device *dev = pdev-dev;
struct device *parent = dev-parent;
 
-   pm_runtime_put(dev);
+   pm_runtime_put_autosuspend(dev);
if (parent)
pm_runtime_put_sync(parent);
 }
-- 
1.7.12.1

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: scsi target, likely GPL violation

2012-11-08 Thread Dave Airlie
 ...and then turn around and submit it to Nick since he's the target
 subsystem maintainer? Nick is probably the one who wrote it!

 I'm happy to do that, but we should recognize something is seriously
 skewed when the person nominally in charge of the in-kernel code also
 has a vested interest in *not* seeing new features added, since it then
 competes better with his company's offering.

 RTS is trying to use an open core business model. This works fine for
 BSD-licensed code or code originally authored entirely by you, but their
 code (all of it even the new stuff) is a derivative work of the Linux
 kernel source code, and the GPL says they need to contribute it back.


 Andy,

 Accusing us of violating GPL is a serious legal claim.

 In fact, we are not violating GPL.  In short, this is because we wrote
 the code you are referring to (the SCSI target core in our commercial
 RTS OS product), we have exclusive copyright ownership of it, and this
 code contains no GPL code from the community.  GPL obligations only
 apply downstream to licensees, and not to the author of the code.  Those
 who use the code under GPL are subject to its conditions; we are not.

Just to clarify since I'm not a major GPL expert. Are you:

a) distributing a Linux kernel

b) with a module built against it to be linked into it, whether
completely written in house or not?

Then the module is under the GPL, if you think you are like nvidia or
someone then think again, the corner case they live under is that they
don't distribute a Linux kernel with their module *ever*, and they
have a clear call for non-derived work status since its 90% the same
code as in their Windows drivers.

But if you distribute a kernel and a module in one place which I
assume RTS OS does, then you are in dangerous territory and could be
hit with cease and desist notices, which has happened to people
shipping kernels and linked nvidia binary drivers before.

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [GIT PULL] Linux KVM tool for v3.7-rc0

2012-10-20 Thread Dave Airlie
On Sun, Oct 21, 2012 at 4:14 AM, Borislav Petkov b...@alien8.de wrote:
 On Sat, Oct 20, 2012 at 06:04:36PM +1100, Stephen Rothwell wrote:
 So are there any compelling arguments from the proponents, or can
 I remove this from linux-next (and have it removed from the tip
 auto-latest branch)?

 FWIW, I gave this a run and I have to say, it works as advertized: I
 built it and ran it with the latest kernel and the thing simply boots
 the kernel. Even without a disk image - the simplest command is:

 $ ./lkvm run --kernel ../../arch/x86/boot/bzImage

 and it gets me a shell in the vm after a second.

 So the absolute advantage it gives kernel devs is that they can
 smoke-test whether their stuff boots in seconds.

 This is probably not helpful when enabling specific hw features but
 should be pretty helpful for generic arch stuff.

Why couldn't this script just be a wrapper around qemu?

I get the kvm developers developing features that isn't ideal, but for
the quick boot a kernel tests, I don't see why a well maintained qemu
wrapper isn't superior. I hate constructing qemu command lines, but a
script in the kernel repo seems like a good idea.

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] drm fixes

2012-10-22 Thread Dave Airlie

Hi Linus,

fixes for intel and nouveau mainly.

intel: disable HSW by default, sdvo fixes, link train regression fix
nouveau: acpi rom loading regression fix, with a few other fixes from the 
rework
core: just other minor fixes and race fixes for ttm.

Dave.

The following changes since commit 6f0c0580b70c89094b3422ba81118c7b959c7556:

  Linux 3.7-rc2 (2012-10-20 12:11:32 -0700)

are available in the git repository at:
  git://people.freedesktop.org/~airlied/linux drm-fixes

Ben Skeggs (4):
  drm/nouveau/bios: fetch full 4KiB block to determine ACPI ROM image size
  drm/nv41/vm: don't init hw pciegart on boards with agp bridge
  drm/nouveau/fb: fix reporting of memory type on GF8+ IGPs
  drm/nouveau/clock: fix missing pll type/addr when matching default entry

Chris Wilson (2):
  drm/i915: Add no-lvds quirk for Supermicro X7SPA-H
  drm/i915: Initialize obj-pages before use by 
i915_gem_object_do_bit17_swizzle()

Daniel Vetter (2):
  Revert drm/i915: Try harder to complete DP training pattern 1
  drm/i915: shut up spurious WARN in the gtt fault handler

Dave Airlie (2):
  Merge branch 'drm-intel-fixes' of 
git://people.freedesktop.org/~danvet/drm-intel into drm-fixes
  Merge branch 'drm-nouveau-fixes' of 
git://git.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes

Egbert Eich (4):
  DRM/i915: Don't delete DPLL Multiplier during DAC init.
  DRM/i915: Add QUIRK_INVERT_BRIGHTNESS for NCR machines.
  DRM/i915: Don't clone SDVO LVDS with analog.
  DRM/i915: Restore sdvo_flags after dtd-mode-dtd Roundrtrip.

Marcin Slusarz (5):
  drm/nouveau: handle same-fb page flips
  drm/nouveau: fix nouveau_mm/nouveau_mm_node leak
  drm/nouveau: warn when trying to free mm which is still in use
  drm/nouveau: validate vbios size
  drm/debugfs: remove redundant info from gem_names

Martin Peres (1):
  drm/nouveau/bios: improve error handling when reading the vbios from ACPI

Rodrigo Vivi (1):
  drm/i915: Insert i915_preliminary_hw_support variable.

Thierry Reding (3):
  drm: fb: cma: Fix typo in debug message
  drm: fb: cma: Fail gracefully on allocation failure
  drm: platform: Don't initialize driver-private data

Thomas Hellstrom (2):
  drm/ttm: Fix a theoretical race
  drm/ttm: Fix a theoretical race in ttm_bo_cleanup_refs()

 drivers/gpu/drm/drm_fb_cma_helper.c |4 +-
 drivers/gpu/drm/drm_info.c  |2 -
 drivers/gpu/drm/drm_platform.c  |1 -
 drivers/gpu/drm/i915/i915_drv.c |   13 +
 drivers/gpu/drm/i915/i915_drv.h |1 +
 drivers/gpu/drm/i915/i915_gem.c |7 +++-
 drivers/gpu/drm/i915/intel_crt.c|   15 +--
 drivers/gpu/drm/i915/intel_display.c|   32 +++
 drivers/gpu/drm/i915/intel_dp.c |   15 +++---
 drivers/gpu/drm/i915/intel_lvds.c   |8 +
 drivers/gpu/drm/i915/intel_sdvo.c   |   14 +++---
 drivers/gpu/drm/nouveau/core/core/gpuobj.c  |5 +++
 drivers/gpu/drm/nouveau/core/core/mm.c  |2 +-
 drivers/gpu/drm/nouveau/core/subdev/bios/base.c |   30 -
 drivers/gpu/drm/nouveau/core/subdev/bios/pll.c  |   10 +++
 drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c   |1 +
 drivers/gpu/drm/nouveau/core/subdev/vm/nv41.c   |3 +-
 drivers/gpu/drm/nouveau/core/subdev/vm/nv44.c   |3 +-
 drivers/gpu/drm/nouveau/nouveau_display.c   |   14 ++---
 drivers/gpu/drm/shmobile/shmob_drm_drv.c|   12 +++-
 drivers/gpu/drm/ttm/ttm_bo.c|   24 ++---
 21 files changed, 148 insertions(+), 68 deletions(-)
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: drm i915 hangs on heavy io load

2012-10-23 Thread Dave Airlie

 (please Cc)

 I am running 3.7-rc2 and got recently hit a few times (under rc1, too)
 by hanging drm i915 while doing large io operations.

Does booting with i915.i915_enable_rc6=0 help?

(Daniel, looks like an ironlake).

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] drm nouveau fixes

2012-10-10 Thread Dave Airlie

Hi Linus,

just a bunch of nouveau fixes, Ben wants to get some alternate versions 
into stable.

Dave.

The following changes since commit 1f31c69dac71bebc0f00bc8534a6345782045501:

  Merge branch 'drm-intel-fixes' of 
git://people.freedesktop.org/~danvet/drm-intel into drm-next (2012-10-07 
21:13:54 +1000)

are available in the git repository at:

  git://people.freedesktop.org/~airlied/linux.git drm-fixes

for you to fetch changes up to ceb736c395058699dc82e5efdb2a9279a5b29451:

  Merge branch 'drm-nouveau-fixes' of 
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-next (2012-10-09 
14:48:46 +1000)



Ben Skeggs (1):
  drm/nouveau/bios: fix shadowing of ACPI ROMs larger than 64KiB

Dave Airlie (1):
  Merge branch 'drm-nouveau-fixes' of 
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-next

Marcin Slusarz (2):
  drm/nouveau: remove unused _nouveau_parent_ctor
  drm/nv50/clk: wire up pll_calc hook

Martin Peres (2):
  drm/nouveau/fan: fix a typo in PWM's input clock calculation
  drm/nouveau/timer: bump ptimer's alarm delay from u32 to u64

 drivers/gpu/drm/nouveau/core/core/parent.c |   17 
 drivers/gpu/drm/nouveau/core/include/core/parent.h |3 ---
 .../gpu/drm/nouveau/core/include/subdev/timer.h|2 +-
 drivers/gpu/drm/nouveau/core/subdev/bios/base.c|   21 ++--
 drivers/gpu/drm/nouveau/core/subdev/clock/nv50.c   |1 +
 drivers/gpu/drm/nouveau/core/subdev/therm/nv50.c   |2 +-
 drivers/gpu/drm/nouveau/core/subdev/timer/nv04.c   |2 +-
 7 files changed, 14 insertions(+), 34 deletions(-)
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [Linaro-mm-sig] [PATCH] dma-buf: Use EXPORT_SYMBOL

2012-10-25 Thread Dave Airlie
 Unlikely as most of the code I've written belongs to Intel or Red Hat. I
 also have better things to do with life than sue Nvidia and start an all
 out copyright and patent war in Linuxspace.

I forgot to ask, but after your petty G+ trolling, if most of the code
belings to Intel or Red Hat, why do we need to listen to *your*
lawyers advice? It seems like you aren't a major rights holder but a
troll.

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] drm radeon fixes.

2012-10-25 Thread Dave Airlie

Hi Linus,

Just radeon fixes in this one,
some new PCI IDs,
ATPX regression fix,
async VM regression fixes
some module options fixes.

Dave.

The following changes since commit b8e902f24fdd16c4373ddc37a4e150c4afe9c6db:

  drm/ttm: Fix a theoretical race in ttm_bo_cleanup_refs() (2012-10-23 10:15:21 
+1000)

are available in the git repository at:
  git://people.freedesktop.org/~airlied/linux drm-fixes

Alex Deucher (6):
  drm/radeon: add some new SI PCI ids
  drm/radeon: fix sparse warning
  drm/radeon: give each backlight a unique id
  drm/radeon: add error output if VM CS fails on cayman
  drm/radeon: fix ATPX function documentation
  drm/radeon: fix ATPX regression in acpi rework

Christian König (9):
  drm/radeon: fix PFP sync in vm_flush
  drm/radeon: fix cayman_vm_set_page v2
  drm/radeon: fix si_set_page v2
  drm/radeon: remove set_page check from VM code
  drm/radeon: fix header size estimation in VM code
  drm/radeon: fix and simplify pot argument checks v3
  drm/radeon: use vzalloc for gart pages
  drm/radeon: move size limits to gem_object_create.
  drm/radeon: move the retry to gem_object_create

Dave Airlie (1):
  Merge branch 'drm-fixes-3.7' of git://people.freedesktop.org/~agd5f/linux 
into drm-fixes

 drivers/gpu/drm/radeon/atombios_encoders.c  |5 ++-
 drivers/gpu/drm/radeon/evergreen_cs.c   |1 +
 drivers/gpu/drm/radeon/ni.c |   45 ++---
 drivers/gpu/drm/radeon/nid.h|1 +
 drivers/gpu/drm/radeon/radeon_atpx_handler.c|6 +-
 drivers/gpu/drm/radeon/radeon_device.c  |   60 +--
 drivers/gpu/drm/radeon/radeon_gart.c|   22 -
 drivers/gpu/drm/radeon/radeon_gem.c |   18 ++-
 drivers/gpu/drm/radeon/radeon_legacy_encoders.c |5 ++-
 drivers/gpu/drm/radeon/radeon_object.c  |   19 ---
 drivers/gpu/drm/radeon/si.c |   47 +++---
 include/drm/drm_pciids.h|3 +
 12 files changed, 122 insertions(+), 110 deletions(-)

[git pull] drm radeon + nouveau fixes

2012-11-08 Thread Dave Airlie

Hi Linus,

just radeon and nouveau, mostly regressions fixers, and a couple of radeon 
register checker fixes.

Dave.

The following changes since commit 695ddeb457584a602f2ba117d08ce37cf6ec1589:

  drm/radeon: fix typo in evergreen_mc_resume() (2012-11-07 10:53:49 +1000)

are available in the git repository at:

  git://people.freedesktop.org/~airlied/linux drm-fixes

for you to fetch changes up to 4a48ed2334b7ae61dd11bb114fa35bd4ebdc1ca0:

  Merge branch 'drm-nouveau-fixes' of 
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes (2012-11-09 
14:57:02 +1000)



Alex Deucher (3):
  drm/radeon/dce3: switch back to old pll allocation order for discrete
  drm/radeon/cayman: add some missing regs to the VM reg checker
  drm/radeon/si: add some missing regs to the VM reg checker

Dave Airlie (2):
  Merge branch 'drm-fixes-3.7' of git://people.freedesktop.org/~agd5f/linux 
into drm-fixes
  Merge branch 'drm-nouveau-fixes' of 
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes

Kelly Doran (1):
  drm/nvc0/disp: fix regression in vblank semaphore release

Maarten Lankhorst (1):
  drm/nouveau: fix acpi edid retrieval

Marcin Slusarz (3):
  drm/nv41/vm: fix typo in type name
  drm/nv40/graph: fix typo in type names
  drm/nv40/mpeg: fix context handling

 drivers/gpu/drm/nouveau/core/engine/disp/nv50.c  | 20 +
 drivers/gpu/drm/nouveau/core/engine/graph/nv40.c |  4 +-
 drivers/gpu/drm/nouveau/core/engine/mpeg/nv40.c  |  2 +-
 drivers/gpu/drm/nouveau/core/subdev/vm/nv41.c|  2 +-
 drivers/gpu/drm/nouveau/nouveau_connector.c  |  2 +-
 drivers/gpu/drm/radeon/atombios_crtc.c   | 54 ++--
 drivers/gpu/drm/radeon/evergreen_cs.c|  3 ++
 drivers/gpu/drm/radeon/evergreend.h  |  4 ++
 drivers/gpu/drm/radeon/si.c  |  1 +
 drivers/gpu/drm/radeon/sid.h |  1 +
 10 files changed, 57 insertions(+), 36 deletions(-)
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] drm vmwgfx

2012-11-09 Thread Dave Airlie

Hi Linus,

dropped the ball on a vmware patch, so two more fixes for vmwgfx are here,
one for hibernate issue, one for a BUG trigger.

Dave.

The following changes since commit 4a48ed2334b7ae61dd11bb114fa35bd4ebdc1ca0:

  Merge branch 'drm-nouveau-fixes' of 
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes (2012-11-09 
14:57:02 +1000)

are available in the git repository at:


  git://people.freedesktop.org/~airlied/linux drm-fixes

for you to fetch changes up to afcc87aa6a233e52df73552dc1dc9ae3881b7cc8:

  drm/vmwgfx: Fix a case where the code would BUG when trying to pin GMR memory 
(2012-11-09 20:49:06 +1000)


Thomas Hellstrom (2):
  drm/vmwgfx: Fix hibernation device reset
  drm/vmwgfx: Fix a case where the code would BUG when trying to pin GMR 
memory

 drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c | 2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c| 5 +
 2 files changed, 6 insertions(+), 1 deletion(-)
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: scsi target, likely GPL violation

2012-11-11 Thread Dave Airlie
On Mon, Nov 12, 2012 at 8:41 AM, Julian Calaby julian.cal...@gmail.com wrote:
 Hi Lawrence,

 On Mon, Nov 12, 2012 at 9:13 AM, Lawrence Rosen lro...@rosenlaw.com wrote:
 Alan Cox wrote:
 So either your work is truely not derivative of the kernel (which I find
 wildly improbable) or you have a problem and since you are aware
 of the complaints publically I guess probably a triple damages sized
 problem. But that's one for your lawyers and whatever opinion they
 have on the subject.

 Hi Alan and others,

 I've been advising Rising Tide Systems (RTS) in this matter. Please let me
 reassure you that RTS is acting on advice of counsel.

 It's nice to hear from legal counsel on this matter.

 I don't think that the *usage* of the kernel APIs is the biggest issue
 here. There are many examples where proprietary code uses these APIs
 and is not violating the GPL.

 As I see it, one of the main concerns is because the proprietary and
 in-kernel target systems are, from what I understand, quite similar,
 there is the possibility that GPL licensed contributions to the
 in-kernel target code may have leaked into to the proprietary code.
 That said, proving this is a very difficult problem, but the question
 must still be asked:

 Can Rising Tide Systems assure us that there is no GPL licensed code
 within their proprietary target code?

Its a bit of both actually.

The problem is if you design a kernel subsystem specifically for the
Linux kernel, even if you use the internal APIs, you are most likely
creating a derived work of the Linux kernel.

questions that would need to be asked:
Can the scsi target code work completely separate from a Linux kernel?
Does it work with another operating system? was it designed for that
operating system?

The whole in-kernel version under the GPL isn't the problem here and
has nothing to do with the violation. Its the one they distribute
separately with their RTS OS kernel, and if they distribute it in one
combined work, then a GPL violation is possibly indicated.

The reasons for non-derived work status that have been suggested (but
not accepted by all the community):
a) AFS, a file system clearly not developed for Linux, where it being
a derived work of something that came after it would be a bit crazy,
b) binary GPU drivers, built from the same source base on their
Windows platform, and the code existed on Windows before Linux,
arguing this driver is a derived work is difficult as well. Also
nvidia specifically don't distribute this driver linked against the
kernel, and distros who have done this in the past have been on the
end of cease-and-desist letters.

So really this is purely a derived work issue, whether they release a
trailing edge version of their code afterwards under the GPL isn't
significant, other than a this might keep the community off our back.

(Yes the secondary issue of people who contributed code and cleanups
back to that code base and if they integrated it back into their
internal code base, is a problem, but I don't believe its the primary
issue).

Dave.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] drm fixes

2012-10-16 Thread Dave Airlie

Hi Linus,

fixes for i915, nouveau and radeon

i915: haswell stability, modeset rework fallout, ums fix
nouveau: misc fixes from code rework
radeon: pll rework fixes, more 2 level PTE cleanups.
core: warning fixes on 32-bit.

Dave.

The following changes since commit ddffeb8c4d0331609ef2581d84de4d763607bd37:

  Linux 3.7-rc1 (2012-10-14 14:41:04 -0700)

are available in the git repository at:

  git://people.freedesktop.org/~airlied/linux.git drm-fixes

for you to fetch changes up to 8a00b6af4cc547725f231c8367ddc7cb56b2cf76:

  nouveau: fix warning on 32-bit build. (2012-10-16 16:40:53 +1000)


Alex Deucher (5):
  drm/radeon: fix compilation with backlight disabled
  drm/radeon: allocate PPLLs from low to high
  drm/radeon: update comments to clarify VM setup (v2)
  drm/radeon/cayman: set VM max pfn at MC init
  drm/radeon: check if pcie gen 2 is already enabled (v2)

Ben Skeggs (1):
  drm/nouveau/bios: fix typo in error message

Chris Wilson (2):
  drm/i915: Disallow preallocation of requests
  drm/i915: fixup i915_gem_object_get_page inline helper

Christian König (3):
  drm/radeon: allocate page tables on demand v4
  drm/radeon: don't add the IB pool to all VMs v2
  drm/radeon: separate pt alloc from lru add

Daniel Vetter (5):
  drm/i915: paper over a pipe-enable vs pageflip race
  drm/i915: disable wc gtt pte mappings on gen2
  drm/i915: rip out the pipe A quirk for i855gm
  drm/i915: fixup the plane-pipe fixup code
  drm/i915/dvo-ch7xxx: fix get_hw_state

Dave Airlie (5):
  Merge branch 'drm-intel-fixes' of 
git://people.freedesktop.org/~danvet/drm-intel into drm-fixes
  Merge branch 'drm-fixes-3.7' of git://people.freedesktop.org/~agd5f/linux 
into drm-fixes
  drm: fix warning on 32-bit.
  Merge branch 'drm-nouveau-fixes' of 
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes
  nouveau: fix warning on 32-bit build.

Egbert Eich (1):
  drm/radeon: Don't destroy I2C Bus Rec in radeon_ext_tmds_enc_destroy().

Jani Nikula (1):
  drm/i915: fix non-DP-D eDP backlight cleanup and module reload

Kenneth Graunke (1):
  drm/i915: Set guardband clipping workaround bit in the right register.

Luca Tettamanti (1):
  drm/radeon: use %zu for formatting size_t

Marcin Slusarz (1):
  drm/nv50/fb: fix double free of vram mm

Martin Peres (3):
  drm/nouveau/hwmon: fix the initialization condition
  drm/nouveau/pm: fix a typo related to the move to the therm subdev
  drm/nouveau/pm: do not stop reclocking if failing to set the fan speed

Max Filippov (1):
  drm/nouveau: only call ttm_agp_tt_create when __OS_HAS_AGP

Randy Dunlap (1):
  drm: radeon: fix printk format warning

Rodrigo Vivi (1):
  drm/i915: HSW CRW stability magic

Thomas Friebel (1):
  drm/radeon: fix spelling typos in debugging output

Willy Tarreau (1):
  drm/i915: remove useless BUG_ON which caused a regression in 3.5.

 drivers/char/agp/intel-gtt.c|2 +-
 drivers/gpu/drm/drm_info.c  |2 +-
 drivers/gpu/drm/i915/dvo_ch7xxx.c   |6 +-
 drivers/gpu/drm/i915/i915_drv.h |9 +-
 drivers/gpu/drm/i915/i915_gem.c |   19 +-
 drivers/gpu/drm/i915/i915_reg.h |2 +-
 drivers/gpu/drm/i915/intel_display.c|   47 ++-
 drivers/gpu/drm/i915/intel_dp.c |3 +-
 drivers/gpu/drm/i915/intel_overlay.c|   72 +
 drivers/gpu/drm/i915/intel_pm.c |4 +-
 drivers/gpu/drm/nouveau/core/subdev/bios/dcb.c  |2 +-
 drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c   |1 -
 drivers/gpu/drm/nouveau/core/subdev/therm/fan.c |2 +-
 drivers/gpu/drm/nouveau/nouveau_bo.c|2 +
 drivers/gpu/drm/nouveau/nouveau_pm.c|6 +-
 drivers/gpu/drm/radeon/atombios_crtc.c  |8 +-
 drivers/gpu/drm/radeon/evergreen.c  |7 +-
 drivers/gpu/drm/radeon/ni.c |   12 +-
 drivers/gpu/drm/radeon/r600.c   |6 +
 drivers/gpu/drm/radeon/radeon.h |   14 +-
 drivers/gpu/drm/radeon/radeon_acpi.c|6 +-
 drivers/gpu/drm/radeon/radeon_atpx_handler.c|2 +-
 drivers/gpu/drm/radeon/radeon_cs.c  |1 +
 drivers/gpu/drm/radeon/radeon_device.c  |4 +
 drivers/gpu/drm/radeon/radeon_gart.c|  374 ---
 drivers/gpu/drm/radeon/radeon_kms.c |   22 +-
 drivers/gpu/drm/radeon/radeon_legacy_encoders.c |   48 ++-
 drivers/gpu/drm/radeon/radeon_ring.c|2 +-
 drivers/gpu/drm/radeon/si.c |7 +-
 29 files changed, 443 insertions(+), 249 deletions(-)

Re: X-freeze after clflush changes [Was: 2.6.23-rc6-mm1]

2007-09-20 Thread Dave Airlie
  But now I'm talking about another issue -- a regression since rc4-mm1, 
  where X
  server is unable to bind agp memory (those x logs above). The clflush issue 
  has
  solved andi in
  http://lkml.org/lkml/2007/9/19/334
  recently

 Tried that, my laptop still bricks the instant X starts up and the NVidia 
 driver
 tries to initialize.  Not even sysrq-foo works. Time to power-cycle.


I'd expect the binary to be doing something stupid with it's flushing
and relying on the kernel to do something it no longer does.. so this
is most likely a case of not fixable..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH/RFC] video gfx: merge kconfig menus

2007-09-25 Thread Dave Airlie
On 9/25/07, Randy Dunlap [EMAIL PROTECTED] wrote:
 Is there some reason that we don't put all video gfx config in one
 place?  Is the split just historical, based on subdirectory locations,
 or is there a bigger reason for it?

 [to apply cleanly, this patch depends on a patch that was sent
 to linux-fbdev-devel, which is subscribers-only, so I didn't cc: lkml
 on it:  http://marc.info/?l=linux-fbdev-develm=119070044232621w=2]

 ---

 From: Randy Dunlap [EMAIL PROTECTED]

 Move AGP and DRM menus into the video graphics support menu.
   They use 'menuconfig' so that they can all be disabled with
   one selection.
 Make the console menu use 'menuconfig' so that it can all be
   disabled with one selection.
 Make the frame buffer menu use 'menuconfig' so that it can all be
   disabled with one selection.

 Signed-off-by: Randy Dunlap [EMAIL PROTECTED]

Fine by me.. some day we might move the directories but this is a good start..

Acked-by: Dave Airlie [EMAIL PROTECTED]

Dave.
 ---
  drivers/char/Kconfig |4 
  drivers/char/agp/Kconfig |2 +-
  drivers/char/drm/Kconfig |2 +-
  drivers/video/Kconfig|   11 +++
  4 files changed, 9 insertions(+), 10 deletions(-)

 --- linux-2.6.23-rc8.orig/drivers/char/Kconfig
 +++ linux-2.6.23-rc8/drivers/char/Kconfig
 @@ -896,10 +896,6 @@ config GPIO_TB0219
 depends on TANBAC_TB022X
 select GPIO_VR41XX

 -source drivers/char/agp/Kconfig
 -
 -source drivers/char/drm/Kconfig
 -
  source drivers/char/pcmcia/Kconfig

  config MWAVE
 --- linux-2.6.23-rc8.orig/drivers/video/Kconfig
 +++ linux-2.6.23-rc8/drivers/video/Kconfig
 @@ -5,8 +5,9 @@
  menu Graphics support
 depends on HAS_IOMEM

 -source drivers/video/backlight/Kconfig
 -source drivers/video/display/Kconfig
 +source drivers/char/agp/Kconfig
 +
 +source drivers/char/drm/Kconfig

  config VGASTATE
 tristate
 @@ -19,7 +20,7 @@ config VIDEO_OUTPUT_CONTROL
   This framework adds support for low-level control of the video
   output switch.

 -config FB
 +menuconfig FB
 tristate Support for frame buffer devices
 ---help---
   The frame buffer device provides an abstraction for the graphics
 @@ -1860,6 +1861,9 @@ if ARCH_OMAP
 source drivers/video/omap/Kconfig
  endif

 +source drivers/video/backlight/Kconfig
 +source drivers/video/display/Kconfig
 +
  if VT
 source drivers/video/console/Kconfig
  endif
 @@ -1869,4 +1873,3 @@ if FB || SGI_NEWPORT_CONSOLE
  endif

  endmenu
 -
 --- linux-2.6.23-rc8.orig/drivers/char/agp/Kconfig
 +++ linux-2.6.23-rc8/drivers/char/agp/Kconfig
 @@ -1,4 +1,4 @@
 -config AGP
 +menuconfig AGP
 tristate /dev/agpgart (AGP Support)
 depends on ALPHA || IA64 || PARISC || PPC || X86
 depends on PCI
 --- linux-2.6.23-rc8.orig/drivers/char/drm/Kconfig
 +++ linux-2.6.23-rc8/drivers/char/drm/Kconfig
 @@ -4,7 +4,7 @@
  # This driver provides support for the
  # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
  #
 -config DRM
 +menuconfig DRM
 tristate Direct Rendering Manager (XFree86 4.1.0 and higher DRI 
 support)
 depends on (AGP || AGP=n)  PCI  !EMULATED_CMPXCHG
 help
 -
 To unsubscribe from this list: send the line unsubscribe linux-kernel in
 the body of a message to [EMAIL PROTECTED]
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 Please read the FAQ at  http://www.tux.org/lkml/

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] i915: make vbl interrupts work properly on i965g/gm

2007-09-27 Thread Dave Airlie


Hi Linus,

The attached patch is to fix a bug reported on 965gm chipsets (lots of new 
laptops), I think distros will all have to patch this in to fix it, so can 
we get it into the 2.6.23 final?


(Otherwise I'll wait until stable..)

Dave.From 14e53712e5e2ccc72dac1131de78e590e9a9d451 Mon Sep 17 00:00:00 2001
From: Dave Airlie [EMAIL PROTECTED]
Date: Fri, 28 Sep 2007 11:46:28 +1000
Subject: [PATCH] i915: make vbl interrupts work properly on i965g/gm hw.

This code is ported from the DRM git tree and allows the vblank interrupts
to function on the i965 hw. It also requires a change in Mesa's 965 driver
to actually use them.

Signed-off-by: Dave Airlie [EMAIL PROTECTED]
---
 drivers/char/drm/i915_drv.h |6 ++
 drivers/char/drm/i915_irq.c |   12 
 2 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/drivers/char/drm/i915_drv.h b/drivers/char/drm/i915_drv.h
index 737088b..28b9873 100644
--- a/drivers/char/drm/i915_drv.h
+++ b/drivers/char/drm/i915_drv.h
@@ -210,6 +210,12 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
 #define I915REG_INT_MASK_R 	0x020a8
 #define I915REG_INT_ENABLE_R	0x020a0
 
+#define I915REG_PIPEASTAT	0x70024
+#define I915REG_PIPEBSTAT	0x71024
+
+#define I915_VBLANK_INTERRUPT_ENABLE	(1UL17)
+#define I915_VBLANK_CLEAR		(1UL1)
+
 #define SRX_INDEX		0x3c4
 #define SRX_DATA		0x3c5
 #define SR01			1
diff --git a/drivers/char/drm/i915_irq.c b/drivers/char/drm/i915_irq.c
index 4b4b2ce..bb8e9e9 100644
--- a/drivers/char/drm/i915_irq.c
+++ b/drivers/char/drm/i915_irq.c
@@ -214,6 +214,10 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
 	struct drm_device *dev = (struct drm_device *) arg;
 	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev-dev_private;
 	u16 temp;
+	u32 pipea_stats, pipeb_stats;
+
+	pipea_stats = I915_READ(I915REG_PIPEASTAT);
+	pipeb_stats = I915_READ(I915REG_PIPEBSTAT);
 
 	temp = I915_READ16(I915REG_INT_IDENTITY_R);
 
@@ -225,6 +229,8 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
 		return IRQ_NONE;
 
 	I915_WRITE16(I915REG_INT_IDENTITY_R, temp);
+	(void) I915_READ16(I915REG_INT_IDENTITY_R);
+	DRM_READMEMORYBARRIER();
 
 	dev_priv-sarea_priv-last_dispatch = READ_BREADCRUMB(dev_priv);
 
@@ -252,6 +258,12 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
 
 		if (dev_priv-swaps_pending  0)
 			drm_locked_tasklet(dev, i915_vblank_tasklet);
+		I915_WRITE(I915REG_PIPEASTAT,
+			pipea_stats|I915_VBLANK_INTERRUPT_ENABLE|
+			I915_VBLANK_CLEAR);
+		I915_WRITE(I915REG_PIPEBSTAT,
+			pipeb_stats|I915_VBLANK_INTERRUPT_ENABLE|
+			I915_VBLANK_CLEAR);
 	}
 
 	return IRQ_HANDLED;
-- 
1.5.3.1



Re: [PATCH] [AGPGART] intel_agp: fix stolen mem range on G33

2007-09-11 Thread Dave Airlie


Subject: [PATCH] [AGPGART] intel_agp: fix stolen mem range on G33

G33 GTT stolen memory is below graphics data
stolen memory and be seperate, so don't subtract
it in stolen mem counting.

Signed-off-by: Zhenyu Wang [EMAIL PROTECTED]


Andrew I meant to upstream these for 2.6.23 but travelling is still in 
progress, so if you could send them to Linus...


Acked-by: Dave Airlie [EMAIL PROTECTED]



---
 drivers/char/agp/intel-agp.c |5 +
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 2c9ca2c..581f922 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -506,6 +506,11 @@ static void intel_i830_init_gtt_entries(void)
break;
}
} else {
+   /* G33's GTT stolen memory is separate from gfx data
+* stolen memory.
+*/
+   if (IS_G33)
+   size = 0;
switch (gmch_ctrl  I830_GMCH_GMS_MASK) {
case I855_GMCH_GMS_STOLEN_1M:
gtt_entries = MB(1) - KB(size);


When looking at a fix I need to work out whether it might be needed in
2.6.23.  But your description of this patch didn't describe the problem
which it fixes in a way which allows me to decide this.




-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] [AGPGART] intel_agp: fix GTT map size on G33

2007-09-11 Thread Dave Airlie

Subject: [PATCH] [AGPGART] intel_agp: fix GTT map size on G33

G33 has 1MB GTT table range. Fix GTT mapping
in case like 512MB aperture size.

Signed-off-by: Zhenyu Wang [EMAIL PROTECTED]


Acked-by: Dave Airlie [EMAIL PROTECTED]


Ditto.  What happens if this patch isn't in 2.6.23?  And is it applicable to
and needed in 2.6.22?


It's support for new hardware enablement, so maybe stable requires it, but 
I'm not sure how widespread this hw is yet..


Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: X freezes kernel during exit [Re: 2.6.23-rc3-mm1]

2007-09-11 Thread Dave Airlie


What other info needed?


I'm seeing this on my 965gm chipset with Andi's clflush patches on x86 
32-bit, it looks like an interaction with the agp code which does a big 
bunch of change page attr to allocate the AGP aperture backed memory..


I think the code might have worked in a previous iteration on my 64-bit 
965G machine at home but I'm on the road and won't be back anytime soon..


I'll see what I can figure out from my laptop...

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Problem: screen partially garbled in i830m (regression)

2007-09-12 Thread Dave Airlie


I sent this mail to David Airlie two weeks ago but I haven't gotten a
reply so far, that's why I'm posting to LKML this time.  Short summary:
874808c6dd429f7431b906a32c7f78a68e7636af broke intel_agp.ko for me, I'm
getting a garbled screen.


I'm travelling, and I'll try and get Zhenyu to take a look at what he 
changed.. but he is also travelling...


We probably need two defines..

Dave.






Hello David,

with recent kernels, there seems to be a problem with agpgart for my
i830m chipset. The upper part of the screen is garbled, e.g. I can make
out parts of the image that is to be displayed, but it's chopped and
repeated. The box with which I'm having this problem is a not a regular
PC, but a x86-based set top box called S100. It's got a fanless Celeron
733 MHz and 128M RAM and it's somewhat popular due to its cheapness.
Just makes a nice living-room computer :)  I'll attach the output of
lspci -vvv.
FYI, I'm not using the official X.org driver but its IEGD counterpart.
Unfortunately, the S100 comes with a TV-out encoder chip that's only
supported by their closed source driver. Since the kernel is not tainted
by that, it shouldn't be a problem - similar problems also occur with
X.org drivers.

With working kernels, I'd get the following messages in dmesg:

--snip--
[   40.188375] agpgart: Detected an Intel 830M Chipset.
[   40.188741] agpgart: Detected 380K stolen memory.
[   40.199908] agpgart: AGP aperture is 128M @ 0xf000
--snap--

A broken kernel will result in the following messages:

--snip--
Jul 25 16:29:42 mythbuntu-alpha2 kernel: [   44.941473] Linux agpgart
interface v0.102 (c) Dave Jones
Jul 25 16:29:42 mythbuntu-alpha2 kernel: [   44.957021] agpgart:
Detected an Intel 830M Chipset.
Jul 25 16:29:42 mythbuntu-alpha2 kernel: [   44.957605] agpgart: No
pre-allocated video memory detected.
Jul 25 16:29:42 mythbuntu-alpha2 kernel: [   44.968696] agpgart: AGP
aperture is 128M @ 0xf000
--snap--

I used git-bisect to narrow down change that introduced this problem and
came up with this:

--snip--

874808c6dd429f7431b906a32c7f78a68e7636af is first bad commit
commit 874808c6dd429f7431b906a32c7f78a68e7636af
Author: Wang Zhenyu [EMAIL PROTECTED]
Date:   Wed Jun 6 11:16:25 2007 +0800

 [AGPGART] intel_agp: Add support for G33, Q33 and Q35 chipsets

 This patch adds pci ids for G33, Q33 and Q35 chips, and update with new
 GTT size and stolen mem size detect method on these chips.

 Signed-off-by: Wang Zhenyu [EMAIL PROTECTED]
 Signed-off-by: Dave Jones [EMAIL PROTECTED]

:04 04 39b18b6860f139cb28a80020dc9347314753e16d
da24fb8672087cdfe6509cd1d4cb189534f887d6 M  drivers
--snap--

Particulary, there's a change to agp.h:

--snip--
-#define I830_GMCH_GMS_MASK  0x70
+#define I830_GMCH_GMS_MASK  0xF0
--snap--

I reverted this change in my git tree and I'm now running
2.6.23-rc3-gb377fd39-dirty without any distortion at all. Do you think
this can be fixed? I'll be glad to provide more Information. Thank you
for your time!


Regards,

Michael






-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Problem: screen partially garbled in i830m (regression)

2007-09-12 Thread Dave Airlie

reply so far, that's why I'm posting to LKML this time.  Short summary:
874808c6dd429f7431b906a32c7f78a68e7636af broke intel_agp.ko for me, I'm
getting a garbled screen.


Can you try the attached patch?

Dave.From 56e5b226de1406812bbe739caad0d2a93f8c596d Mon Sep 17 00:00:00 2001
From: Dave Airlie [EMAIL PROTECTED]
Date: Thu, 13 Sep 2007 00:08:01 +1000
Subject: [PATCH] intel-agp: Fix i830 mask variable that changed with G33 support

The mask on i830 should be 0x70 always, later chips 0xF0 should be okay.

Signed-off-by: Dave Airlie [EMAIL PROTECTED]
---
 drivers/char/agp/agp.h   |3 ++-
 drivers/char/agp/intel-agp.c |2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h
index 35ab1a9..8955e7f 100644
--- a/drivers/char/agp/agp.h
+++ b/drivers/char/agp/agp.h
@@ -176,7 +176,7 @@ struct agp_bridge_data {
 #define I830_GMCH_MEM_MASK		0x1
 #define I830_GMCH_MEM_64M		0x1
 #define I830_GMCH_MEM_128M		0
-#define I830_GMCH_GMS_MASK		0xF0
+#define I830_GMCH_GMS_MASK		0x70
 #define I830_GMCH_GMS_DISABLED		0x00
 #define I830_GMCH_GMS_LOCAL		0x10
 #define I830_GMCH_GMS_STOLEN_512	0x20
@@ -190,6 +190,7 @@ struct agp_bridge_data {
 #define INTEL_I830_ERRSTS	0x92
 
 /* Intel 855GM/852GM registers */
+#define I855_GMCH_GMS_MASK		0xF0
 #define I855_GMCH_GMS_STOLEN_0M		0x0
 #define I855_GMCH_GMS_STOLEN_1M		(0x1  4)
 #define I855_GMCH_GMS_STOLEN_4M		(0x2  4)
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 2c9ca2c..c15f5d2 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -506,7 +506,7 @@ static void intel_i830_init_gtt_entries(void)
 			break;
 		}
 	} else {
-		switch (gmch_ctrl  I830_GMCH_GMS_MASK) {
+		switch (gmch_ctrl  I855_GMCH_GMS_MASK) {
 		case I855_GMCH_GMS_STOLEN_1M:
 			gtt_entries = MB(1) - KB(size);
 			break;
-- 
1.5.2.5



Re: 2.6.23-rc1 regression: mm: fix fault vs invalidate race for linear mappings

2007-07-24 Thread Dave Airlie


Is this with a binary-only module? We saw an issue with that in SLES9
where the module is returning a locked page from its nopage handler
when it isn't really supposed to. It might be fixed in latest drivers,
have you tried them?


Doesn't sound like it he mentions radeon drm module which is open...

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch] agp: don't lock pages

2007-07-25 Thread Dave Airlie


On Thu, Jul 26, 2007 at 07:26:53AM +1000, Benjamin Herrenschmidt wrote:
 On Wed, 2007-07-25 at 13:19 +0200, Nick Piggin wrote:
  Hi,
 
  Does this patch solve the X problem? Does anyone see anything wrong
  with it or know why agp was locking the pages?

 We need to do a little bit of auditing here, but I suspect it will turn
 out all right. I think the reason it locked them in the first place was
 to avoid AGP pages mapped into process space from being swapped out.

 I think that should be taken care of by appropriate vma flags nowadays,
 but we need to double check. It also might have been a way around dodgy
 refcounting at one point but I think we got that right nowadays (I
 remember fixing issues in that area when we removed PageReserved from
 those pages back then).

Yeah I had a bit of a look around, and it seems OK (but would
appreciate an ack from someone who knows the code).

These pages will never get seen by page reclaim, so we're OK
there. There is a get_page before the SetPageLocked and a put_page
right before the unlock_page, so refcounting should not be broken
if it wasn't already: note that the lock_page doesn't pin a
reference on a page in general -- we can use it as such for pagecache
(although it isn't very clean), because the lock pins the page in
pagecache and the pagecache holds a ref.

Anyway, if Dave or David can take a look, that would be appreciated.
We'll need this for 2.6.23.


I talked with Ben earlier and I can't see anything inherently wrong
with removing the lock_page, I assume it was put there to stop things
getting swapped but if the get/put does that then I'd be happy to
remove it.

I'm just a bit confused how this didn't get picked up in -mm at all.

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [git pull] AGP fixes for 2.6.23-rc1

2007-07-26 Thread Dave Airlie

On Fri, 27 Jul 2007, Dave Airlie wrote:



Hi Linus,

Please pull the 'agp-patches' branch from
git://master.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6.git agp-patches


and of course I find the old version of my script..

that should be
ssh://master.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6.git agp-patches

Dave.



It contains one very important fix from Nick for AGP hangs with the 
nopage/pfn/flush stuff.. it also contains some minor docs changes and one 
coverity fix.


Dave.

Documentation/kernel-parameters.txt |7 +++
drivers/char/agp/Kconfig|2 +-
drivers/char/agp/ati-agp.c  |9 ++---
drivers/char/agp/generic.c  |2 --
drivers/char/agp/intel-agp.c|   19 ---
drivers/char/agp/sgi-agp.c  |1 -
6 files changed, 22 insertions(+), 18 deletions(-)

commit f191f144079b0083c6fa7d01a4acbd7263fb5032
Author: Alan Hourihane [EMAIL PROTECTED]
Date:   Fri Jul 27 10:56:43 2007 +1000

   agp: AMD AGP is used on UP1100  UP1500 alpha boxen

   Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit dde4787642ee3cb85aef80bdade04b6f8ddc3df8
Author: Zhenyu Wang [EMAIL PROTECTED]
Date:   Thu Jul 26 09:18:09 2007 +0800

   intel_agp: really fix 945/965GME

   Fix some missing places to check with device id info, which
   should probe the device gart correctly.

   Signed-off-by: Wang Zhenyu [EMAIL PROTECTED]
   Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit a51b34593f691a0837d752a1394dcee19483c607
Author: Nick Piggin [EMAIL PROTECTED]
Date:   Wed Jul 25 13:19:22 2007 +0200

   agp: don't lock pages

   AGP should not need to lock pages. They are not protecting any race
   because there is no lock_page calls, only SetPageLocked.

   This is causing hangs with d00806b183152af6d24f46f0c33f14162ca1262a.

   Signed-off-by: Nick Piggin [EMAIL PROTECTED]
   Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit c99c108ac362f5cc37f79fad7e9897bd9d033bcc
Author: Chuck Ebbert [EMAIL PROTECTED]
Date:   Fri Jul 27 10:46:20 2007 +1000

   AGP: document boot options

   Add documentation for AGP boot options.

   Signed-off-by: Chuck Ebbert [EMAIL PROTECTED]
   Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 190644e180794208bc638179f4d5940fe419bf9c
Author: Jesper Juhl [EMAIL PROTECTED]
Date:   Sat Jul 21 17:39:11 2007 +0200

   Fix use after free / double free bug in ati_create_gatt_pages / 
ati_free_gatt_pages


   Hi,

   Coverity spotted a use after free bug in
   drivers/char/agp/ati-agp.c::ati_create_gatt_pages().

   The same one that was in
 drivers/char/agp/amd-k7-agp.c::amd_create_gatt_pages()

   The problem is this:
  If entry = kzalloc(sizeof(struct ati_page_map), GFP_KERNEL);
   fails, then there's a loop in the function to free all entries
   allocated so far and break out of the allocation loop. That in itself
   is pretty sane, but then the (now freed) 'tables' is assigned to
   ati_generic_private.gatt_pages and 'retval' is set to -ENOMEM which
   causes ati_free_gatt_pages(); to be called at the end of the function.
   The problem with this is that ati_free_gatt_pages() will then loop
   'ati_generic_private.num_tables' times and try to free each entry in
   tables[] - this is bad since tables has already been freed and
   furthermore it will call kfree(tables) at the end - a double free.

   This patch removes the freeing loop in ati_create_gatt_pages() and
   instead relies entirely on the call to ati_free_gatt_pages() to free
   everything we allocated in case of an error. It also sets
   ati_generic_private.num_tables to the actual number of entries
   allocated instead of just using the value passed in from the caller -
   this ensures that ati_free_gatt_pages() will only attempt to free
   stuff that was actually allocated.

   Note: I'm in no way intimate with this code and I have no way to
   actually test this patch (besides compile test it), so while I've
   tried to be careful in reading the code and make sure the patch
   does the right thing an ACK from someone who actually knows the
   code in-depth would be very much appreciated.

   Signed-off-by: Jesper Juhl [EMAIL PROTECTED]
   Signed-off-by: Dave Airlie [EMAIL PROTECTED]




--
David Airlie, Software Engineer
http://www.skynet.ie/~airlied / airlied at skynet.ie
Linux kernel - DRI, VAX / pam_smb / ILUG

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] AGP fixes for 2.6.23-rc1

2007-07-26 Thread Dave Airlie


Hi Linus,

Please pull the 'agp-patches' branch from
git://master.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6.git agp-patches

It contains one very important fix from Nick for AGP hangs with the 
nopage/pfn/flush stuff.. it also contains some minor docs changes and one 
coverity fix.


Dave.

 Documentation/kernel-parameters.txt |7 +++
 drivers/char/agp/Kconfig|2 +-
 drivers/char/agp/ati-agp.c  |9 ++---
 drivers/char/agp/generic.c  |2 --
 drivers/char/agp/intel-agp.c|   19 ---
 drivers/char/agp/sgi-agp.c  |1 -
 6 files changed, 22 insertions(+), 18 deletions(-)

commit f191f144079b0083c6fa7d01a4acbd7263fb5032
Author: Alan Hourihane [EMAIL PROTECTED]
Date:   Fri Jul 27 10:56:43 2007 +1000

agp: AMD AGP is used on UP1100  UP1500 alpha boxen

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit dde4787642ee3cb85aef80bdade04b6f8ddc3df8
Author: Zhenyu Wang [EMAIL PROTECTED]
Date:   Thu Jul 26 09:18:09 2007 +0800

intel_agp: really fix 945/965GME

Fix some missing places to check with device id info, which
should probe the device gart correctly.

Signed-off-by: Wang Zhenyu [EMAIL PROTECTED]
Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit a51b34593f691a0837d752a1394dcee19483c607
Author: Nick Piggin [EMAIL PROTECTED]
Date:   Wed Jul 25 13:19:22 2007 +0200

agp: don't lock pages

AGP should not need to lock pages. They are not protecting any race
because there is no lock_page calls, only SetPageLocked.

This is causing hangs with d00806b183152af6d24f46f0c33f14162ca1262a.

Signed-off-by: Nick Piggin [EMAIL PROTECTED]
Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit c99c108ac362f5cc37f79fad7e9897bd9d033bcc
Author: Chuck Ebbert [EMAIL PROTECTED]
Date:   Fri Jul 27 10:46:20 2007 +1000

AGP: document boot options

Add documentation for AGP boot options.

Signed-off-by: Chuck Ebbert [EMAIL PROTECTED]
Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 190644e180794208bc638179f4d5940fe419bf9c
Author: Jesper Juhl [EMAIL PROTECTED]
Date:   Sat Jul 21 17:39:11 2007 +0200

Fix use after free / double free bug in ati_create_gatt_pages / 
ati_free_gatt_pages

Hi,

Coverity spotted a use after free bug in
drivers/char/agp/ati-agp.c::ati_create_gatt_pages().

The same one that was in
  drivers/char/agp/amd-k7-agp.c::amd_create_gatt_pages()

The problem is this:
   If entry = kzalloc(sizeof(struct ati_page_map), GFP_KERNEL);
fails, then there's a loop in the function to free all entries
allocated so far and break out of the allocation loop. That in itself
is pretty sane, but then the (now freed) 'tables' is assigned to
ati_generic_private.gatt_pages and 'retval' is set to -ENOMEM which
causes ati_free_gatt_pages(); to be called at the end of the function.
The problem with this is that ati_free_gatt_pages() will then loop
'ati_generic_private.num_tables' times and try to free each entry in
tables[] - this is bad since tables has already been freed and
furthermore it will call kfree(tables) at the end - a double free.

This patch removes the freeing loop in ati_create_gatt_pages() and
instead relies entirely on the call to ati_free_gatt_pages() to free
everything we allocated in case of an error. It also sets
ati_generic_private.num_tables to the actual number of entries
allocated instead of just using the value passed in from the caller -
this ensures that ati_free_gatt_pages() will only attempt to free
stuff that was actually allocated.

Note: I'm in no way intimate with this code and I have no way to
actually test this patch (besides compile test it), so while I've
tried to be careful in reading the code and make sure the patch
does the right thing an ACK from someone who actually knows the
code in-depth would be very much appreciated.

Signed-off-by: Jesper Juhl [EMAIL PROTECTED]
Signed-off-by: Dave Airlie [EMAIL PROTECTED]

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [git pull] AGP fixes for 2.6.23-rc1

2007-07-27 Thread Dave Airlie


It would really be nice to actually see the patches that go along with this. 
Otherwise you are not giving outside reviewers any chance at all to evaluate 
these fixes.


Or were they posted on LKML, and I missed them?


In this case I think I picked up all of these patches from LKML by 
searching for agp in my gmail a/c, maybe one of them didn't go via lkml 
(intel pci ids)


Thanks for the script,
Dave.

--
David Airlie, Software Engineer
http://www.skynet.ie/~airlied / airlied at skynet.ie
Linux kernel - DRI, VAX / pam_smb / ILUG

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: What does drm do with signals?

2007-08-25 Thread Dave Airlie
On 8/24/07, Oleg Nesterov [EMAIL PROTECTED] wrote:
 Could someone please explain why do we need block_all_signals() ?

 I can't understand what was the intended behaviour, but anyway
 I suspect it doesn't work as expected.

http://dri.sourceforge.net/doc/drm_low_level.html

Section 4.1 explains the intent...

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] drm patches for 2.6.23-rc4

2007-08-25 Thread Dave Airlie


Hi Linus,

Please pull the 'drm-patches' branch from
git://master.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git drm-patches

This just contains a pci id, ioremap balancing and dead code removal 
patches.


Dave.

 drivers/char/drm/drm_bufs.c|   13 +++--
 drivers/char/drm/via_dmablit.c |2 +-
 2 files changed, 8 insertions(+), 7 deletions(-)

commit 0769d39c993145754852b517ddd9c11586f0a014
Author: Scott Thompson postfail at hushmail.com
Date:   Sat Aug 25 18:17:49 2007 +1000

drm: ioremap return value checks

Signed-off-by: Scott Thompson postfail at hushmail.com
Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 22c806c23fe17f9c744d19edfe650cfd6496bc2a
Author: Simon Farnsworth [EMAIL PROTECTED]
Date:   Mon Jul 23 18:32:01 2007 +1000

drm/via: Fix dmablit when blit queue is full

fd.o bug 11542

Acked-by: Thomas Hellstrom
Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 7ea4d4bd5e21380f028c3a6e2500655090a3f932
Author: Adrian Bunk [EMAIL PROTECTED]
Date:   Mon Jul 23 10:00:51 2007 +0200

drm_rmmap_ioctl(): remove dead code

This patch removes some obviously dead code spotted by the Coverity
checker.

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]
Signed-off-by: Dave Airlie [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] agp patches for 2.6.23-rc4

2007-08-25 Thread Dave Airlie


Hi Linus,

Please pull the 'agp-patches' branch from
git://master.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6.git agp-patches

actually this patch is a pci id, ioremap checks and a coverity fix... the 
drm patch has no pci id change..


Dave.

 drivers/char/agp/amd-k7-agp.c   |2 ++
 drivers/char/agp/ati-agp.c  |3 +++
 drivers/char/agp/efficeon-agp.c |2 ++
 drivers/char/agp/hp-agp.c   |1 +
 drivers/char/agp/i460-agp.c |4 
 drivers/char/agp/intel-agp.c|   14 +-
 drivers/char/agp/nvidia-agp.c   |3 +++
 drivers/char/agp/via-agp.c  |5 +
 include/linux/pci_ids.h |1 +
 9 files changed, 30 insertions(+), 5 deletions(-)

commit 5bdbc7dc2c07d507b41bffdadc2c8cc13b2d4326
Author: Scott Thompson postfail at hushmail.com
Date:   Sat Aug 25 18:14:00 2007 +1000

agp: balance ioremap checks

patchset against 2.6.23-rc3.
corrects missing ioremap return checks and balancing on iounmap calls, 
integrated changes per list
recommendations on the original set of patches..

Signed-off-by: Scott Thompson postfail at hushmail.com
Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 32ddef98f232585f20bc8bdb891029a6a5f633d0
Author: Xavier Bachelot [EMAIL PROTECTED]
Date:   Sat Aug 25 18:10:52 2007 +1000

agp: Add device id for P4M900 to via-agp module

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit db7f3ded8d42c60b0d0a4f71d621e105790b872b
Author: Jesper Juhl [EMAIL PROTECTED]
Date:   Sat Aug 4 20:30:58 2007 +0200

efficeon-agp leaks 'struct agp_bridge_data' in error paths of 
agp_efficeon_probe()

(This is a resend of a patch originally submitted on 24-Jul-2007 00:14)

Ok, this is something the coverity checker found (CID: 1813).
I'm not at all intimate with this code, so I'm not sure if this
attempt at a fix is correct (but at least it compiles).

Please look it over and NACK if bad or merge if good ;-)

Signed-off-by: Jesper Juhl [EMAIL PROTECTED]
Signed-off-by: Dave Airlie [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


resume failing on ATA controller

2007-08-27 Thread Dave Airlie
Hi,

I've got an HP 2510p with a 965 mobile chipset and ICH8, lspci is at

http://people.freedesktop.org/~airlied/hp2510p/hp-lspci-vv.txt

Resume is failing on the hard disk resume by the looks of it (no video
to prove it..) but I've rmmod nearly everything and my network
interface comes back and I can ping it but anything that tries to
access the disk looks stuck...

I also know someone running the same laptop using drivers/ide drivers
whose suspend/resume works properly

I'm running the latest Fedora rawhide kernel based on -rc3-git7

http://people.freedesktop.org/~airlied/hp2510p/ata_dmesg.txt

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 00/23] drm: introduce drm_zalloc

2007-08-28 Thread Dave Airlie

On Tue, 28 Aug 2007, Christoph Hellwig wrote:


On Mon, Aug 27, 2007 at 10:57:50PM +0200, [EMAIL PROTECTED] wrote:

Hello,

As there are many places in drm code where drm_alloc + memset is used
this patch series introduces drm_zalloc and also makes use of drm_calloc where
needed. Most of these patches save some bytes so the benefit is a few kB saved
(gcc 4.1.2) with patch applied. Also some small (style, etc.) things are fixed.
This patch series does the conversion drm tree-wide. All patches were compile
tested.


Please just convert it to plain kzalloc/kcalloc and kill these utterly useless
wrappers instead.




The wrappers aren't useless the drm alloc/free passes in a memory space 
for debugging purposes so we can track memory abuse when developing,


but drm_zalloc shouldjust alias to drm_calloc really..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 00/23] drm: introduce drm_zalloc

2007-08-30 Thread Dave Airlie


Note the slab has a memory tracking feature that accounts memory to
callers of the allocator.  IF that's not enough for you please help
improving the common code instead of inventing your own.


Christoph that code was written over 6-7 years ago, feel free to provide a 
patch for it to use the slab allocator, we only turn this code on though 
when developing new drivers, I don't think it ever gets used outside of 
that.. we don't need the overhead of the memory tracking in normal use..


Please stop implying that all the code in the drm is magically new and 
that we should be reusing kernel infrastructure that wasn't even written 
when the code first appeared.. or provide patches...


Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


uncached page allocator

2007-08-19 Thread Dave Airlie
Hi all,

I've started doing some work with using the new DRM memory manager
from TG for pixmaps in the X server using Intel 9xx series hardware.

The intel hardware pretty much requires pages to be uncached for the
GPU to access them. It can use cached memory for some operations but
it isn't very useful and my attempts to use it ended in a lot of
crashiness..

Now one of the major usage patterns for pixmaps is

allocate pixmap
copy data into pixmap
use pixmap from hardware
free pixmap

with the current memory manager + updated change_page_attr (to use
clflush when we have it) fixes from Andi Kleen, it operates something
like this

allocate pixmap gets cached memory
copy data into the pixmap
pre-use from hardware we flush the cache lines and tlb
use the pixmap in hardware
pre-free we need to set the page back to cached so we flush the tlb
free the memory.

The other path is if we don't want to use the memory cached ever is just
allocate pixmap
flush cache lines/tlb
use uncached from CPU
use uncached from GPU
pre-free set the page back to cached, flush the TLB
free the page

Now the big issue here on SMP is that the cache and/or tlb flushes
require IPIs and they are very noticeable on the profiles,

So after all that I'd like to have some sort of uncached page list I
can allocate pages from, so with frequent pixmap creation/destruction
I don't spend a lot of time in the cache flushing routines and avoid
the IPI in particular.

The options I can sorta see roughly are:
1. the DRM just allocates a bunch of uncached pages and manages a
cache of them for interacting with the hardware, this sounds wrong and
we run into how do we correctly size the pool issues.

2. (Is this idea crazy??) We modify the VM somehow so we have an
uncached list, when we first allocate pages with the GFP_UNCACHED they
get migrated to the uncached zone and the pages use a page flag to say
they are uncached. Then the DRM just re-uses things from that list. If
later we end up with memory pressure, the free pages on the uncached
list could be migrated back to the normal page lists by modifying the
page attributes and flushing the tlb

Any other ideas and suggestions?

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: uncached page allocator

2007-08-21 Thread Dave Airlie
 Blame intel ;)

  Any other ideas and suggestions?

 Without knowing exactly what you are doing:

 - Copies to uncached memory are very expensive on an x86 processor
 (so it might be faster not to write and flush)
 - Its not clear from your description how intelligent your transfer
 system is.

It is still possible to change the transfer system, but it should be
intelligent enough or possible to make it more intelligent..

I also realise I need PAT + write combining but I believe this problem
is othogonal...


 I'd expect for example that the process was something like

 Parse pending commands until either
 1. Queue empties
 2. A time target passes

 For each command we need to shove a pixmap over add it
 to the buffer to transfer

 Do a single CLFLUSH and maybe IPI

 Fire up the command queue

 Keep the buffers hanging around until there is memory pressure
 if we may reuse that pixmap

 Can you clarify that ?

So at the moment a pixmap maps directly to a kernel buffer object
which is a bunch of pages that get faulted in on the CPU or allocated
when the buffer is to be used by the GPU. So when a pixmap is created
a buffer object is created, when a pixmap is destroyed a buffer object
is destroyed. Perhaps I can cache a bunch of buffer objects in
userspace for re-use as pixmaps but I'm not really sure that will
scale too well.

When X wishes the GPU to access a buffer (pixmap), it calls into the
kernel with a single ioctl with a list of all buffers the GPU is going
to access along with a buffer containing the command to do the access,
now at the moment, when each of those buffers is bound into the GART
for the first time the system does a change_page_attr for each page
and calls the global flush[1].

Now if a buffer is bound into the GART and gets accessed from the CPU
later again (software fallback) we have the choice of taking it back
out of the GART and letting the nopfn call fault back in the pages
uncached or we can flush the tlb and bring them back in cached. We are
hoping to avoid software fallbacks on the hardware platforms we want
to work on as much as possible.

Finally when a buffer is destroyed, the pages are released back to the
system, so of course the pages are set back to cached and we need
another tlb/cache flush per pixmap buffer destructor.

So you can see why some sort of uncached+writecombined page cache
would be useful, I could just allocate a bunch of pages at startup as
uncached+writecombined, and allocate pixmaps from them and when I
bind/free the pixmap I don't need the flush at all, now I'd really
like this to be part of the VM so that under memory pressure it can
just take the pages I've got in my cache back and after flushing turn
them back into cached pages, the other option is for the DRM to do
this on its own and penalise the whole system.

[1]. (this is one inefficiency in that if multiple buffers are being
bound in for the first time it'll flush for each of them, I'm trying
to get rid of this inefficiency but I may need to tweak the order of
things as at the moment, it crashes hard if I tried to leave the
cache/tlb flush until later.)

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: uncached page allocator

2007-08-21 Thread Dave Airlie

 Write-combining access seems the correct thing here, followed by a
 wmb(). Uncached writing would be horrendously slow.

 [snip]
  So after all that I'd like to have some sort of uncached page list I
  can allocate pages from

 This is exactly what Intel's PAT mechanism exists for - just mark the
 desired access type (index) on the pages you've been allocated.

 It's documented in the Intel Architecture Software Design manuals, but
 Linux's support is lacking in certain areas [discussions on LKML],
 which a number of developers have been trying to move forward.

 Quite a few significant graphics/HPC etc vendors are forced to use it
 without this complete support, so it would be good to get this
 additional impetus involved...

I'm hoping to pick up the PAT cause at some point soon this stuff is
definitely required to get any use out of modern graphics hardware.

It is slightly orthogonal to the issue I mentioned in that I still
have the problem of allocating uncached memory without the flushing
overheads associated with making pages cached/uncached constantly..

Dave.


 Daniel
 --
 Daniel J Blueman

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


LCA 2008 Kernel Miniconf CFP

2007-10-11 Thread Dave Airlie
Call For Presentations
==

We are happy to announce that the Call for Presentations for LCA
Kernel Miniconf is now open.

LCA Kernel Miniconf is part of linux.conf.au, the annual
Australian Linux  open source developers' conference.

When: 29th January 2008

Where: Melbourne University, Linux.conf.au

http://miniconf.mel8ourne.org/wiki/index.php?title=Kernel

The current schedule gives us 6 slots.

One slot is reserved for 5 minute lightning talks - this gives us 6-8
lightning talks, where people working on kernel project and give a
quick spiel on their current project. All these slots are currently
open, and no slides should be used, just spiel.

The other 5 slots are open for suggestion.

Last year it all worked out pretty well with the balance of techy vs
newbie stuff. I'd like to say have one or two general kernel topics
suitable for a range of people and one or two talks aimed more
in-depth or technically.

I'd definitely like to bring back the Suspend/resume workshop which
was fun (as the guy who got his laptop debugged by Linus/akpm
personally will atest) and depending on who attends we might try for
the kernel maintainers panel again.

Please note that in order to give a presentation you must be signed up
for the main conference. We also cannot provide any travel assistance
for speakers at the kernel mini conference. However I'm sure you might
be able to convince your company that going to LCA might be more
useful if you do get to speak at it :-)

So I'll leave the CFP open for a month or so, please mail
[EMAIL PROTECTED] with your suggestions and proposals.

About linux.conf.au linux.conf.au (http://linux.conf.au/) is
Australia's annual technical conference about Free Software. Fun,
informal and seriously technical, linux.conf.au draws together Free
and Open Source Software developers from across the world. It will be
held from January 28th to February 2nd, 2008 at The University of
Melbourne.

Dave and Matthew Wilcox (who I haven't ran this by yet :-)
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.23(.1) Regression? i915 oopses and panics

2007-10-14 Thread Dave Airlie
On 10/14/07, Thomas Bächler [EMAIL PROTECTED] wrote:
 I first discovered this problem when updating to 2.6.23 final on x86_64.
 When I launched google earth, the kernel paniced. When I tried to
 reproduce, it oopsed instead of panicing.

 dri/drm seems to work generally, as I am running beryl without trouble,
 so far I could only reproduce the problem with google earth.

 I have been using 2.6.23-rc6 for a while before, but I cannot tell if
 the problem already occured there. I am sure though that it wasn't there
 on 2.6.22(.Y). If anyone can tell me which commit might have caused
 this, I can revert it and test though.

lets start with:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=e4a7b1d1d90d202a030688ab5b177c3c0f15ee3e

and work from there..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.23(.1) Regression? i915 oopses and panics

2007-10-14 Thread Dave Airlie
On 10/14/07, Thomas Bächler [EMAIL PROTECTED] wrote:
 Dave Airlie schrieb:
  lets start with:
  http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=e4a7b1d1d90d202a030688ab5b177c3c0f15ee3e
 
  and work from there..

 I'm sorry, I forgot to mention that: As I _thought_ it had worked with
 rc6, I already found that commit. I reverted it and got a panic again
 (no trace, as I was in X), so this one doesn't seem to cause the problem.


Okay I've spotted a potential bug that might lay hidden, try the
attached patch to see if it helps..

Dave.
From 7c63ae4527355d8f52dc285a9163a5947a61572e Mon Sep 17 00:00:00 2001
From: Dave Airlie [EMAIL PROTECTED]
Date: Sun, 14 Oct 2007 21:21:30 +1000
Subject: [PATCH] i915: fix vbl swap allocation size.

Oops...

Signed-off-by: Dave Airlie [EMAIL PROTECTED]
---
 drivers/char/drm/i915_irq.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/char/drm/i915_irq.c b/drivers/char/drm/i915_irq.c
index bb8e9e9..94d638e 100644
--- a/drivers/char/drm/i915_irq.c
+++ b/drivers/char/drm/i915_irq.c
@@ -553,7 +553,7 @@ int i915_vblank_swap(DRM_IOCTL_ARGS)
 		return DRM_ERR(EBUSY);
 	}
 
-	vbl_swap = drm_calloc(1, sizeof(vbl_swap), DRM_MEM_DRIVER);
+	vbl_swap = drm_calloc(1, sizeof(*vbl_swap), DRM_MEM_DRIVER);
 
 	if (!vbl_swap) {
 		DRM_ERROR(Failed to allocate memory to queue swap\n);
-- 
1.5.2.4



Re: 2.6.23(.1) Regression? i915 oopses and panics

2007-10-14 Thread Dave Airlie
On 10/14/07, Thomas Bächler [EMAIL PROTECTED] wrote:
 Dave Airlie schrieb:
  I'm sorry, I forgot to mention that: As I _thought_ it had worked with
  rc6, I already found that commit. I reverted it and got a panic again
  (no trace, as I was in X), so this one doesn't seem to cause the problem.
 
 
  Okay I've spotted a potential bug that might lay hidden, try the
  attached patch to see if it helps..

 I applied the patch, compiled i915.ko, rmmoded the old module, insmoded
 the new one and started X. The issue seems to be gone, googleearth
 starts again without any messages to syslog, so no oops and no panic.

 Will you submit this patch to the stable team?

As soon as I get it upstream into Linus's tree I'll forward it on to
the stable guys

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH]: drm: cleanup DRM_DEBUG() parameters

2007-10-14 Thread Dave Airlie
On 10/14/07, Németh Márton [EMAIL PROTECTED] wrote:
 From: Márton Németh [EMAIL PROTECTED]

 As DRM_DEBUG macro already prints out the __FUNCTION__ string (see
 drivers/char/drm/drmP.h), it is not worth doing this again. At some
 other places the ending \n was added.

 Signed-off-by: Márton Németh [EMAIL PROTECTED]

Hi Márton,

Could you rebase the patch against the drm-mm tree or against -mm
kernel? as it conflicts with the stuff I'm about to push to Linus..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] drm patches for 2.6.24-rc1

2007-10-14 Thread Dave Airlie


Hi Linus,

This contains a major macro removal and ioctl related usercopy cleanups, 
it also fixes a bug in the intel interrupt code with a dodgy calloc size.


Please pull the 'drm-patches' branch from
ssh://master.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git drm-patches

Dave.

 drivers/char/drm/drm.h|   20 +-
 drivers/char/drm/drmP.h   |  237 +++--
 drivers/char/drm/drm_agpsupport.c |  130 +++-
 drivers/char/drm/drm_auth.c   |   48 ++--
 drivers/char/drm/drm_bufs.c   |  203 ---
 drivers/char/drm/drm_context.c|  177 --
 drivers/char/drm/drm_dma.c|   11 +-
 drivers/char/drm/drm_drawable.c   |   67 ++---
 drivers/char/drm/drm_drv.c|  186 ++-
 drivers/char/drm/drm_fops.c   |   34 +-
 drivers/char/drm/drm_ioc32.c  |2 +-
 drivers/char/drm/drm_ioctl.c  |  196 +---
 drivers/char/drm/drm_irq.c|   98 +++
 drivers/char/drm/drm_lock.c   |   75 ++---
 drivers/char/drm/drm_os_linux.h   |   10 -
 drivers/char/drm/drm_pciids.h |2 -
 drivers/char/drm/drm_scatter.c|   48 +--
 drivers/char/drm/drm_vm.c |4 +-
 drivers/char/drm/i810_dma.c   |  312 ++
 drivers/char/drm/i810_drm.h   |5 -
 drivers/char/drm/i810_drv.h   |9 +-
 drivers/char/drm/i830_dma.c   |  210 +---
 drivers/char/drm/i830_drv.h   |   15 +-
 drivers/char/drm/i830_irq.c   |   30 +--
 drivers/char/drm/i915_dma.c   |  214 ++---
 drivers/char/drm/i915_drv.h   |   36 ++-
 drivers/char/drm/i915_irq.c   |  128 +++
 drivers/char/drm/i915_mem.c   |  125 +++
 drivers/char/drm/mga_dma.c|  140 -
 drivers/char/drm/mga_drv.h|   21 +-
 drivers/char/drm/mga_state.c  |  197 +---
 drivers/char/drm/mga_warp.c   |8 +-
 drivers/char/drm/r128_cce.c   |  138 -
 drivers/char/drm/r128_drm.h   |   18 -
 drivers/char/drm/r128_drv.h   |   23 +-
 drivers/char/drm/r128_state.c |  351 +---
 drivers/char/drm/r300_cmdbuf.c|   68 ++--
 drivers/char/drm/radeon_cp.c  |  146 -
 drivers/char/drm/radeon_drv.h |   43 ++--
 drivers/char/drm/radeon_irq.c |   34 +--
 drivers/char/drm/radeon_mem.c |  108 +++
 drivers/char/drm/radeon_state.c   |  683 +
 drivers/char/drm/savage_bci.c |  145 -
 drivers/char/drm/savage_drv.h |9 +-
 drivers/char/drm/savage_state.c   |  200 ++--
 drivers/char/drm/sis_drv.c|2 +-
 drivers/char/drm/sis_drv.h|5 +-
 drivers/char/drm/sis_mm.c |  112 +++
 drivers/char/drm/via_dma.c|  144 -
 drivers/char/drm/via_dmablit.c|   54 ++--
 drivers/char/drm/via_drv.h|   22 +-
 drivers/char/drm/via_irq.c|   47 ++--
 drivers/char/drm/via_map.c|   14 +-
 drivers/char/drm/via_mm.c |   83 ++---
 drivers/char/drm/via_verifier.c   |8 +-
 drivers/char/drm/via_video.c  |   20 +-
 56 files changed, 2359 insertions(+), 3116 deletions(-)

commit ace3dff5b7f0bf5a647e60dcd0c0a7d46792f5d9
Author: Xavier Bachelot [EMAIL PROTECTED]
Date:   Mon Oct 15 11:09:35 2007 +1000

via invalid device ids removal

0x1106, 0x7204 is unknown and thus is not an IGP/GPU.
0x1106, 0x3304 is K8M800 hostbridge, not an IGP/GPU.
None of them are in drm git tree.

Signed-off-by: Andrew Morton [EMAIL PROTECTED]
Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit eed0f722b3fccb1eb2706b5f484cb511d46f70b8
Author: chaohong guo [EMAIL PROTECTED]
Date:   Mon Oct 15 10:45:49 2007 +1000

radeon: Commit the ring after each partial texture upload blit.

This makes sure each blit starts as early as possible, which may improve
texture upload performance in some cases.

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 54583bf4efda79388fc13163e35c016c8bc5de81
Author: Dave Airlie [EMAIL PROTECTED]
Date:   Sun Oct 14 21:21:30 2007 +1000

i915: fix vbl swap allocation size.

Oops...

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit c153f45f9b7e30289157bba3ff5682291df16caa
Author: Eric Anholt [EMAIL PROTECTED]
Date:   Mon Sep 3 12:06:45 2007 +1000

drm: Replace DRM_IOCTL_ARGS with (dev, data, file_priv) and remove 
DRM_DEVICE.

The data is now in kernel space, copied in/out as appropriate according to t
This results in DRM_COPY_{TO,FROM}_USER going away, and error paths to deal
with those failures.  This also means that XFree86 4.2.0 support for i810 DR
is lost.

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit b589ee5943a9610ebaea6e4e3433f2ae4d812b0b
Author: Dave Airlie [EMAIL PROTECTED]
Date:   Tue Aug 28 15:16:47 2007 +1000

drm: remove XFREE86_VERSION macros.

These are no longer needed or being used.

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 6c340eac0285f3d62406d2d902d0e96fbf2a5dc0
Author: Eric Anholt [EMAIL

[git pull] agp patches for 2.6.24-rc1

2007-10-14 Thread Dave Airlie


Hi Linus,

Please pull from 'agp-patches' branch of
master.kernel.org:/pub/scm/linux/kernel/git/airlied/agp-2.6.git agp-patches

to receive the following updates:

 drivers/char/agp/agp.h|7 +--
 drivers/char/agp/ali-agp.c|   27 ---
 drivers/char/agp/amd-k7-agp.c |9 ++---
 drivers/char/agp/backend.c|   12 
 drivers/char/agp/generic.c|   19 +--
 drivers/char/agp/i460-agp.c   |4 ++--
 drivers/char/agp/intel-agp.c  |6 --
 7 files changed, 50 insertions(+), 34 deletions(-)

Dave Airlie (1):
  AGP fix race condition between unmapping and freeing pages

Jesper Juhl (1):
  fix use after free in amd create gatt pages

diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h
index 8955e7f..b83824c 100644
--- a/drivers/char/agp/agp.h
+++ b/drivers/char/agp/agp.h
@@ -58,6 +58,9 @@ struct gatt_mask {
 * devices this will probably be ignored */
 };

+#define AGP_PAGE_DESTROY_UNMAP 1
+#define AGP_PAGE_DESTROY_FREE 2
+
 struct aper_size_info_8 {
int size;
int num_entries;
@@ -113,7 +116,7 @@ struct agp_bridge_driver {
struct agp_memory *(*alloc_by_type) (size_t, int);
void (*free_by_type)(struct agp_memory *);
void *(*agp_alloc_page)(struct agp_bridge_data *);
-   void (*agp_destroy_page)(void *);
+   void (*agp_destroy_page)(void *, int flags);
 int (*agp_type_to_mask_type) (struct agp_bridge_data *, int);
 };

@@ -267,7 +270,7 @@ int agp_generic_remove_memory(struct agp_memory *mem, off_t 
pg_start, int type);
 struct agp_memory *agp_generic_alloc_by_type(size_t page_count, int type);
 void agp_generic_free_by_type(struct agp_memory *curr);
 void *agp_generic_alloc_page(struct agp_bridge_data *bridge);
-void agp_generic_destroy_page(void *addr);
+void agp_generic_destroy_page(void *addr, int flags);
 void agp_free_key(int key);
 int agp_num_entries(void);
 u32 agp_collect_device_status(struct agp_bridge_data *bridge, u32 mode, u32 
command);
diff --git a/drivers/char/agp/ali-agp.c b/drivers/char/agp/ali-agp.c
index 4941ddb..aa5ddb7 100644
--- a/drivers/char/agp/ali-agp.c
+++ b/drivers/char/agp/ali-agp.c
@@ -156,29 +156,34 @@ static void *m1541_alloc_page(struct agp_bridge_data 
*bridge)
return addr;
 }

-static void ali_destroy_page(void * addr)
+static void ali_destroy_page(void * addr, int flags)
 {
if (addr) {
-   global_cache_flush();   /* is this really needed?  --hch */
-   agp_generic_destroy_page(addr);
-   global_flush_tlb();
+   if (flags  AGP_PAGE_DESTROY_UNMAP) {
+   global_cache_flush();   /* is this really needed?  
--hch */
+   agp_generic_destroy_page(addr, flags);
+   global_flush_tlb();
+   } else
+   agp_generic_destroy_page(addr, flags);
}
 }

-static void m1541_destroy_page(void * addr)
+static void m1541_destroy_page(void * addr, int flags)
 {
u32 temp;

if (addr == NULL)
return;

-   global_cache_flush();
+   if (flags  AGP_PAGE_DESTROY_UNMAP) {
+   global_cache_flush();

-   pci_read_config_dword(agp_bridge-dev, ALI_CACHE_FLUSH_CTRL, temp);
-   pci_write_config_dword(agp_bridge-dev, ALI_CACHE_FLUSH_CTRL,
-   (((temp  ALI_CACHE_FLUSH_ADDR_MASK) |
- virt_to_gart(addr)) | ALI_CACHE_FLUSH_EN));
-   agp_generic_destroy_page(addr);
+   pci_read_config_dword(agp_bridge-dev, ALI_CACHE_FLUSH_CTRL, 
temp);
+   pci_write_config_dword(agp_bridge-dev, ALI_CACHE_FLUSH_CTRL,
+  (((temp  ALI_CACHE_FLUSH_ADDR_MASK) |
+virt_to_gart(addr)) | 
ALI_CACHE_FLUSH_EN));
+   }
+   agp_generic_destroy_page(addr, flags);
 }


diff --git a/drivers/char/agp/amd-k7-agp.c b/drivers/char/agp/amd-k7-agp.c
index f60bca7..1405a42 100644
--- a/drivers/char/agp/amd-k7-agp.c
+++ b/drivers/char/agp/amd-k7-agp.c
@@ -100,21 +100,16 @@ static int amd_create_gatt_pages(int nr_tables)

for (i = 0; i  nr_tables; i++) {
entry = kzalloc(sizeof(struct amd_page_map), GFP_KERNEL);
+   tables[i] = entry;
if (entry == NULL) {
-   while (i  0) {
-   kfree(tables[i-1]);
-   i--;
-   }
-   kfree(tables);
retval = -ENOMEM;
break;
}
-   tables[i] = entry;
retval = amd_create_page_map(entry);
if (retval != 0)
break;
}
-   amd_irongate_private.num_tables = nr_tables;
+   amd_irongate_private.num_tables = i;
amd_irongate_private.gatt_pages = tables;

if (retval != 0)
diff --git

Re: [PATCH] Map volume and brightness events on thinkpads

2007-10-16 Thread Dave Airlie
  But it *is* a key press!

 To get somewhat back on track: volume and brightness (and similar - lid
 close etc) events clearly are keypresses.

 However, I would also argue that a keypress that is acted on by the
 firmware automatically is *different* from a keypress that hasn't been
 acted on: one is a key was pressed *and* hardware did something
 automatically, and the other is just a key was pressed event.


We also have cases where userspace may have told ACPI to stop the
firmware acting on the keypress which may or may not be known to the
piece of the kernel dealing with keypresses... hence just pass the key
up to userspace and let it deal with it.

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[RFC] [PATCH] DRM TTM Memory Manager patch

2007-04-26 Thread Dave Airlie

Hi,

The patch is too big to fit on the list and I've no idea how we could
break it down further, it just happens to be a lot of new code..

http://people.freedesktop.org/~airlied/ttm/0001-drm-Implement-TTM-Memory-manager-core-functionality.txt

The patch header and diffstat are below,

This isn't for integration yet but we'd like an initial review by
anyone with the spare time and inclination, there is a lot stuff
relying on getting this code bet into shape and into the kernel but
any cleanups people can suggest now especially to the user interfaces
would be appreciated as once we set that stuff in stone it'll be a
pain to change... also it doesn't have any driver side code, this is
just the generic pieces. I'll post the intel 915 side code later but
there isn't that much to it..

It applies on top of my drm-2.6 git tree drm-mm branch

-

This patch brings in the TTM (Translation Table Maps) memory management
system from Thomas Hellstrom at Tungsten Graphics.

This patch only covers the core functionality and changes to the drm core.

The TTM memory manager enables dynamic mapping of memory objects in and
out of the graphic card accessible memory (e.g. AGP), this implements
the AGP backend for TTM to be used by the i915 driver.


drivers/char/drm/Makefile |3 +-
drivers/char/drm/drm.h|  238 -
drivers/char/drm/drmP.h   |  153 +++-
drivers/char/drm/drm_agpsupport.c |  160 +++
drivers/char/drm/drm_bo.c | 2329 
drivers/char/drm/drm_bo_move.c|  395 +++
drivers/char/drm/drm_bufs.c   |2 +
drivers/char/drm/drm_drv.c|   46 +-
drivers/char/drm/drm_fence.c  |  661 +++
drivers/char/drm/drm_fops.c   |   75 ++-
drivers/char/drm/drm_memory.c |   69 ++
drivers/char/drm/drm_mm.c |   13 +-
drivers/char/drm/drm_object.c |  293 +
drivers/char/drm/drm_objects.h|  464 
drivers/char/drm/drm_proc.c   |   90 ++
drivers/char/drm/drm_stub.c   |   24 +-
drivers/char/drm/drm_ttm.c|  337 ++
drivers/char/drm/drm_vm.c |  193 +++-
18 files changed, 5503 insertions(+), 42 deletions(-)
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[git pull] DRM patches for 2.6.22-rc1

2007-04-27 Thread Dave Airlie


Hi Linus,

Please pull the 'drm-patches' branch of
git://master.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git drm-patches

This contains the drm patch for 2.6.22-rc1, and contains a number of fixes
in the mmap code and the locking for AIGLX systems along with new hw support
for i965GM.

Dave.

 drivers/char/drm/README.drm|   16 +++--
 drivers/char/drm/drm.h |4 +-
 drivers/char/drm/drmP.h|   23 +--
 drivers/char/drm/drm_bufs.c|   75 +++
 drivers/char/drm/drm_drv.c |9 +--
 drivers/char/drm/drm_fops.c|   96 ++--
 drivers/char/drm/drm_hashtab.c |   17 +-
 drivers/char/drm/drm_hashtab.h |1 -
 drivers/char/drm/drm_irq.c |4 +-
 drivers/char/drm/drm_lock.c|  134 ---
 drivers/char/drm/drm_mm.c  |2 +
 drivers/char/drm/drm_pciids.h  |3 +-
 drivers/char/drm/drm_proc.c|2 +-
 drivers/char/drm/drm_stub.c|1 -
 drivers/char/drm/drm_vm.c  |  102 ---
 drivers/char/drm/i915_dma.c|3 +-
 drivers/char/drm/radeon_cp.c   |8 +-
 drivers/char/drm/sis_drv.c |2 +-
 drivers/char/drm/via_drv.c |3 +-
 drivers/char/drm/via_mm.h  |   40 
 20 files changed, 196 insertions(+), 349 deletions(-)

commit ce7dd06372058f9e3e57ee4c0aeba694a43a80ad
Author: Wang Zhenyu [EMAIL PROTECTED]
Date:   Thu Apr 26 07:42:56 2007 +1000

drm/i915: Add 965GM pci id update

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 9e9c1326a592c677c94d730fcf4446d0e275aef4
Author: Dave Airlie [EMAIL PROTECTED]
Date:   Sat Mar 24 17:57:54 2007 +1100

drm: just use io_remap_pfn_range on all archs..

Move the sparc64 ifdef around to clean this up.

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 38315878a560eede1a2db52e511ad3a2cfbb4206
Author: Hugh Dickins [EMAIL PROTECTED]
Date:   Sat Mar 24 17:55:16 2007 +1100

drm: fix DRM_CONSISTENT mapping

This patch got lost in the DRM git tree for ages, bring it back to life.

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit d7d8aac79dc38cbdef83b774e49bafdae9918137
Author: Thomas Hellstrom thomas-at-tungstengraphics-dot-com
Date:   Sat Mar 24 17:52:49 2007 +1100

drm: fix up mmap locking in preparation for ttm changes

This change is needed to protect againt disappearing maps which aren't 
common.
The map lists are protected using sturct_mutex but drm_mmap never locked it.

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 040ac32048d5efabd557c1e0a6ab8aec2c710c56
Author: Thomas Hellstrom thomas-at-tungstengraphics-dot-com
Date:   Fri Mar 23 13:28:33 2007 +1100

drm: fix driver deadlock with AIGLX and reclaim_buffers_locked

Bugzilla Bug #9457

Add refcounting of user waiters to the DRM hardware lock, so that we can use
DRM_LOCK_CONT flag more conservatively.

Also add a kernel waiter refcount that if nonzero transfers the lock for the
kernel context when it is released. This is useful when waiting for idle 
and can be used for very simple fence object driver implementations for the new 
memory manager

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 4b560fde06aeb342f3ff0bce924627ab722d251a
Author: Andrew Morton [EMAIL PROTECTED]
Date:   Mon Mar 19 09:08:21 2007 +1100

drm: fix warning in drm_fops.c

drivers/char/drm/drm_fops.c: In function 'drm_setup':
drivers/char/drm/drm_fops.c:60: warning: comparison of distinct pointer 
types lacks a cast

Unfortunately PAGE_SIZE has different types on different architectures.

Signed-off-by: Andrew Morton [EMAIL PROTECTED]
Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 99da6d861c659bb1a961b70f50fad268b9ed5a5f
Author: Thomas Hellstrom thomas-at-tungstengraphics-dot-com
Date:   Mon Mar 19 08:52:17 2007 +1100

drm: allow for more generic drm ioctls

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 6244270ef62203e057191bf85489e2ff91cc0e60
Author: Jay Estabrook [EMAIL PROTECTED]
Date:   Sun Mar 11 11:46:27 2007 +1100

drm: fix alpha domain handling

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 74be8e3b3707956f8f232313de9fad896d5489ac
Author: Thomas Hellstrom thomas-at-tungstengraphics-dot-com
Date:   Sun Mar 11 11:45:24 2007 +1100

via: fix CX700 pci id

Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 0bead7cdc94b4897f3d92db6170737a2da527134
Author: Adrian Bunk [EMAIL PROTECTED]
Date:   Sun Mar 11 11:41:16 2007 +1100

drm: make drm_io_prot static.

This patch makes the needlessly global drm_io_prot() static.

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]
Signed-off-by: Dave Airlie [EMAIL PROTECTED]

commit 5379397182a7b5fa1c68ceaefe311ce4c1d04b2a
Author: Robert P. J. Day [EMAIL PROTECTED]
Date:   Sun Mar 11 11:39:31 2007 +1100

drm: remove via_mm.h

Delete apparently unused header file drivers/char/drm/via_mm.h.

Signed-off-by: Robert P. J. Day [EMAIL

[PATCH] r128_state.c: break missing in switch statement (fwd)

2005-04-06 Thread Dave Airlie

Hi Andrew/Linus,
Can you make sure this goes into 2.6.12? until you sort out the bk
thing I'll adopt this approach :-)

Dave.

drm: fix r128_state.c switch statements..
in drivers/char/drm/r128_state.c (linux-2.6.12-rc2), some breaks are
missing in the switch statement. See trivial fix below.

Signed-off-by: Hansjoerg Lipp [EMAIL PROTECTED]
Signed-off-by: Dave Airlie [EMAIL PROTECTED]

diff -urp linux-2.6.12-rc2/drivers/char/drm/r128_state.c 
linux-2.6.12-rc2-fix/drivers/char/drm/r128_state.c
--- linux-2.6.12-rc2/drivers/char/drm/r128_state.c  2005-04-06 
13:18:05.0 +0200
+++ linux-2.6.12-rc2-fix/drivers/char/drm/r128_state.c  2005-04-06 
13:23:50.0 +0200
@@ -1549,12 +1549,16 @@ static int r128_cce_depth( DRM_IOCTL_ARG
switch ( depth.func ) {
case R128_WRITE_SPAN:
ret = r128_cce_dispatch_write_span( dev, depth );
+   break;
case R128_WRITE_PIXELS:
ret = r128_cce_dispatch_write_pixels( dev, depth );
+   break;
case R128_READ_SPAN:
ret = r128_cce_dispatch_read_span( dev, depth );
+   break;
case R128_READ_PIXELS:
ret = r128_cce_dispatch_read_pixels( dev, depth );
+   break;
}

COMMIT_RING();
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [bk tree] DRM add a version check.. for 2.6.12 (distro kernel maintainers + drm users plz read also...)

2005-04-07 Thread Dave Airlie

 I tried 2.6.12-rc2 which includes this patch, and I get DRM failures
 here, which causes application and X to hang.  (I got failures with 2.6.11
 also.)

Does the FC-4 test kernel work? There was a bug in X6.8.2 but I think it
would be fixed in FC-4 test.. I run Xorg CVS on a 9200 with the latest
kernel and it seems fine... granted I've been able to crash it with
running a few wierd apps.. I've just had no chance to debug it yet but it
isn't the common case... maybe I should play tuxracer for a while..

the symptoms are typical of a card lockup, spinning in ioctl forever...

Dave.


-- 
David Airlie, Software Engineer
http://www.skynet.ie/~airlied / airlied at skynet.ie
Linux kernel - DRI, VAX / pam_smb / ILUG

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [bk tree] DRM add a version check.. for 2.6.12 (distro kernel maintainers + drm users plz read also...)

2005-04-07 Thread Dave Airlie

 My lattest runs were with 2 days old FC development (a.k.a. bleeding edge)
 environment with  xorg-11-** of same age.  Then I noticed that these DRM
 patches didn't make it into  kernel-smp-2.6.11-1.1226_FC4.i686.rpm,
 and I made 2.6.12-rc2 -- just in case it had fixed the problem...


well these patches shouldn't really affect it..

 Could the card-lockups be recovered in a bit nicer way ?
 (And detected, too!)

In theory yes, but there isn't really anything you can do except reboot,
as usually the CP (command processor) is hung, and you have to do a full
GPU reset, I can't imagine X or Linux consoles surviving it too well...
ATI have a VPU Recover in their windows driver which does it.. but they
know their cards a bit better than we do..

it might be worth turning Render acceleration off Option RenderAccel
No in xorg.conf and see if it gets any stabler...

Dave.

-- 
David Airlie, Software Engineer
http://www.skynet.ie/~airlied / airlied at skynet.ie
Linux kernel - DRI, VAX / pam_smb / ILUG

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] radeonfb: (#2) Implement proper workarounds for PLL accesses

2005-04-07 Thread Dave Airlie
 There are 1694 calls to radeon_pll_errata_after_data during a switch from
 X to the console and 393 calls the other way.

Wow... Ben that seems a bit extreme... there's not even close to 393 plls :-)

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Kernel SCM saga..

2005-04-07 Thread Dave Airlie
  Are you happy with processing patches + descriptions, one per mail?
 
 Yes. That's going to be my interim, I was just hoping that with 2.6.12-rc2
 out the door, and us in a calming down period, I could afford to not
 even do that for a while.
 
 The real problem with the email thing is that it ends up piling up: what
 BK did in this respect was that anythign that piled up in a BK repository
 ended up still being there, and a single bk pull got it anyway - so if
 somebody got ignored because I was busy with something else, it didn't add
 any overhead. The queue didn't get congested.
 
 And that's a big thing. It comes from the Linus pulls model where people
 just told me that they were ready, instead of the everybody pushes to
 Linus model, where the destination gets congested at times.

Something I think we'll miss is bkbits.net in the long run, being able
to just push all patches for Linus to a tree and then forget about
that tree until Linus pulled from it was invaluable.. the fact that
this tree was online the whole time and you didn't queue up huge mails
for Linus's INBOX to be missed, meant a lot to me compared to pre-bk
workings..

Maybe now that kernel.org has been 'pimped out' we could set some sort
of system up where maintainers can drop a big load of patchsets or
even one big patch into some sort of public area and say this is my
diffs for Linus for his next pull and let Linus pull it at his
lesuire... some kinda rsync'y type thing comes to mind ...

so I can mail Linus and say hey Linus please grab
rsync://pimpedout.kernel.org/airlied/drm-linus and you grab everything
in there and I get notified perhaps or just a log like the bkbits
stats page, and Andrew can grab the patchsets the same as he does for
bk-drm now ... and I can have airlied/drm-2.6 where I can queue stuff
for -mm then just re-generate the patches for drm-linus later on..

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: EXPORT_SYMBOL_GPL for __symbol_get replacing EXPORT_SYMBOL for deprecated inter_module_get

2005-04-13 Thread Dave Airlie
 The case in point for me is ATI's binary openGL accelerated drivers (fglrx) -
 these used inter_module_get() to communicate with the agp gart module, for
 obvious reasons - this AGP communication is essential to the functionality of
 the driver. No, I don't like ATI only having closed-source drivers any more
 than you, but given the extremely competetive nature of high end video card
 sales, I can see why they want to do it this way. The point is that now, as
 of 2.6.11-? or 2.6.12-? (not sure of the exact revision), the
 inter_module_get() functions has been removed, and the functionality can only
 be got (as far as I can tell) through use of the symbol_get() function.
 

you might have done some research on what happened before ranting away
like a crazy.

AGP dropped the drm_agp interface in favour of the DRM modules calling
the AGP backend directly, a patch for the ATI drivers has been sailing
around for ages I even wrote one myself for someone I think but I've
lost it now ... all the AGP symbols needed are exported with
EXPORT_SYMBOL.

you might have noticed no-one else complaining around here which is
usually a good sign that there is nothing worth complaining about :-)

Dave.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


  1   2   3   4   5   6   7   8   9   10   >