On 04/02/2013 04:28:10 AM, Jia Hongtao-B38951 wrote:


> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Saturday, March 30, 2013 12:34 AM
> To: Jia Hongtao-B38951
> Cc: Wood Scott-B07421; David Laight; linuxppc-dev@lists.ozlabs.org;
> Stuart Yoder
> Subject: Re: [PATCH V4] powerpc/85xx: Add machine check handler to fix
> PCIe erratum on mpc85xx
>
> On 03/29/2013 03:03:51 AM, Jia Hongtao-B38951 wrote:
> > BTW, I'm still not sure how to deal with LD instruction with update.
>
> You would need to do the update yourself. Or just say that's a case you
> don't handle, and return 0.
>
> Again, please check for the size of the load operation.
>
> -Scott

For informing error to the process that hold the stall instruction
we need to do:
1. Verify the instruction is load.
2. Fill the rd register with ~0UL.
3. Deal with the load instruction with update.

Here is the problems:
1. So many load instructions to handle. There are dozens of load instructions
   and most of them with different op code. Like:

If you don't want to handle all of them, then don't, but in case you run into an instruction you don't handle, don't skip it -- just let the normal machine check handler run.


   lbz: 1 0 0 0 1 0
   lhz: 1 0 1 0 0 0
   lwz: 1 0 0 0 0 0
   ld : 1 1 1 0 1 0
   ...

   Is there any available API for verifying the load instruction?

I don't know of anything in terms of an *API*... after all, you're not just "verifying" it, you're extracting information to determine how to emulate the instruction.

As for code you could borrow from, there's KVM emulation and probably other places.

2. For different size of load operation could we just fill the rd register with
   ~0UL?

Who knows in what ways the compiler is making assumptions about the upper bits being zero after an lbz, etc...

3. A load instruction with update could not just verified by op code. I'd like to leave it along. I think we could not fix but just inform the error by filling the rd with ~0UL. Could you explain why should we care about the update?

If you're emulating the instruction, you need to handle all of that instruction's effects. If you're not going to emulate the instruction, don't skip it.

-Scott
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to