06 May, 2012

1 commit

  • There is nothing in the code for emulating TCE tables in the kernel
    that prevents it from working on "PR" KVM... other than ifdef's and
    location of the code.

    This and moves the bulk of the code there to a new file called
    book3s_64_vio.c.

    This speeds things up a bit on my G5.

    Signed-off-by: Benjamin Herrenschmidt
    [agraf: fix for hv kvm, 32bit, whitespace]
    Signed-off-by: Alexander Graf

    Benjamin Herrenschmidt
     

12 Jul, 2011

1 commit

  • This improves I/O performance for guests using the PAPR
    paravirtualization interface by making the H_PUT_TCE hcall faster, by
    implementing it in real mode. H_PUT_TCE is used for updating virtual
    IOMMU tables, and is used both for virtual I/O and for real I/O in the
    PAPR interface.

    Since this moves the IOMMU tables into the kernel, we define a new
    KVM_CREATE_SPAPR_TCE ioctl to allow qemu to create the tables. The
    ioctl returns a file descriptor which can be used to mmap the newly
    created table. The qemu driver models use them in the same way as
    userspace managed tables, but they can be updated directly by the
    guest with a real-mode H_PUT_TCE implementation, reducing the number
    of host/guest context switches during guest IO.

    There are certain circumstances where it is useful for userland qemu
    to write to the TCE table even if the kernel H_PUT_TCE path is used
    most of the time. Specifically, allowing this will avoid awkwardness
    when we need to reset the table. More importantly, we will in the
    future need to write the table in order to restore its state after a
    checkpoint resume or migration.

    Signed-off-by: David Gibson
    Signed-off-by: Paul Mackerras
    Signed-off-by: Alexander Graf

    David Gibson