qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-ppc] [PATCH qemu v13 13/16] spapr_iommu: Remove n


From: David Gibson
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH qemu v13 13/16] spapr_iommu: Remove need_vfio flag from sPAPRTCETable
Date: Thu, 3 Mar 2016 17:38:57 +1100
User-agent: Mutt/1.5.24 (2015-08-30)

On Tue, Mar 01, 2016 at 08:10:38PM +1100, Alexey Kardashevskiy wrote:
> sPAPRTCETable has a need_vfio flag which is passed to
> kvmppc_create_spapr_tce() and controls whether to create a guest view
> table in KVM as this depends on the host kernel ability to accelerate
> H_PUT_TCE for VFIO devices. We would set this flag at the moment
> when sPAPRTCETable is created in spapr_tce_new_table() and
> use when the table is allocated in spapr_tce_table_realize().
> 
> Now we explicitly enable/disable DMA windows via spapr_tce_table_enable()
> and spapr_tce_table_disable() and can pass this flag directly without
> caching it in sPAPRTCETable.
> 
> This removes the flag. This should cause no behavioural change.
> 
> Signed-off-by: Alexey Kardashevskiy <address@hidden>

Reviewed-by: David Gibson <address@hidden>

> ---
>  hw/ppc/spapr_iommu.c   | 13 +++++--------
>  include/hw/ppc/spapr.h |  1 -
>  2 files changed, 5 insertions(+), 9 deletions(-)
> 
> diff --git a/hw/ppc/spapr_iommu.c b/hw/ppc/spapr_iommu.c
> index 4c52cf4..8aa2238 100644
> --- a/hw/ppc/spapr_iommu.c
> +++ b/hw/ppc/spapr_iommu.c
> @@ -210,8 +210,9 @@ void spapr_tce_set_need_vfio(sPAPRTCETable *tcet, bool 
> need_vfio)
>  {
>      size_t table_size = tcet->nb_table * sizeof(uint64_t);
>      void *newtable;
> +    bool tcet_can_vfio = tcet->fd < 0;
>  
> -    if (need_vfio == tcet->need_vfio) {
> +    if (need_vfio == tcet_can_vfio) {
>          /* Nothing to do */
>          return;
>      }
> @@ -222,8 +223,6 @@ void spapr_tce_set_need_vfio(sPAPRTCETable *tcet, bool 
> need_vfio)
>          return;
>      }
>  
> -    tcet->need_vfio = true;
> -
>      if (tcet->fd < 0) {
>          /* Table is already in userspace, nothing to be do */
>          return;
> @@ -261,7 +260,7 @@ sPAPRTCETable *spapr_tce_new_table(DeviceState *owner, 
> uint32_t liobn)
>      return tcet;
>  }
>  
> -static void spapr_tce_table_do_enable(sPAPRTCETable *tcet)
> +static void spapr_tce_table_do_enable(sPAPRTCETable *tcet, bool need_vfio)
>  {
>      if (!tcet->nb_table) {
>          return;
> @@ -271,7 +270,7 @@ static void spapr_tce_table_do_enable(sPAPRTCETable *tcet)
>                                          tcet->page_shift,
>                                          tcet->nb_table,
>                                          &tcet->fd,
> -                                        tcet->need_vfio);
> +                                        need_vfio);
>  
>      memory_region_set_size(&tcet->iommu,
>                             (uint64_t)tcet->nb_table << tcet->page_shift);
> @@ -291,9 +290,8 @@ void spapr_tce_table_enable(sPAPRTCETable *tcet,
>      tcet->bus_offset = bus_offset;
>      tcet->page_shift = page_shift;
>      tcet->nb_table = nb_table;
> -    tcet->need_vfio = need_vfio;
>  
> -    spapr_tce_table_do_enable(tcet);
> +    spapr_tce_table_do_enable(tcet, need_vfio);
>  }
>  
>  void spapr_tce_table_disable(sPAPRTCETable *tcet)
> @@ -312,7 +310,6 @@ void spapr_tce_table_disable(sPAPRTCETable *tcet)
>      tcet->bus_offset = 0;
>      tcet->page_shift = 0;
>      tcet->nb_table = 0;
> -    tcet->need_vfio = false;
>  }
>  
>  static void spapr_tce_table_unrealize(DeviceState *dev, Error **errp)
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index 5d2f8f4..505cb3a 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -546,7 +546,6 @@ struct sPAPRTCETable {
>      uint32_t page_shift;
>      uint64_t *table;
>      bool bypass;
> -    bool need_vfio;
>      int fd;
>      MemoryRegion root, iommu;
>      struct VIOsPAPRDevice *vdev; /* for @bypass migration compatibility only 
> */

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]