On Fri, 26 Nov 2021, Cédric Le Goater wrote:
Right. If we're doing this to say "I can boot a kernel with a 7450 cpu in QEMU" but the implementation is different from real hardware, then I'm not sure what the real value is. That effectively leaves option b) if someone is willing to do the work, or as you say to simply remove the code from QEMU.
Yeah, that is a good point. Although the software TLB is well contained, so we could certainly document that our 7450s don't have that feature and call it a day. Does QEMU have any policy on how much of a machine is required to be implemented?
I am more inclined to apply c) for now as I said, just to have some code running on the CPU and maybe document in a gitlab issue that we're lacking the runtime switch and eventually implement that. It's not like this is high traffic code anyway. It has been broken for 10+ years.
That said, if Cédric and Daniel see more value in moving the 7450s to the POWERPC_MMU_32B I won't oppose.
I am in favor of dropping unused code in QEMU and keeping the CPUs for which we have support in Linux using the POWERPC_MMU_32B in QEMU and the openbios patch. If we need SoftTLB support for the 74x CPUs in QEMU, we can always dig in the history.
If we can't find a guest that needs it and can be used to test with it may be OK to remove it for now but digging the history may not be easy if somebody later comes along with a guest that would need this. Likely they would just go away when finding it's not supported or maybe try to redo it from scratch and not think of checking history first. So if you drop it maybe leave a one line comment at some obvious place saying something like "74xx soft TLB removed in commit xxxxx" to make it simpler for those who may want to resurrect it later.
Regards, BALATON Zoltan
We can give FreeBSB a try also since they had support for the G4 :
With the openbios patch, Linux boots fine under 7450, 7455, 7447 CPUs.
Under 7448, it drops in xmon with a : kernel tried to execute exec-protected page (c07fdd98) - exploit attempt? (uid: 0) BUG: Unable to handle kernel instruction fetch Faulting instruction address: 0xc07fdd98 Vector: 400 (Instruction Access) at [f1019d30] pc: c07fdd98: __do_softirq+0x0/0x2f0 lr: c00516a4: irq_exit+0xbc/0xf8 sp: f1019df0 msr: 10001032 current = 0xc0d00000 pid = 1, comm = swapper
This should be fixable.