Michel Dänzer wrote: > On Son, 2002-09-22 at 19:18, Keith Whitwell wrote: > >>Michel Dänzer wrote: >> >>>I currently get an oops on client shutdown when radeon_mem_release() is >>>called on the agp_heap, which isn't initialized. Probably is in your local >>>tree? :) >>> > > Ah, the RADEON_INIT_HEAP ioctl needs to be called for it to be > initialized. Does the attached patch look reasonable to avoid the oops, > or should the DRM rather initialize the heap on its own?
The drm should validate all userspace inputs to avoid oopses, I think. So even if we do something stupid (current situation), the machine doesn't go down. > > >>>I'd still appreciate feedback on the vbl IRQ patch... I'll work on >>>adding a new flip ioctl which flips on the next vertical blank to >>>hopefully get rid of tearing for good. >>> >>Sorry Michel, been caught up in my own stuff. >> >>The first qn I remember is that there seemed to be a fair bit more code in the >>irq tophalf -- is it possible to postpone this processing til the bh runs? >> > > Is that really a problem? There are only a couple vertical blank > interrupts per second, so it shouldn't be much more than before. > > On the other hand, I've been wondering if writing to > RADEON_GEN_INT_STATUS from the IRQ service routine is safe. If that > register goes through the FIFO (how to find out?), it should be written > through the CP or we'd have to wait for it to go idle or at least check > the number of free FIFO slots. Both of which would belong into the > bottom half I guess. I think we have to ask ati. If the card is sanely designed, you'd expect that it *wouldn't* be. You'd want the cpu to be able to write as quickly as possible to that register. A lot of cards have interrupts that actually stop the cp (or equivalent) from processing. It's not clear whether the radeon one does or not. > > > > ------------------------------------------------------------------------ > > Index: radeon_mem.c > =================================================================== > RCS file: >/cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/os-support/shared/drm/kernel/Attic/radeon_mem.c,v > retrieving revision 1.1.2.6 > diff -p -u -r1.1.2.6 radeon_mem.c > --- radeon_mem.c 17 Sep 2002 13:16:46 -0000 1.1.2.6 > +++ radeon_mem.c 22 Sep 2002 22:03:22 -0000 > @@ -174,6 +174,9 @@ void radeon_mem_release( struct mem_bloc > int pid = DRM_CURRENTPID; > struct mem_block *p; > > + if (!heap) > + return; > + > for (p = heap->next ; p != heap ; p = p->next) { > if (p->pid == pid) > p->pid = 0; > ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Dri-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dri-devel