[coreboot] VSA and vm86/x86emu
c-d.hailfinger.devel.2006 at gmx.net
Wed Feb 20 14:43:59 CET 2008
Ron? This one would benefit from your testing and acking as well.
On 19.02.2008 22:38, Marc Jones wrote:
> Carl-Daniel Hailfinger wrote:
>> On 18.02.2008 23:55, Marc Jones wrote:
>>> Carl-Daniel Hailfinger wrote:
>>>> it seems that executing VSA requires vm86 to be useful. Since we
>>>> unconditionally execute the VSA, we should unconditionally require
>>>> support (PCI_OPTION_ROM_RUN_VM86) via Kconfig for Geode targets. Not
>>>> doing so will either cause compile failures or runtime failures.
>>>> select PCI_OPTION_ROM_RUN_VM86
>>>> config CPU_AMD_GEODELX
>>>> did not work out for me.
>>> Sorry I missed this.
>>> VSA requires the GDT that is in vm86.c. VSA loads similar to an
>>> option ROM so the loader does go into VM86 mode. All the other stuff
>>> like interrupt support and PCI BIOS isn't needed by VSA. I think
>>> that the GDT at the top of vm86.c can be moved to a header file,
>>> gdt.h or something like that.
>> northbridge/amd/geodelx/vsmsetup.c uses
>> util/x86emu/vm86.c:setup_realmode_idt() but it seems most/all of the
>> setup there is not needed at all for VSA. Pulling in
>> setup_realmode_idt pulls in the rest of vm86 through direct and
>> indirect dependencies.
>>> Care to make a patch? :)
> I am also leaning towards removing the IDT for VSA init. There is a
> risk if either an exception happens or a software interrupt is used
> you will get unexpected results. What probably happens is that you
> jump off to something that will eventually cause a triple fault and
> reboot. You may think this is bad (and it is) but it is the same risk
> that coreboot runs today. If coreboot had a generic IDT to handle
> exceptions, VSA init would use the same IDT. Note that hardware INT
> (even timers) should never happen as they are always masked.
> I have built with no PCI_OPTION_ROM_RUN_VM86 and run this to filo.
Nice. The unrelated change in util/x86emu/pcbios/pcibios.c has already
been committed in r612, but I really think we want this patch.
Short description of which test we need: Compilation for alix1c with
"Execute PCI Option ROMs" set to "Disabled". Boot into Linux and test
whether everything works.
More information about the coreboot