|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [PATCH 4] MCA physical address check when calculate domain
MCA physical address check when calculate domain
Bank addr maybe invalid, or
Bank addr maybe physical/memory/linear address or segment offset.
This patch add mca MCi_STATUS_MISCV/MCi_STATUS_ADDRV check, and add physical
address verify,
so that it work safe when calculate domain.
Signed-off-by: Liu, Jinsong <jinsong.liu@xxxxxxxxx>
diff -r e4e1efda200f xen/arch/x86/cpu/mcheck/mce.c
--- a/xen/arch/x86/cpu/mcheck/mce.c Thu May 05 13:54:29 2011 +0800
+++ b/xen/arch/x86/cpu/mcheck/mce.c Fri May 06 13:56:21 2011 +0800
@@ -151,7 +151,6 @@ static struct mcinfo_bank *mca_init_bank
struct mc_info *mi, int bank)
{
struct mcinfo_bank *mib;
- uint64_t addr=0, misc = 0;
if (!mi)
return NULL;
@@ -170,22 +169,23 @@ static struct mcinfo_bank *mca_init_bank
mib->common.size = sizeof (struct mcinfo_bank);
mib->mc_bank = bank;
- addr = misc = 0;
if (mib->mc_status & MCi_STATUS_MISCV)
mib->mc_misc = mca_rdmsr(MSR_IA32_MCx_MISC(bank));
if (mib->mc_status & MCi_STATUS_ADDRV)
- {
mib->mc_addr = mca_rdmsr(MSR_IA32_MCx_ADDR(bank));
- if (mfn_valid(paddr_to_pfn(mib->mc_addr))) {
- struct domain *d;
+ if ((mib->mc_status & MCi_STATUS_MISCV) &&
+ (mib->mc_status & MCi_STATUS_ADDRV) &&
+ ((mib->mc_misc & MCi_MISC_ADDRMOD_MASK) == MCi_MISC_PHYSMOD) &&
+ mfn_valid(paddr_to_pfn(mib->mc_addr)))
+ {
+ struct domain *d;
- d = maddr_get_owner(mib->mc_addr);
- if (d != NULL && (who == MCA_POLLER ||
- who == MCA_CMCI_HANDLER))
- mib->mc_domid = d->domain_id;
- }
+ d = maddr_get_owner(mib->mc_addr);
+ if (d != NULL && (who == MCA_POLLER ||
+ who == MCA_CMCI_HANDLER))
+ mib->mc_domid = d->domain_id;
}
if (who == MCA_CMCI_HANDLER) {
mca-cleanup-4.patch
Description: mca-cleanup-4.patch
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] [PATCH 4] MCA physical address check when calculate domain,
Liu, Jinsong <=
|
|
|
|
|