Mark,

> I also placed some checks on vm_map_delete

I did that also, and as far as I understand everything works fine.
The only thing I found was the fact that when contigmalloc() grabs the
contig pages it sets the value of pga[i] (for i in allocated pages)
note that: vm_page_t pga = vm_page_array;

Then contigfree() does a pretty good job, but does not reset the values
of pga[i] to pqtype == PQ_FREE (pqtype = pga[i].queue - pga[i].pc)

So the next contigmalloc() requiring the same number of pages fails on
the previously released pages because they are not PQ_FREE

The other thing that puzzled me is the fact that in vm_map_delete()
called by contgigfree() has a variable

  object = entry->object.vm_object;

which shows a value of 0 rather than kernel_object or kmem_object

But my understanding might be wrong.

Thanks,
Patrick.
-- 
UDcast: Full IP over Broadcast Media

Phone:  (+33) (0)4 93 00 16 99
Mobile: (+33) (0)6 14 21 55 98
Fax:    (+33) (0)4 93 00 16 61                 http://www.UDcast.com

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to