Subject: Re: Current ARM kernels hang during bootstrap
To: None <Richard.Earnshaw@arm.com>
From: Ben Harris <bjh21@NetBSD.org>
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/>