Subject: Re: PR/22140
To: John Klos <john@sixgirls.org>
From: Gunther Nikl <gni@gecko.de>
List: port-amiga
Date: 07/30/2003 10:27:16
Hello,
> Regarding disabling DMA before copying, is this because /dev/reload
> assumes that DMA from some device or another might write to some
> location inside the kernel code?
Yes. An ongoing DMA transfer might clobber data just copied.
> If it no longer depends on chipmem, then I can't see that being a concern
> any longer.
Memory at location zero is still required. It just happens to be chipmem
on the Amiga. You need memory at PA zero because the kernel in fastmem is
mapped with VA == 0. When the MMU is turned off, the cpu continues work
at the next instruction but now in chipmem (in the code just copied to
this location)! Thats another reason that doboot and kernel_reload must be
in the first 512k of the kernel image. Without memory at location zero
neither doboot nor kernel_reload can work. Thus, since kernel_reload and
doboot both copy into chipmem DMA must be deactivated at booth places I
guess.
I did remove the chipmem size limitation. Now the kernel to reload can
be larger than the available chipmem size because the kernel is copied
directly to its final fastmem destination.
> But how long does it take for the reloaded kernel to start initialising
> hardware?
It starts immediately and uses the information about memory, expansion
cards, flags, etc. provided by the first boot. However, I noticed a small
problem of /dev/reload with my P-IV: reloading a kernel without the cirrus
code isn't a good idea. Since the flickerfixer of the P-IV is never
activated and the card never gets initialized I don't get any output from
the custom chips... The system boots but I have to make a manual reboot
immediately (typing blindly isn't fun ;-) There might be other traps.
Gunther
--
Linux is only free if your time has no value
- Jamie Zawinsky