Yes, apparently 0xdfffc is in ROM area for QEMU (0xc0000 -- 0xe0000, defined in include/hw/loader.h). The next thing to figure out is why u-boot uses it as a stack area.
Best regards, Anton Gerasimov On 11/10/2017 06:04 PM, Anton Gerasimov wrote: > New guess: > > in the most safe configuration of u-boot (CONFIG_SMP=n, lacpi disabled) > with Igor's patch applied `qemu-system-i386 -bios /path/to/uboot.rom` > fails on the first 'ret' instruction. GDB shows that memory at $esp > (0xdfffc at the entrance to board_init_f_mem) and everything around it > is zero despite 'call' and 'push' instructions executed. If you go one > commit before the breaking one it works fine, stuff gets put onto stack. > Could it that be that stack itself is in this 'readonly' area? > > Thanks, > Anton Gerasimov > > On 11/09/2017 02:58 AM, Bin Meng wrote: >> On Wed, Nov 8, 2017 at 9:05 PM, Anton Gerasimov >> <an...@advancedtelematic.com> wrote: >>> Adding Igor Mammedov to the loop. >>> >> Really add Igor Mammedov. >> >> Igor, can you help look at this? >> >>> On 11/08/2017 01:59 PM, Anton Gerasimov wrote: >>>> To whoever might be interested: I've bisected qemu and the breaking >>>> commit is 208fa0e43645edd0b0d8f838857dfc79daff40a8 (pc: make 'pc.rom' >>>> readonly when machine has PCI enabled). It's just three lines added, >>>> I'll paste the whole patch here. Not quite sure what can we do here though. >>>> >>>> >>>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c >>>> index 22e16031b0..59435390ba 100644 >>>> --- a/hw/i386/pc.c >>>> +++ b/hw/i386/pc.c >>>> @@ -1443,6 +1443,9 @@ void pc_memory_init(PCMachineState *pcms, >>>> option_rom_mr = g_malloc(sizeof(*option_rom_mr)); >>>> memory_region_init_ram(option_rom_mr, NULL, "pc.rom", PC_ROM_SIZE, >>>> &error_fatal); >>>> + if (pcmc->pci_enabled) { >>>> + memory_region_set_readonly(option_rom_mr, true); >>>> + } >>>> memory_region_add_subregion_overlap(rom_memory, >>>> PC_ROM_MIN_VGA, >>>> option_rom_mr, >>>> >>>> >> Regards, >> Bin > -- Anton Gerasimov, ATS Advanced Telematic Systems GmbH Kantstrasse 162, 10623 Berlin Managing Directors: Dirk Pöschl, Armin G. Schmidt Register Court: HRB 151501 B, Amtsgericht Charlottenburg