Marc Jones wrote:
How should this work in V3? The current implementation doesn't really make sense to me. See do_normal_boot() in V2.
I think that stage0+1 is the equivalent of V2 failover. In stage1 the normal boot flag cmos byte is checked to see if the normal or the fallback image should be loaded.
The cmos byte is not documented well. I think it is as follows: [7-4] - boot count [3-2] - not defined [1] - last boot flag [0] - normal boot flag
Boot count increments until reset if normal boot flag is set.
Last boot flag is set anytime boot count is less than max boot count.
Normal boot flag is cleared if boot count exceeds max boot count. Normal boot flag doesn't seem that it can ever be set?
Currently in V3, if CMOS checksum is invalid (CMOS is cleared/not setup) then the boot count is maxed and the fallback image is forced. I don't think this is the correct thing to do. If checksum is bad we should clear cmos, set the boot count to 0, and try to do a normal boot. If normal boot fails the CMOS will checksum this time around. The boot count flag should be incremented should try again until max boot count is exceeded. Then the normal boot flag should be cleared and fallback image used. The last item is about the last boot flag. I don't think that it is needed.
Thoughts and comments? Marc
Also, the boot count needs to be cleared at the end of LinuxBIOS. I think that this what the last boot flag was trying to do.
Marc