lkml.org 
[lkml]   [2011]   [Nov]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/5] QEMU Add cpu_free() to support arch related CPUState release
    Date
    From: Liu Ping Fan <pingfank@linux.vnet.ibm.com>

    When exiting from vcpu thread, the CPUState must be freed firstly.
    And the handling process is an arch related.

    Signed-off-by: Liu Ping Fan <pingfank@linux.vnet.ibm.com>
    ---
    hw/apic.c | 4 ++++
    target-i386/cpu.h | 3 +++
    target-i386/helper.c | 8 ++++++++
    3 files changed, 15 insertions(+), 0 deletions(-)
    diff --git a/hw/apic.c b/hw/apic.c
    index 34fa1dd..6472045 100644
    --- a/hw/apic.c
    +++ b/hw/apic.c
    @@ -511,6 +511,10 @@ static void apic_get_delivery_bitmask(uint32_t *deliver_bitmask,
    }
    }
    }
    +void apic_free(DeviceState *d)
    +{
    + qdev_free(d);
    +}

    void apic_init_reset(DeviceState *d)
    {
    diff --git a/target-i386/cpu.h b/target-i386/cpu.h
    index 251e63b..da07781 100644
    --- a/target-i386/cpu.h
    +++ b/target-i386/cpu.h
    @@ -767,6 +767,7 @@ typedef struct CPUX86State {
    } CPUX86State;

    CPUX86State *cpu_x86_init(const char *cpu_model);
    +void cpu_x86_free(CPUState *env);
    CPUX86State *x86_phyid_to_cpu(int phy_id);
    int cpu_x86_exec(CPUX86State *s);
    void cpu_x86_close(CPUX86State *s);
    @@ -950,6 +951,7 @@ CPUState *pc_new_cpu(const char *cpu_model);
    #define cpu_list_id x86_cpu_list
    #define cpudef_setup x86_cpudef_setup

    +#define cpu_free cpu_x86_free
    #define CPU_SAVE_VERSION 12

    /* MMU modes definitions */
    @@ -1064,5 +1066,6 @@ void svm_check_intercept(CPUState *env1, uint32_t type);

    uint32_t cpu_cc_compute_all(CPUState *env1, int op);

    +void apic_free(DeviceState *d);
    #define cpu_phyid_to_cpu x86_phyid_to_cpu
    #endif /* CPU_I386_H */
    diff --git a/target-i386/helper.c b/target-i386/helper.c
    index e35a75e..c9fadc3 100644
    --- a/target-i386/helper.c
    +++ b/target-i386/helper.c
    @@ -1263,6 +1263,14 @@ CPUX86State *cpu_x86_init(const char *cpu_model)
    return env;
    }

    +void cpu_x86_free(CPUState *env)
    +{
    + if (env->apic_state != NULL) {
    + apic_free(env->apic_state);
    + }
    + g_free(env);
    +}
    +
    CPUX86State *x86_phyid_to_cpu(int phy_id)
    {
    CPUX86State *env = first_cpu;
    --
    1.7.4.4


    \
     
     \ /
      Last update: 2011-11-27 03:49    [from the cache]
    ©2003-2011 Jasper Spaans