Fix code comments/documentation related to printk.
Sprinkle TODOs all over obviously wrong comments.
Document possible execution flow alternatives for later investigation.

Signed-off-by: Carl-Daniel Hailfinger <[EMAIL PROTECTED]>

--- 

Index: LinuxBIOSv3/mainboard/adl/msm800sev/stage1.c
===================================================================
--- LinuxBIOSv3/mainboard/adl/msm800sev/stage1.c        (Revision 509)
+++ LinuxBIOSv3/mainboard/adl/msm800sev/stage1.c        (Arbeitskopie)
@@ -51,5 +51,5 @@
         */
        cs5536_disable_internal_uart();
        w83627hf_enable_serial(0x2e, SERIAL_DEV, SERIAL_IOBASE);
-       printk(BIOS_DEBUG, "Done %s\n", __FUNCTION__);
+       /* We can NOT yet use printk! */
 }
Index: LinuxBIOSv3/mainboard/emulation/qemu-x86/stage1.c
===================================================================
--- LinuxBIOSv3/mainboard/emulation/qemu-x86/stage1.c   (Revision 509)
+++ LinuxBIOSv3/mainboard/emulation/qemu-x86/stage1.c   (Arbeitskopie)
@@ -17,7 +17,7 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
-/* no printk allowed until hardware is ready; hardware is ready */
+/* no printk allowed until hardware is ready; hardware is not yet ready */
 
 /** 
  * start up hardware needed for stage1
Index: LinuxBIOSv3/lib/stage2.c
===================================================================
--- LinuxBIOSv3/lib/stage2.c    (Revision 509)
+++ LinuxBIOSv3/lib/stage2.c    (Arbeitskopie)
@@ -37,7 +37,10 @@
  *
  * Device Enumeration: in the dev_enumerate() phase.
  *
- * TODO: Check whether this documentation is still correct. Improve it.
+ * TODO:
+ * - Check whether this documentation is still correct. Improve it.
+ * - Replace magic constants by #defines.
+ * - Fix POST codes. Right now phases 1+3 have POST 0x30, phases 2+4 have 0x40.
  */
 int stage2(void)
 {
@@ -54,13 +57,19 @@
 
        post_code(0x20);
 
-       /* TODO: Explain why we use printk here although it is impossible */
+       /* TODO: Explain why we use printk here although it is claimed to be
+        * impossible according to the documentation. The "has to be done
+        * before printk can be used" comment below seems to suggest the same.
+        * However, we already enable serial in arch/x86/stage1.c:stage1_main()
+        * when we call hardware_stage1(); uart_init(); console_init(); 
+        */
        printk(BIOS_NOTICE, console_test);
 
        dev_init();
 
        /* Console init, also ANYTHING that has to be done 
-        * before printk can be used. 
+        * before printk can be used.
+        * FIXME: This comment contradicts the comment above.
         */
        post_code(0x30);
        dev_phase1();
Index: LinuxBIOSv3/arch/x86/stage1.c
===================================================================
--- LinuxBIOSv3/arch/x86/stage1.c       (Revision 509)
+++ LinuxBIOSv3/arch/x86/stage1.c       (Arbeitskopie)
@@ -108,8 +108,12 @@
 
        //
        uart_init();    // initialize serial port
-       console_init(); // print banner
 
+       /* Exactly from now on we can use printk. Celebrate this by printing
+        * a LB banner.
+        */
+       console_init();
+
        if (bist!=0) {
                printk(BIOS_INFO, "BIST FAILED: %08x", bist);
                die("");
@@ -133,6 +137,30 @@
        // FIXME check integrity
 
 
+       /* Right now we have to fit
+        *   initram stack
+        *   lar stack
+        * into cache during CAR. IFF we can be sure that
+        *   nrv2b stack
+        *   initram code
+        *   lar code
+        * fit into cache as well, we can compress initram code and lar code,
+        * leading to potential speedup (due to having to read less from ROM)
+        * and size savings. However, initram code and lar code would have
+        * to be compiled as PIC code, not as XIP code.
+        *
+        * Suggested code flow:
+        * unrv2b(lar_code);
+        * ...
+        * execute_in_car(&archive, "normal/initram");
+        *
+        * A less complicated (from a linker perspective) variant would
+        * compress only initram code, but it is not clear whether all hardware
+        * can run code from cache while training memory in the area designated
+        * by the cache. Some processors might drop cache contents in that case,
+        * rendering the ideas above mostly moot.
+        * TODO: Check how this works in the real world.
+        */
        // find first initram
        if (check_normal_boot_flag()) {
                printk(BIOS_DEBUG, "Choosing normal boot.\n");



-- 
linuxbios mailing list
linuxbios@linuxbios.org
http://www.linuxbios.org/mailman/listinfo/linuxbios

Reply via email to