diff mbox

[1/2] kvm: initialize qemu_host_page_size

Message ID 1389853287-25458-2-git-send-email-aik@ozlabs.ru
State New
Headers show

Commit Message

Alexey Kardashevskiy Jan. 16, 2014, 6:21 a.m. UTC
There is a HOST_PAGE_ALIGN macro which makes sense for KVM accelerator
but it uses qemu_host_page_size/qemu_host_page_mask which initialized
for TCG only.

This moves qemu_host_page_size/qemu_host_page_mask initialization from
TCG's page_init() and adds a call for it from kvm_init().

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
 include/exec/exec-all.h |  1 +
 kvm-all.c               |  1 +
 translate-all.c         | 14 ++++++++------
 3 files changed, 10 insertions(+), 6 deletions(-)

Comments

Paolo Bonzini Jan. 17, 2014, 12:55 p.m. UTC | #1
Il 16/01/2014 07:21, Alexey Kardashevskiy ha scritto:
> There is a HOST_PAGE_ALIGN macro which makes sense for KVM accelerator
> but it uses qemu_host_page_size/qemu_host_page_mask which initialized
> for TCG only.
> 
> This moves qemu_host_page_size/qemu_host_page_mask initialization from
> TCG's page_init() and adds a call for it from kvm_init().
> 
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
>  include/exec/exec-all.h |  1 +
>  kvm-all.c               |  1 +
>  translate-all.c         | 14 ++++++++------
>  3 files changed, 10 insertions(+), 6 deletions(-)
> 
> diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
> index ea90b64..3b03cbf 100644
> --- a/include/exec/exec-all.h
> +++ b/include/exec/exec-all.h
> @@ -81,6 +81,7 @@ void cpu_gen_init(void);
>  int cpu_gen_code(CPUArchState *env, struct TranslationBlock *tb,
>                   int *gen_code_size_ptr);
>  bool cpu_restore_state(CPUArchState *env, uintptr_t searched_pc);
> +void page_size_init(void);
>  
>  void QEMU_NORETURN cpu_resume_from_signal(CPUArchState *env1, void *puc);
>  void QEMU_NORETURN cpu_io_recompile(CPUArchState *env, uintptr_t retaddr);
> diff --git a/kvm-all.c b/kvm-all.c
> index 0bfb060..edf2365 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -1360,6 +1360,7 @@ int kvm_init(void)
>       * page size for the system though.
>       */
>      assert(TARGET_PAGE_SIZE <= getpagesize());
> +    page_size_init();
>  
>  #ifdef KVM_CAP_SET_GUEST_DEBUG
>      QTAILQ_INIT(&s->kvm_sw_breakpoints);
> diff --git a/translate-all.c b/translate-all.c
> index 105c25a..543e1ff 100644
> --- a/translate-all.c
> +++ b/translate-all.c
> @@ -289,17 +289,15 @@ static inline void map_exec(void *addr, long size)
>  }
>  #endif
>  
> -static void page_init(void)
> +void page_size_init(void)
>  {
>      /* NOTE: we can always suppose that qemu_host_page_size >=
>         TARGET_PAGE_SIZE */
>  #ifdef _WIN32
> -    {
> -        SYSTEM_INFO system_info;
> +    SYSTEM_INFO system_info;
>  
> -        GetSystemInfo(&system_info);
> -        qemu_real_host_page_size = system_info.dwPageSize;
> -    }
> +    GetSystemInfo(&system_info);
> +    qemu_real_host_page_size = system_info.dwPageSize;
>  #else
>      qemu_real_host_page_size = getpagesize();
>  #endif
> @@ -310,7 +308,11 @@ static void page_init(void)
>          qemu_host_page_size = TARGET_PAGE_SIZE;
>      }
>      qemu_host_page_mask = ~(qemu_host_page_size - 1);
> +}
>  
> +static void page_init(void)
> +{
> +    page_size_init();
>  #if defined(CONFIG_BSD) && defined(CONFIG_USER_ONLY)
>      {
>  #ifdef HAVE_KINFO_GETVMMAP
> 

Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Alex Williamson Jan. 17, 2014, 3:34 p.m. UTC | #2
On Fri, 2014-01-17 at 13:55 +0100, Paolo Bonzini wrote:
> Il 16/01/2014 07:21, Alexey Kardashevskiy ha scritto:
> > There is a HOST_PAGE_ALIGN macro which makes sense for KVM accelerator
> > but it uses qemu_host_page_size/qemu_host_page_mask which initialized
> > for TCG only.
> > 
> > This moves qemu_host_page_size/qemu_host_page_mask initialization from
> > TCG's page_init() and adds a call for it from kvm_init().
> > 
> > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> > ---
> >  include/exec/exec-all.h |  1 +
> >  kvm-all.c               |  1 +
> >  translate-all.c         | 14 ++++++++------
> >  3 files changed, 10 insertions(+), 6 deletions(-)
> > 
> > diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
> > index ea90b64..3b03cbf 100644
> > --- a/include/exec/exec-all.h
> > +++ b/include/exec/exec-all.h
> > @@ -81,6 +81,7 @@ void cpu_gen_init(void);
> >  int cpu_gen_code(CPUArchState *env, struct TranslationBlock *tb,
> >                   int *gen_code_size_ptr);
> >  bool cpu_restore_state(CPUArchState *env, uintptr_t searched_pc);
> > +void page_size_init(void);
> >  
> >  void QEMU_NORETURN cpu_resume_from_signal(CPUArchState *env1, void *puc);
> >  void QEMU_NORETURN cpu_io_recompile(CPUArchState *env, uintptr_t retaddr);
> > diff --git a/kvm-all.c b/kvm-all.c
> > index 0bfb060..edf2365 100644
> > --- a/kvm-all.c
> > +++ b/kvm-all.c
> > @@ -1360,6 +1360,7 @@ int kvm_init(void)
> >       * page size for the system though.
> >       */
> >      assert(TARGET_PAGE_SIZE <= getpagesize());
> > +    page_size_init();
> >  
> >  #ifdef KVM_CAP_SET_GUEST_DEBUG
> >      QTAILQ_INIT(&s->kvm_sw_breakpoints);
> > diff --git a/translate-all.c b/translate-all.c
> > index 105c25a..543e1ff 100644
> > --- a/translate-all.c
> > +++ b/translate-all.c
> > @@ -289,17 +289,15 @@ static inline void map_exec(void *addr, long size)
> >  }
> >  #endif
> >  
> > -static void page_init(void)
> > +void page_size_init(void)
> >  {
> >      /* NOTE: we can always suppose that qemu_host_page_size >=
> >         TARGET_PAGE_SIZE */
> >  #ifdef _WIN32
> > -    {
> > -        SYSTEM_INFO system_info;
> > +    SYSTEM_INFO system_info;
> >  
> > -        GetSystemInfo(&system_info);
> > -        qemu_real_host_page_size = system_info.dwPageSize;
> > -    }
> > +    GetSystemInfo(&system_info);
> > +    qemu_real_host_page_size = system_info.dwPageSize;
> >  #else
> >      qemu_real_host_page_size = getpagesize();
> >  #endif
> > @@ -310,7 +308,11 @@ static void page_init(void)
> >          qemu_host_page_size = TARGET_PAGE_SIZE;
> >      }
> >      qemu_host_page_mask = ~(qemu_host_page_size - 1);
> > +}
> >  
> > +static void page_init(void)
> > +{
> > +    page_size_init();
> >  #if defined(CONFIG_BSD) && defined(CONFIG_USER_ONLY)
> >      {
> >  #ifdef HAVE_KINFO_GETVMMAP
> > 
> 
> Acked-by: Paolo Bonzini <pbonzini@redhat.com>

How should this go in?  With your ack I could include it in my vfio tree
with patch 2/2.  Sound ok?  Thanks,

Alex
Paolo Bonzini Jan. 17, 2014, 4:11 p.m. UTC | #3
Il 17/01/2014 16:34, Alex Williamson ha scritto:
>> Acked-by: Paolo Bonzini <pbonzini@redhat.com>
> 
> How should this go in?  With your ack I could include it in my vfio tree
> with patch 2/2.  Sound ok?  Thanks,

Yup, thanks!

This is just a small enabler, the real meat is in patch 2 so it makes
sense for you to pick up both.

Paolo
diff mbox

Patch

diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
index ea90b64..3b03cbf 100644
--- a/include/exec/exec-all.h
+++ b/include/exec/exec-all.h
@@ -81,6 +81,7 @@  void cpu_gen_init(void);
 int cpu_gen_code(CPUArchState *env, struct TranslationBlock *tb,
                  int *gen_code_size_ptr);
 bool cpu_restore_state(CPUArchState *env, uintptr_t searched_pc);
+void page_size_init(void);
 
 void QEMU_NORETURN cpu_resume_from_signal(CPUArchState *env1, void *puc);
 void QEMU_NORETURN cpu_io_recompile(CPUArchState *env, uintptr_t retaddr);
diff --git a/kvm-all.c b/kvm-all.c
index 0bfb060..edf2365 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -1360,6 +1360,7 @@  int kvm_init(void)
      * page size for the system though.
      */
     assert(TARGET_PAGE_SIZE <= getpagesize());
+    page_size_init();
 
 #ifdef KVM_CAP_SET_GUEST_DEBUG
     QTAILQ_INIT(&s->kvm_sw_breakpoints);
diff --git a/translate-all.c b/translate-all.c
index 105c25a..543e1ff 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -289,17 +289,15 @@  static inline void map_exec(void *addr, long size)
 }
 #endif
 
-static void page_init(void)
+void page_size_init(void)
 {
     /* NOTE: we can always suppose that qemu_host_page_size >=
        TARGET_PAGE_SIZE */
 #ifdef _WIN32
-    {
-        SYSTEM_INFO system_info;
+    SYSTEM_INFO system_info;
 
-        GetSystemInfo(&system_info);
-        qemu_real_host_page_size = system_info.dwPageSize;
-    }
+    GetSystemInfo(&system_info);
+    qemu_real_host_page_size = system_info.dwPageSize;
 #else
     qemu_real_host_page_size = getpagesize();
 #endif
@@ -310,7 +308,11 @@  static void page_init(void)
         qemu_host_page_size = TARGET_PAGE_SIZE;
     }
     qemu_host_page_mask = ~(qemu_host_page_size - 1);
+}
 
+static void page_init(void)
+{
+    page_size_init();
 #if defined(CONFIG_BSD) && defined(CONFIG_USER_ONLY)
     {
 #ifdef HAVE_KINFO_GETVMMAP