On 13.07.19 20:10, Ralf Ramsauer wrote:
> They're now basically the same. Consolidate it.
> 
> Signed-off-by: Ralf Ramsauer <[email protected]>
> ---
>  hypervisor/arch/x86/include/asm/vcpu.h |  2 --
>  hypervisor/arch/x86/svm.c              |  7 -------
>  hypervisor/arch/x86/vcpu.c             | 13 ++++++++++---
>  hypervisor/arch/x86/vmx.c              |  7 -------
>  4 files changed, 10 insertions(+), 19 deletions(-)
> 
> diff --git a/hypervisor/arch/x86/include/asm/vcpu.h 
> b/hypervisor/arch/x86/include/asm/vcpu.h
> index 24872f55..cae5b554 100644
> --- a/hypervisor/arch/x86/include/asm/vcpu.h
> +++ b/hypervisor/arch/x86/include/asm/vcpu.h
> @@ -88,8 +88,6 @@ const u8 *vcpu_get_inst_bytes(const struct 
> guest_paging_structures *pg_structs,
>  
>  void vcpu_skip_emulated_instruction(unsigned int inst_len);
>  
> -void vcpu_vendor_get_cell_io_bitmap(struct cell *cell,
> -                                 struct vcpu_io_bitmap *out);
>  unsigned int vcpu_vendor_get_io_bitmap_pages(void);
>  
>  #define VCPU_CS_DPL_MASK     BIT_MASK(6, 5)
> diff --git a/hypervisor/arch/x86/svm.c b/hypervisor/arch/x86/svm.c
> index f2ea313e..e1000447 100644
> --- a/hypervisor/arch/x86/svm.c
> +++ b/hypervisor/arch/x86/svm.c
> @@ -1008,13 +1008,6 @@ const u8 *vcpu_get_inst_bytes(const struct 
> guest_paging_structures *pg_structs,
>       }
>  }
>  
> -void vcpu_vendor_get_cell_io_bitmap(struct cell *cell,
> -                                 struct vcpu_io_bitmap *iobm)
> -{
> -     iobm->data = cell->arch.io_bitmap;
> -     iobm->size = IOPM_PAGES * PAGE_SIZE;
> -}
> -
>  unsigned int vcpu_vendor_get_io_bitmap_pages(void)
>  {
>       return IOPM_PAGES;
> diff --git a/hypervisor/arch/x86/vcpu.c b/hypervisor/arch/x86/vcpu.c
> index 4c074669..cf8ff04c 100644
> --- a/hypervisor/arch/x86/vcpu.c
> +++ b/hypervisor/arch/x86/vcpu.c
> @@ -76,6 +76,13 @@ out_err:
>       return NULL;
>  }
>  
> +static inline void vcpu_get_cell_io_bitmap(struct cell *cell,
> +                                        struct vcpu_io_bitmap *iobm)
> +{
> +     iobm->data = cell->arch.io_bitmap;
> +     iobm->size = vcpu_vendor_get_io_bitmap_pages() * PAGE_SIZE;
> +}
> +
>  int vcpu_cell_init(struct cell *cell)
>  {
>       const unsigned int io_bitmap_pages = vcpu_vendor_get_io_bitmap_pages();
> @@ -97,7 +104,7 @@ int vcpu_cell_init(struct cell *cell)
>               return err;
>       }
>  
> -     vcpu_vendor_get_cell_io_bitmap(cell, &cell_iobm);
> +     vcpu_get_cell_io_bitmap(cell, &cell_iobm);
>  
>       /* initialize io bitmap to trap all accesses */
>       memset(cell_iobm.data, -1, cell_iobm.size);
> @@ -115,7 +122,7 @@ int vcpu_cell_init(struct cell *cell)
>                * Shrink PIO access of root cell corresponding to new cell's
>                * access rights.
>                */
> -             vcpu_vendor_get_cell_io_bitmap(&root_cell, &root_cell_iobm);
> +             vcpu_get_cell_io_bitmap(&root_cell, &root_cell_iobm);
>               pio_bitmap = jailhouse_cell_pio_bitmap(cell->config);
>               for (b = root_cell_iobm.data; pio_bitmap_size > 0;
>                    b++, pio_bitmap++, pio_bitmap_size--)
> @@ -143,7 +150,7 @@ void vcpu_cell_exit(struct cell *cell)
>       struct vcpu_io_bitmap root_cell_iobm;
>       u8 *b;
>  
> -     vcpu_vendor_get_cell_io_bitmap(&root_cell, &root_cell_iobm);
> +     vcpu_get_cell_io_bitmap(&root_cell, &root_cell_iobm);
>  
>       if (root_cell.config->pio_bitmap_size < pio_bitmap_size)
>               pio_bitmap_size = root_cell.config->pio_bitmap_size;
> diff --git a/hypervisor/arch/x86/vmx.c b/hypervisor/arch/x86/vmx.c
> index 8552cabd..2f46b7e9 100644
> --- a/hypervisor/arch/x86/vmx.c
> +++ b/hypervisor/arch/x86/vmx.c
> @@ -1220,13 +1220,6 @@ void vmx_entry_failure(void)
>       panic_stop();
>  }
>  
> -void vcpu_vendor_get_cell_io_bitmap(struct cell *cell,
> -                                 struct vcpu_io_bitmap *iobm)
> -{
> -     iobm->data = cell->arch.io_bitmap;
> -     iobm->size = PIO_BITMAP_PAGES * PAGE_SIZE;
> -}
> -
>  unsigned int vcpu_vendor_get_io_bitmap_pages(void)
>  {
>       return PIO_BITMAP_PAGES;
> 

This is pointing in the right direction, but we can be more aggressive: There is
no reason for struct vcpu_io_bitmap anymore. pio_allow_access() will only use
the data, and for the users here, we also remove the indirection without
complicating things.

Jan

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jailhouse-dev/22c86c43-3122-f222-6ac6-5305372e4e8f%40siemens.com.

Reply via email to