mini update SMM:
authorStefan Reinauer <stepan@coresystems.de>
Mon, 22 Feb 2010 09:32:33 +0000 (09:32 +0000)
committerStefan Reinauer <stepan@openbios.org>
Mon, 22 Feb 2010 09:32:33 +0000 (09:32 +0000)
- allow northbridge and cpu handlers, too
- support for older rev 2 cpus

Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5141 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/cpu/x86/smm/smihandler.c
src/include/cpu/x86/smm.h

index 7d6dfe41004273a27abfb0982f9b9161d621bafa..bb58140c67efe1fb2a302acfdf11432f58b4ee49 100644 (file)
@@ -118,6 +118,7 @@ void smi_handler(u32 smm_revision)
        printk_spew("\nSMI# #%d\n", node);
 
        switch (smm_revision) {
+       case 0x00030002:
        case 0x00030007:
                state_save.type = LEGACY;
                state_save.legacy_state_save = (legacy_smm_state_save_area_t *)
@@ -145,8 +146,12 @@ void smi_handler(u32 smm_revision)
        /* Call chipset specific SMI handlers. This would be the place to
         * add a CPU or northbridge specific SMI handler, too
         */
-
-       southbridge_smi_handler(node, &state_save);
+       if (cpu_smi_handler)
+               cpu_smi_handler(node, &state_save);
+       if (northbridge_smi_handler)
+               northbridge_smi_handler(node, &state_save);
+       if (southbridge_smi_handler)
+               southbridge_smi_handler(node, &state_save);
 
        smi_release_lock();
 
index 6baefcb2f7340e41f930d8ec4d273df15cdba595..a014ee0e5587163a3c9017d92248920be47a3932 100644 (file)
@@ -254,5 +254,7 @@ void io_trap_handler(int smif);
 int southbridge_io_trap_handler(int smif);
 int mainboard_io_trap_handler(int smif);
 
-void southbridge_smi_handler(unsigned int node, smm_state_save_area_t *state_save);
+void __attribute__((weak)) cpu_smi_handler(unsigned int node, smm_state_save_area_t *state_save);
+void __attribute__((weak)) northbridge_smi_handler(unsigned int node, smm_state_save_area_t *state_save);
+void __attribute__((weak)) southbridge_smi_handler(unsigned int node, smm_state_save_area_t *state_save);