Messages in this thread | | | Subject | Re: [PATCH] [3/4] x86: MCE: Improve mce_get_rip | From | Huang Ying <> | Date | Fri, 24 Apr 2009 14:35:11 +0800 |
| |
On Fri, 2009-04-24 at 14:16 +0800, Hidetoshi Seto wrote: > Huang Ying wrote: > > Add some description for the patch, hope that to be more clear. > > > > Best Regards, > > Huang Ying > > ---------------------------------------------> > > mce_get_rip() is used to get IP when MCE is generated, usually from > > the stack. But the IP on the stack is not always valid. > > MCG_STATUS_RIPV indicates program can restart from the IP on the stack, > > so if it is set, the IP is valid. MCG_STATUS_EIPV indicate IP on the > > stack is directly associated with the error, so if it is set, the IP > > is valid too. > > > > In current implementation, no IP will be returned (and then reported) > > if MCG_STATUS_RIPV is not set and MCG_STATUS_EIPV is set. This patch > > fixes this issue by returning IP on the stack when MCG_STATUS_EIPV is > > set. > > > > In some CPU, a MSR (rip_msr) provides another way to get IP when MCE > > is generated. This is used by mce_get_rip() too. > > > > There is no MSR for CS, in current implementation, if rip_msr is used > > to get IP, reported CS is set to 0. But in fact, the CS on the stack > > can be trusted if MCG_STATUS_RIPV or MCG_STATUS_EIPV is set. This > > patch fixes this issue by keeping reported CS when rip_msr is used. > > So the bug is in short: > In some cases no IP/CS reported even there were valid records. > Right? > > Then in other words it will mean lost of error information, that is not > good for error investigation. > > One question is: if (RIPV,EIPV) = (0,0), then is the IP on the stack > really invalid value, or is it still point IP when MCE is generated? > I suppose it is not invalid. If a processor encounters MCE and if it > is not sure what happened, then it will store the IP on the stack, > indicating neither of flags. > > If this supposition is correct, the best way is pick the value on > the stack unconditionally, and record valid flags together.
According to spec, the IP on stack can be not related to MCE if (RIPV,EIPV) = (0,0). So it is meaningless to report them. If you report them unconditionally, you just push the logic to user space or administrator.
Best Regards, Huang Ying
[unhandled content-type:application/pgp-signature] | |