Message ID | Pine.NEB.4.64.1701251446290.11466@sdf.lonestar.org |
---|---|
State | New |
Headers | show |
On 25.01.2017 15:50, Valentin Plotkin wrote: > Machines bamboo, e500 and virtex-ml507 assume a certain MMU model, > otherwise resulting in unpredictable behavior. Add apropriate checks > into *_init functions. > > Signed-off-by: Valentin <caliborn@sdf.org> Missing last name? ------^ Apart from that, the patch looks fine to me now, thanks for the update! Thomas > --- > hw/ppc/e500.c | 6 ++++++ > hw/ppc/ppc440_bamboo.c | 6 ++++++ > hw/ppc/virtex_ml507.c | 7 +++++++ > 3 files changed, 19 insertions(+) > > diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c > index cf8b122..5b1958c 100644 > --- a/hw/ppc/e500.c > +++ b/hw/ppc/e500.c > @@ -827,6 +827,12 @@ void ppce500_init(MachineState *machine, > PPCE500Params *params) > env = &cpu->env; > cs = CPU(cpu); > > + if (env->mmu_model != POWERPC_MMU_BOOKE206) { > + fprintf(stderr, "MMU model %i not supported by this > machine.\n", > + env->mmu_model); > + exit(1); > + } > + > if (!firstenv) { > firstenv = env; > } > diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c > index 5c535b1..9d997bf 100644 > --- a/hw/ppc/ppc440_bamboo.c > +++ b/hw/ppc/ppc440_bamboo.c > @@ -193,6 +193,12 @@ static void bamboo_init(MachineState *machine) > } > env = &cpu->env; > > + if (env->mmu_model != POWERPC_MMU_BOOKE) { > + fprintf(stderr, "MMU model %i not supported by this machine.\n", > + env->mmu_model); > + exit(1); > + } > + > qemu_register_reset(main_cpu_reset, cpu); > ppc_booke_timers_init(cpu, 400000000, 0); > ppc_dcr_init(env, NULL, NULL); > diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c > index b97d966..fdbcf22 100644 > --- a/hw/ppc/virtex_ml507.c > +++ b/hw/ppc/virtex_ml507.c > @@ -221,6 +221,13 @@ static void virtex_init(MachineState *machine) > > cpu = ppc440_init_xilinx(&ram_size, 1, machine->cpu_model, 400000000); > env = &cpu->env; > + > + if (env->mmu_model != POWERPC_MMU_BOOKE) { > + fprintf(stderr, "MMU model %i not supported by this machine.\n", > + env->mmu_model); > + exit(1); > + } > + > qemu_register_reset(main_cpu_reset, cpu); > > memory_region_allocate_system_memory(phys_ram, NULL, "ram", ram_size);
On Wed, Jan 25, 2017 at 02:50:30PM +0000, Valentin Plotkin wrote: > Machines bamboo, e500 and virtex-ml507 assume a certain MMU model, > otherwise resulting in unpredictable behavior. Add apropriate checks > into *_init functions. The Virtex part looks OK. I couldn't apply the patch with git am though... > > Signed-off-by: Valentin <caliborn@sdf.org> > --- > hw/ppc/e500.c | 6 ++++++ > hw/ppc/ppc440_bamboo.c | 6 ++++++ > hw/ppc/virtex_ml507.c | 7 +++++++ > 3 files changed, 19 insertions(+) > > diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c > index cf8b122..5b1958c 100644 > --- a/hw/ppc/e500.c > +++ b/hw/ppc/e500.c > @@ -827,6 +827,12 @@ void ppce500_init(MachineState *machine, PPCE500Params *params) > env = &cpu->env; > cs = CPU(cpu); > > + if (env->mmu_model != POWERPC_MMU_BOOKE206) { > + fprintf(stderr, "MMU model %i not supported by this machine.\n", > + env->mmu_model); > + exit(1); > + } > + > if (!firstenv) { > firstenv = env; > } > diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c > index 5c535b1..9d997bf 100644 > --- a/hw/ppc/ppc440_bamboo.c > +++ b/hw/ppc/ppc440_bamboo.c > @@ -193,6 +193,12 @@ static void bamboo_init(MachineState *machine) > } > env = &cpu->env; > > + if (env->mmu_model != POWERPC_MMU_BOOKE) { > + fprintf(stderr, "MMU model %i not supported by this machine.\n", > + env->mmu_model); > + exit(1); > + } > + > qemu_register_reset(main_cpu_reset, cpu); > ppc_booke_timers_init(cpu, 400000000, 0); > ppc_dcr_init(env, NULL, NULL); > diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c > index b97d966..fdbcf22 100644 > --- a/hw/ppc/virtex_ml507.c > +++ b/hw/ppc/virtex_ml507.c > @@ -221,6 +221,13 @@ static void virtex_init(MachineState *machine) > > cpu = ppc440_init_xilinx(&ram_size, 1, machine->cpu_model, 400000000); > env = &cpu->env; > + > + if (env->mmu_model != POWERPC_MMU_BOOKE) { > + fprintf(stderr, "MMU model %i not supported by this machine.\n", > + env->mmu_model); > + exit(1); > + } > + > qemu_register_reset(main_cpu_reset, cpu); > > memory_region_allocate_system_memory(phys_ram, NULL, "ram", ram_size); > -- > 2.5.5 > > > This fixes 'qemu-system-ppc -nographic -cpu G2leGP3 -M ppce500; bug from > BiteSizedTasks. > > Version 2: fixed style, moved checks from mmubooke_create_initial_mapping > to *_init. Thanks to Thomas Huth <thuth@redhat.com>.
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index cf8b122..5b1958c 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -827,6 +827,12 @@ void ppce500_init(MachineState *machine, PPCE500Params *params) env = &cpu->env; cs = CPU(cpu); + if (env->mmu_model != POWERPC_MMU_BOOKE206) { + fprintf(stderr, "MMU model %i not supported by this machine.\n", + env->mmu_model); + exit(1); + } + if (!firstenv) { firstenv = env; } diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 5c535b1..9d997bf 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -193,6 +193,12 @@ static void bamboo_init(MachineState *machine) } env = &cpu->env; + if (env->mmu_model != POWERPC_MMU_BOOKE) { + fprintf(stderr, "MMU model %i not supported by this machine.\n", + env->mmu_model); + exit(1); + } + qemu_register_reset(main_cpu_reset, cpu); ppc_booke_timers_init(cpu, 400000000, 0); ppc_dcr_init(env, NULL, NULL); diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index b97d966..fdbcf22 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -221,6 +221,13 @@ static void virtex_init(MachineState *machine) cpu = ppc440_init_xilinx(&ram_size, 1, machine->cpu_model, 400000000); env = &cpu->env; + + if (env->mmu_model != POWERPC_MMU_BOOKE) { + fprintf(stderr, "MMU model %i not supported by this machine.\n", + env->mmu_model); + exit(1); + } + qemu_register_reset(main_cpu_reset, cpu); memory_region_allocate_system_memory(phys_ram, NULL, "ram", ram_size);
Machines bamboo, e500 and virtex-ml507 assume a certain MMU model, otherwise resulting in unpredictable behavior. Add apropriate checks into *_init functions. Signed-off-by: Valentin <caliborn@sdf.org> --- hw/ppc/e500.c | 6 ++++++ hw/ppc/ppc440_bamboo.c | 6 ++++++ hw/ppc/virtex_ml507.c | 7 +++++++ 3 files changed, 19 insertions(+)