Hi Tristan,

  Thank you for your comment.

You (Tristan.Gingold) said:
>>   I will post patches of PV-on-HVM for IPF.
>>
>>   We wrote the patch under this consideration:
>>
>>    * Expand hvm_op hypercall
>>      + Introduce HVMOP_setup_shared_info_page
>>        - A page allocated on HVM-guest OS is swapped original shared_info
>>          page with this hypercall.
>>        - In x86 code, original shared_info page is used after pv-on-hvm
>>          setup with remapping feature in arch depend HYPERVISOR_memory_op.
>>          But, we can't implement same feature for IPF, thus we select to
>>          implement with this method.
> Can you explain why you can't reuse the HYPERVISOR_memory_op hcall ?
> It isn't clear for me.

  In x86 code (xen/arch/x86/mm.c), it uses only virtual space of page frame
allocated by GuestOS, and remaps the vitual space to original share_info
page frame. But, we can't find same method for IPF.

  Can you suggest us about the remapping method ?

> About the patch:
> +static int
> +vmx_gnttab_setup_table(unsigned long frame_pa, unsigned long nr_frames)
> +{
> +    struct domain *d = current->domain;
> +    int rc = 0, i;
> +    unsigned long o_grant_shared, pgaddr;
> +
> +    if (nr_frames != NR_GRANT_FRAMES) {
> +        return -1;
> You'd better to return -EINVAL.

  I agree. I'll correct it.

> +    }
> +    o_grant_shared = (unsigned long)d->grant_table->shared;
> +    d->grant_table->shared = (struct grant_entry *)domain_mpa_to_imva(d,
> frame_pa);
> +
> +    /* Copy existing grant table shared into new page */
> +    if (o_grant_shared) {
> +        memcpy((void*)d->grant_table->shared,
> +                (void*)o_grant_shared, PAGE_SIZE * nr_frames);
> You should check the result of domain_mpa_to_imva, as it could fail.

  I agree. I'll try to correct it. It returns NULL if it fails, I think.
Is it correct ?

> +            if (likely(IS_XEN_HEAP_FRAME(virt_to_page(pgaddr)))) {
> +                free_domheap_page(virt_to_page(pgaddr));
> +                free_xenheap_page((void *)pgaddr);
> +            }
> +            else {
> +                put_page(virt_to_page(pgaddr));
> +            }
> May create a function to be called by gnttab_setup_table and 
> setup_shared_info_page.

  I think that these function are for only VT-i domain, thus I used
vmx_ prefix. What do you think about it ?

Thanks,
-- Tsunehisa Doi

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

Reply via email to