On 9/2/2022 12:17 AM, Gerd Hoffmann wrote:
On Thu, Sep 01, 2022 at 10:36:19PM +0800, Xiaoyao Li wrote:
On 9/1/2022 9:58 PM, Gerd Hoffmann wrote:
Anyway, IMO, guest including guest firmware, should always consult from
CPUID leaf 0x80000008 for physical address length.
It simply can't for the reason outlined above. Even if we fix qemu
today that doesn't solve the problem for the firmware because we want
backward compatibility with older qemu versions. Thats why I want the
extra bit which essentially says "CPUID leaf 0x80000008 actually works".
I don't understand how it backward compatible with older qemu version. Old
QEMU won't set the extra bit you introduced in this series, and all the
guest created with old QEMU will become untrusted on CPUID leaf 0x80000008 ?
Correct, on old qemu firmware will not trust CPUID leaf 0x80000008.
That is not worse than the situation we have today, currently the
firmware never trusts CPUID leaf 0x80000008.
So the patches will improves the situation for new qemu only, but I
don't see a way around that.
I see.
But IMHO, I don't think it's good that guest firmware workaround the
issue on its own. Instead, it's better to just trust CPUID leaf
0x80000008 and fail if the given physical address length cannot be
virtualized/supported.
It's just the bug of VMM to virtualize the physical address length. The
correction direction is to fix the bug not the workaround to hide the bug.