Hello, recently I've found the-sea-watcher project and now I'm trying to repeat 
it. 
https://scumjr.github.io/2016/01/10/from-smm-to-userland-in-a-few-bytes/
But I have a strange problem when I trigger a SMI my VM instantly reboot. I use 
that function to send SMI:

#define PORT_SMI_CMD             0x00b2
int main(void)
{
    if (ioperm(PORT_SMI_CMD, 1, 1) != 0)
        err(EXIT_FAILURE, "ioperm");
    outb(0x61, PORT_SMI_CMD);
    printf("done\n");
    return EXIT_SUCCESS;
}

I have rebuild SeaBios with CONFIG_DEBUG_LEVEL=8 and found out that SMI's 
reboot VM with a rather big chance. This is a part of SeaBios log:

VBE current mode=3
stub vbe_104fXX:406:
   a=00004f09  b=00000001  c=00000100  d=00000000 ds=0040 es=0000 ss=0100
  si=00000000 di=00002000 bp=00000000 sp=00001000 cs=0000 ip=0600  f=3200
VBE mode set: c18f
set VGA mode 18f    //at this point Ubuntu is loaded
handle_smi cmd=61 smbase=0x000a0000 //I send first
handle_smi cmd=61 smbase=0x000a0000  //and second SMI
In resume (status=0)             //have reboot on third
In 32bit resume
Attempting a hard reboot
enabling shadow ram
SeaBIOS (version 
rel-1.13.0-15-gde88a96-dirty-20200406_111431-test-Lenovo-ideapad-320S-13IKB)
BUILD: gcc: (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 binutils: (GNU Binutils for 
Ubuntu) 2.30

I've started to explore the source code, but I don't found anything that could 
help me.
Can you give me an advice or a direction for my research?

Best regards.
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to