lkml.org 
[lkml]   [2019]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH RFC 00/39] x86/KVM: Xen HVM guest support
    From
    Date
    On 2/20/19 9:09 PM, Paolo Bonzini wrote:
    > On 20/02/19 21:15, Joao Martins wrote:
    >> 2. PV Driver support (patches 17 - 39)
    >>
    >> We start by redirecting hypercalls from the backend to routines
    >> which emulate the behaviour that PV backends expect i.e. grant
    >> table and interdomain events. Next, we add support for late
    >> initialization of xenbus, followed by implementing
    >> frontend/backend communication mechanisms (i.e. grant tables and
    >> interdomain event channels). Finally, introduce xen-shim.ko,
    >> which will setup a limited Xen environment. This uses the added
    >> functionality of Xen specific shared memory (grant tables) and
    >> notifications (event channels).
    >
    > I am a bit worried by the last patches, they seem really brittle and
    > prone to breakage. I don't know Xen well enough to understand if the
    > lack of support for GNTMAP_host_map is fixable, but if not, you have to
    > define a completely different hypercall.
    >
    I guess Ankur already answered this; so just to stack this on top of his comment.

    The xen_shim_domain() is only meant to handle the case where the backend
    has/can-have full access to guest memory [i.e. netback and blkback would work
    with similar assumptions as vhost?]. For the normal case, where a backend *in a
    guest* maps and unmaps other guest memory, this is not applicable and these
    changes don't affect that case.

    IOW, the PV backend here sits on the hypervisor, and the hypercalls aren't
    actual hypercalls but rather invoking shim_hypercall(). The call chain would go
    more or less like:

    <netback|blkback|scsiback>
    gnttab_map_refs(map_ops, pages)
    HYPERVISOR_grant_table_op(GNTTABOP_map_grant_ref,...)
    shim_hypercall()
    shim_hcall_gntmap()

    Our reasoning was that given we are already in KVM, why mapping a page if the
    user (i.e. the kernel PV backend) is himself? The lack of GNTMAP_host_map is how
    the shim determines its user doesn't want to map the page. Also, there's another
    issue where PV backends always need a struct page to reference the device
    inflight data as Ankur pointed out.

    > Of course, tests are missing.

    FWIW: this was deliberate as we wanted to get folks impressions before
    proceeding further with the work.

    > You should use the
    > tools/testing/selftests/kvm/ framework, and ideally each patch should
    > come with coverage for the newly-added code.
    > Got it.

    Cheers,
    Joao

    \
     
     \ /
      Last update: 2019-02-21 12:47    [W:4.165 / U:0.240 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site