Re: [edk2-devel] CPU hotplug using SMM with QEMU+OVMF


Laszlo Ersek
 

On 08/21/19 17:48, Kinney, Michael D wrote:
Perhaps there is a way to avoid the 3000:8000 startup
vector.

If a CPU is added after a cold reset, it is already in a
different state because one of the active CPUs needs to
release it by interacting with the hot plug controller.

Can the SMRR for CPUs in that state be pre-programmed to
match the SMRR in the rest of the active CPUs?

For OVMF we expect all the active CPUs to use the same
SMRR value, so a check can be made to verify that all
the active CPUs have the same SMRR value. If they do,
then any CPU released through the hot plug controller
can have its SMRR pre-programmed and the initial SMI
will start within TSEG.
Yes, that is what I proposed here:

* http://mid.mail-archive.com/effa5e32-be1e-4703-4419-8866b7754e2d@redhat.com
* https://edk2.groups.io/g/devel/message/45570

Namely:

When the SMM setup quiesces during normal firmware boot, OVMF could
use existent (finalized) SMBASE infomation to *pre-program* some
virtual QEMU hardware, with such state that would be expected, as
"final" state, of any new hotplugged CPU. Afterwards, if / when the
hotplug actually happens, QEMU could blanket-apply this state to the
new CPU, and broadcast a hardware SMI to all CPUs except the new one.
(I know that Paolo didn't like it; I'm just confirming that I had the
same, or at least a very similar, idea.)

Thanks!
Laszlo

Join rfc@edk2.groups.io to automatically receive all group messages.