
Dear Kumar Gala,
In message 17E34909-A735-4920-9980-059D95535774@kernel.crashing.org you wrote:
If so, I wonder what has changed, because this used to be working in older versions of the kernel? I did not attampt a full git bisect, but from some old images I still found it appears it must have been broken between 2.6.16 ("reboot" in Linux works fine) and 2.6.27 ("reboot" does not work any more) - so probably this was part of the arch/ppc => arch/powerpc rework.
Possible, its a pretty fragile reset solution so one (or a thousand) of a million things could be the issue.
Is there any specific reason we don't use the good old approach of triggering an unhandled machine check exception?
Hmm, when did we do that? I've got no issues with it if it causes HRESET_REQ to be signaled on the older devices. On MPC8548 and greater we provided a means for software to causes HRESET_REQ to be asserted. So if an unhandled mcheck will do this sounds good to me.
For example for PQ2 Linux does this (in arch/powerpc/platforms/82xx/pq2.c):
26 void pq2_restart(char *cmd) 27 { 28 local_irq_disable(); 29 setbits32(&cpm2_immr->im_clkrst.car_rmr, RMR_CSRE); 30 31 /* Clear the ME,EE,IR & DR bits in MSR to cause checkstop */ 32 mtmsr(mfmsr() & ~(MSR_ME | MSR_EE | MSR_IR | MSR_DR)); 33 in_8(&cpm2_immr->im_clkrst.res[0]); 34 35 panic("Restart failed\n"); 36 }
So we set the Checkstop Reset enable, and then reference a known bad address.
Should we try and do the same here, too?
Best regards,
Wolfgang Denk