What is the AP Reset Vector / Recovery Startup AP Data

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
Post Reply
druckdev
Posts: 1
Joined: Sat Jun 24, 2023 6:30 pm
Libera.chat IRC: druckdev

What is the AP Reset Vector / Recovery Startup AP Data

Post by druckdev »

Hi!

I am modifying a PEI firmware volume that contains "Startup AP data" at the end. Which is just a jump instruction to F000:FFD0 in a padding file.
See the relevant code in edk2: https://github.com/tianocore/edk2/blob/ ... Lib.c#L127

Do any of you know more about this and could point me to a specification I could read more about?
I tried to search for this address in the UEFI PI and Intel MP Specifications as well as the Intel 64 and IA-32 Architectures Software Developer’s Manual but was not successful.
And the array is there since the very first commit to edk2's buildtools back in 2007, so I was not able to find any info in the log.

PS: It's my first time here, so please tell me if I disregarded any best-practices or similar!
Octocontrabass
Member
Member
Posts: 5512
Joined: Mon Mar 25, 2013 7:01 pm

Re: What is the AP Reset Vector / Recovery Startup AP Data

Post by Octocontrabass »

There's nothing special about 0xF000:FFD0, it was arbitrarily chosen because it's convenient to place AP startup code near the reset vector inside the Volume Top File. In fact, EDK2 has several different Volume Top Files, and only one of them actually places code at that address. For example, OVMF places a GUID there and has the AP startup code at 0xF000:FFE0 instead.
Post Reply