Re: [edk2-devel] CPU hotplug using SMM with QEMU+OVMF
Igor Mammedov <imammedo@...>
On Mon, 26 Aug 2019 17:30:43 +0200
Laszlo Ersek <lersek@...> wrote: On 08/23/19 17:25, Kinney, Michael D wrote:Do we need anything complex in relocation handler, though?Hi Jiewen,"without a stack" looks very risky to me. Even if we manage to implement From what I'd imagine, minimum handler should 1: get address of TSEG, possibly read it from chipset 2: calculate its new SMBASE offset based on its APIC ID 3: save new SMBASE 07b - implies 08bFor this OVMF use case, is any CPU init requiredI expressed a preference for that too: "I wish we could simply wake the 8b could be trivial hlt loop and we most likely could skip 08a and signaling host CPU steps but we need INIT/SIPI/SIPI sequence to wake up AP so it could handle pending SMI before handling SIPI (so behavior would follow SDM). See again my message linked above -- just after the quoted sentence, ISo far we should be able to implement it per spec (at least SDM one), but we would still need to invent chipset hardware i.e. like adding to Q35 non exiting SMRAM and means to map/unmap it to non-SMM address space. (and I hope we could avoid adding "parked CPU" thingy) We can serialize it (for normal hotplug flow) from ACPI handlerCan the SMI monarch use the LocalI agree this would be a huge help. in the guest (i.e. non enforced serialization). The only reason for serialization I see is not to allow a bunch of new CPU trample over default SMBASE save area at the same time. There is a consideration though, an OS level attacker could send broadcast SMI and INIT-SIPI-SIPI sequences to rigger race, but I don't see it as a threat since attack shouldn't be able to exploit anything and in worst case guest OS would crash (taking in account that SMIs are privileged, OS attacker has a plenty of other means to kill itself). It would be simpler if we can guarantee that onlyI don't know if the QEMU monitor command in question can guarantee this
|
|