Subject: Re: Current ARM kernels hang during bootstrap
To: None <Richard.Earnshaw@arm.com>
From: Ben Harris <bjh21@NetBSD.org>
List: port-arm
Date: 01/17/2004 17:13:53
On Sat, 17 Jan 2004, Richard Earnshaw wrote:

> Since you committed your exit-path patch on 2004/01/04 all my ARM systems
> have started to hang during bootstrap.
>
> Investigation using a Multi-ICE box shows that the vectors page is getting
> unmapped (on all my machines the vectors are at VA 0x0, which puts it
> notionally in user memory, although it's really a kernel page).  Loosing
> the interrupt and fault vectors is obviously somewhat fatal to the health
> of the machine.
>
> Have you any idea what might be the cause of this change in behaviour?

It looks like it's this part:

# From within the exiting process context:
# * deactivate pmap and free vmspace while we can still block

exit1() -> uvm_proc_exit() -> uvmspace_free() -> pmap_destroy()

pmap_destroy() unmaps the vector page, so any interupts that happen before
a new pmap is activated will cause pain and death.  I think this is
arguably a bug in the arm32 pmap, which should arrange to map the vector
page by other means if the current pmap is destroyed.

-- 
Ben Harris                                                   <bjh21@NetBSD.org>
Portmaster, NetBSD/acorn26           <URL:http://www.NetBSD.org/Ports/acorn26/>