Hi folks, I talked with andrew about this issue today and here is relevant part of our discussion
ad@ KM_NOSLEEP... probably due to that implying UVM_MAP_TRYLOCK The issue is that parts of kernel_map are pageable. Paging can take a long time, and the map can be held locked while paging. Therefore when we do a NOSLEEP allocation from kernel_map, it's also implicitly a TRYLOCK one because we can't wait to lock the map. Therefore NOSLEEP allocations have yet another path to fail. 1. Don't do KM_NOSLEEP allocations. KM_NOSLEEP is for lazy dorks. 2. Rework kernel memory layout so there is a deadicated heap map that does NOT have pageable memory, e.g. kmem_map. Maintain a seperate map for pageable stuff. Currently we are doing 1, but I think that we should at least look at option 2. Any suggestions ? -- Regards. Adam
