On 14 February 2023 16:47:13 CET, Paul Durrant <xadimg...@gmail.com> wrote:
>On 01/02/2023 14:31, David Woodhouse wrote:
>> From: Joao Martins <joao.m.mart...@oracle.com>
>>
>> Which is used to fetch xenstore PFN and port to be used
>> by the guest. This is preallocated by the toolstack when
>> guest will just read those and use it straight away.
>>
>> Signed-off-by: Joao Martins <joao.m.mart...@oracle.com>
>> Signed-off-by: David Woodhouse <d...@amazon.co.uk>
>> ---
>> target/i386/kvm/xen-emu.c | 39 +++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 39 insertions(+)
>>
>> diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
>> index 75e62bc02f..3d6ea7ca98 100644
>> --- a/target/i386/kvm/xen-emu.c
>> +++ b/target/i386/kvm/xen-emu.c
>> @@ -762,6 +762,42 @@ out:
>> return true;
>> }
>> +static bool handle_get_param(struct kvm_xen_exit *exit, X86CPU *cpu,
>> + uint64_t arg)
>> +{
>> + CPUState *cs = CPU(cpu);
>> + struct xen_hvm_param hp;
>> + int err = 0;
>> +
>> + /* No need for 32/64 compat handling */
>> + qemu_build_assert(sizeof(hp) == 16);
>> +
>> + if (kvm_copy_from_gva(cs, arg, &hp, sizeof(hp))) {
>> + err = -EFAULT;
>> + goto out;
>> + }
>> +
>> + if (hp.domid != DOMID_SELF && hp.domid != xen_domid) {
>> + err = -ESRCH;
>> + goto out;
>> + }
>> +
>> + switch (hp.index) {
>> + case HVM_PARAM_STORE_PFN:
>> + hp.value = XEN_SPECIAL_PFN(XENSTORE);
>
>Reviewed-by: Paul Durrant <p...@xen.org>
>
>... but this reminds me... I don't think you have code to seed the grant table
>in any of the patches. It is guest ABI that the XenStore PFN is in entry 1 of
>the grant table.
It's in there somewhere, perhaps in "phase 2" where we actually add a real
XenStore rather than this sequence of 59 (and counting).
I even made XenStore map the grant (not that it actually *uses* the address it
gets back).