Subject: Re: port-arm32/5178: __vfork14 hangs system
To: Chris G. Demetriou <cgd@pa.dec.com>
From: Mark Brinicombe <mark@causality.com>
List: port-arm32
Date: 04/17/1998 19:30:27
On Thu, 16 Apr 1998, Chris G. Demetriou wrote:

> My current hypothesis is that the system page isn't mapped in the new
> process.
>
>Tracing through the code:
> 
> 	as of vfork, the child and parent will be sharing the same
> 	address space.
> 
> 	as of the exeve, vmspace_exec() will be invoked by the child,
> 	which will cause a new vmspace to be allocated for the
> 	child, which in turn will cause a new pmap to be created
> 	for the child.
> 
> 	That new pmap will _not_ have the system page mapped, and when
> 	the process is switched to, and the CPU needs to use the
> 	system page, the system will hang.

Another issue that also needs it be fixed is the page table space. A lot
of the pmap implementation for the ARM came from NetBSD/i386.
In vmspace_exec there is conditional code for i386 and pc532. This is
similar to the conditional code found in vmspace_fork().
A similar requirement existed on the ARM but the relevant code was moved
to cpu_fork() to keep it MD. However this will fail with vmspace_exec().

A solution to this is being implemented at the moment ...

Cheers,
				Mark