Re: [PATCH v2 00/28] Misc PPC exception and BookE MMU clean ups
On Tue, 7 May 2024, Nicholas Piggin wrote: On Thu May 2, 2024 at 9:43 AM AEST, BALATON Zoltan wrote: This series does some further clean up mostly around BookE MMU to untangle it from other MMU models. It also contains some other changes that I've come up with while working on this. The first 3 patches are from the last exception handling clean up series that were dropped due to some error on CI but I'm not sure if that was because of some CI infrastructure problem or some problem with the patches as the error did not make much sense. So these patches are only rebased now, I made no other change to them until the issue is understood better. The rest are new patches I've added since tha last series. Please review. Not CI infrastructure as far as I could tell it's upstream gitlab. But I could not figure out how to reproduce at the time... I ended up running out of time to look too closely though. I could reproduce it at the end so it wasn't CI failure but I don't completely understand what is it. I think I won't take the first 2, yes arguably the CPU does execute the sc instruction, but it's actually a good rule for the exception handler to be invoked with the nip that caused the exception, and SRR0/1 to be set by the handler according to semantics. v2: - Fix user mode issue in patch 1 by keeping old behaviour for user mode I forgot to change the blurb above but in this v2 version I think I've solved that problem as noted here but I don't know why the user mode SC is different and could not find where is it handled. This version seems to work though. Regards, BALATON Zoltan
Re: [PATCH v2 00/28] Misc PPC exception and BookE MMU clean ups
On Thu May 2, 2024 at 9:43 AM AEST, BALATON Zoltan wrote: > This series does some further clean up mostly around BookE MMU to > untangle it from other MMU models. It also contains some other changes > that I've come up with while working on this. The first 3 patches are > from the last exception handling clean up series that were dropped due > to some error on CI but I'm not sure if that was because of some CI > infrastructure problem or some problem with the patches as the error > did not make much sense. So these patches are only rebased now, I made > no other change to them until the issue is understood better. The rest > are new patches I've added since tha last series. Please review. Not CI infrastructure as far as I could tell it's upstream gitlab. But I could not figure out how to reproduce at the time... I ended up running out of time to look too closely though. I think I won't take the first 2, yes arguably the CPU does execute the sc instruction, but it's actually a good rule for the exception handler to be invoked with the nip that caused the exception, and SRR0/1 to be set by the handler according to semantics. Thanks, Nick > > v2: > - Fix user mode issue in patch 1 by keeping old behaviour for user mode > - Add some more MMU clean up patches > > Regards, > BALATON Zoltan > > BALATON Zoltan (28): > target/ppc: Fix gen_sc to use correct nip > target/ppc: Move patching nip from exception handler to helper_scv > target/ppc: Simplify syscall exception handlers > target/ppc: Remove unused helper > target/ppc/mmu_common.c: Move calculation of a value closer to its > usage > target/ppc/mmu_common.c: Move calculation of a value closer to its > usage > target/ppc/mmu_common.c: Remove unneeded local variable > target/ppc/mmu_common.c: Simplify checking for real mode > target/ppc/mmu_common.c: Drop cases for unimplemented MPC8xx MMU > target/ppc/mmu_common.c: Introduce mmu6xx_get_physical_address() > target/ppc/mmu_common.c: Rename get_bat_6xx_tlb() > target/ppc/mmu_common.c: Split out BookE cases before checking real > mode > target/ppc/mmu_common.c: Split off real mode cases in > get_physical_address_wtlb() > target/ppc/mmu_common.c: Inline and remove check_physical() > target/ppc/mmu_common.c: Simplify mmubooke_get_physical_address() > target/ppc/mmu_common.c: Simplify mmubooke206_get_physical_address() > target/ppc/mmu_common.c: Fix misindented qemu_log_mask() calls > target/ppc/mmu_common.c: Deindent ppc_jumbo_xlate() > target/ppc/mmu_common.c: Replace hard coded constants in > ppc_jumbo_xlate() > target/ppc/mmu_common.c: Make get_physical_address_wtlb() static > target/ppc: Move mmu_ctx_t definition to mmu_common.c > target/ppc: Remove ppc_hash32_pp_prot() and reuse common function > target/ppc/mmu_common.c: Split off BookE handling from > ppc_jumbo_xlate() > target/ppc/mmu_common.c: Remove BookE handling from > get_physical_address_wtlb() > target/ppc/mmu_common.c: Simplify ppc_booke_xlate() > target/ppc/mmu_common.c: Move BookE MMU functions together > target/ppc: Remove id_tlbs flag from CPU env > target/ppc: Split off common 4xx TLB init > > hw/ppc/pegasos2.c| 2 +- > target/ppc/cpu.h | 1 - > target/ppc/cpu_init.c| 65 ++-- > target/ppc/excp_helper.c | 67 +--- > target/ppc/helper.h | 2 - > target/ppc/helper_regs.c | 1 - > target/ppc/internal.h| 19 +- > target/ppc/mmu-hash32.c | 47 +-- > target/ppc/mmu_common.c | 792 +++ > target/ppc/mmu_helper.c | 36 +- > target/ppc/translate.c | 21 +- > 11 files changed, 438 insertions(+), 615 deletions(-)
[PATCH v2 00/28] Misc PPC exception and BookE MMU clean ups
This series does some further clean up mostly around BookE MMU to untangle it from other MMU models. It also contains some other changes that I've come up with while working on this. The first 3 patches are from the last exception handling clean up series that were dropped due to some error on CI but I'm not sure if that was because of some CI infrastructure problem or some problem with the patches as the error did not make much sense. So these patches are only rebased now, I made no other change to them until the issue is understood better. The rest are new patches I've added since tha last series. Please review. v2: - Fix user mode issue in patch 1 by keeping old behaviour for user mode - Add some more MMU clean up patches Regards, BALATON Zoltan BALATON Zoltan (28): target/ppc: Fix gen_sc to use correct nip target/ppc: Move patching nip from exception handler to helper_scv target/ppc: Simplify syscall exception handlers target/ppc: Remove unused helper target/ppc/mmu_common.c: Move calculation of a value closer to its usage target/ppc/mmu_common.c: Move calculation of a value closer to its usage target/ppc/mmu_common.c: Remove unneeded local variable target/ppc/mmu_common.c: Simplify checking for real mode target/ppc/mmu_common.c: Drop cases for unimplemented MPC8xx MMU target/ppc/mmu_common.c: Introduce mmu6xx_get_physical_address() target/ppc/mmu_common.c: Rename get_bat_6xx_tlb() target/ppc/mmu_common.c: Split out BookE cases before checking real mode target/ppc/mmu_common.c: Split off real mode cases in get_physical_address_wtlb() target/ppc/mmu_common.c: Inline and remove check_physical() target/ppc/mmu_common.c: Simplify mmubooke_get_physical_address() target/ppc/mmu_common.c: Simplify mmubooke206_get_physical_address() target/ppc/mmu_common.c: Fix misindented qemu_log_mask() calls target/ppc/mmu_common.c: Deindent ppc_jumbo_xlate() target/ppc/mmu_common.c: Replace hard coded constants in ppc_jumbo_xlate() target/ppc/mmu_common.c: Make get_physical_address_wtlb() static target/ppc: Move mmu_ctx_t definition to mmu_common.c target/ppc: Remove ppc_hash32_pp_prot() and reuse common function target/ppc/mmu_common.c: Split off BookE handling from ppc_jumbo_xlate() target/ppc/mmu_common.c: Remove BookE handling from get_physical_address_wtlb() target/ppc/mmu_common.c: Simplify ppc_booke_xlate() target/ppc/mmu_common.c: Move BookE MMU functions together target/ppc: Remove id_tlbs flag from CPU env target/ppc: Split off common 4xx TLB init hw/ppc/pegasos2.c| 2 +- target/ppc/cpu.h | 1 - target/ppc/cpu_init.c| 65 ++-- target/ppc/excp_helper.c | 67 +--- target/ppc/helper.h | 2 - target/ppc/helper_regs.c | 1 - target/ppc/internal.h| 19 +- target/ppc/mmu-hash32.c | 47 +-- target/ppc/mmu_common.c | 792 +++ target/ppc/mmu_helper.c | 36 +- target/ppc/translate.c | 21 +- 11 files changed, 438 insertions(+), 615 deletions(-) -- 2.30.9