| .. | .. |
|---|
| 183 | 183 | DEFINE_GUEST_HANDLE_STRUCT(mc_info); |
|---|
| 184 | 184 | |
|---|
| 185 | 185 | #define __MC_MSR_ARRAYSIZE 8 |
|---|
| 186 | | -#define __MC_MSR_MCGCAP 0 |
|---|
| 187 | 186 | #define __MC_NMSRS 1 |
|---|
| 188 | 187 | #define MC_NCAPS 7 |
|---|
| 189 | 188 | struct mcinfo_logical_cpu { |
|---|
| .. | .. |
|---|
| 332 | 331 | }; |
|---|
| 333 | 332 | DEFINE_GUEST_HANDLE_STRUCT(xen_mc); |
|---|
| 334 | 333 | |
|---|
| 335 | | -/* Fields are zero when not available */ |
|---|
| 334 | +/* |
|---|
| 335 | + * Fields are zero when not available. Also, this struct is shared with |
|---|
| 336 | + * userspace mcelog and thus must keep existing fields at current offsets. |
|---|
| 337 | + * Only add new fields to the end of the structure |
|---|
| 338 | + */ |
|---|
| 336 | 339 | struct xen_mce { |
|---|
| 337 | 340 | __u64 status; |
|---|
| 338 | 341 | __u64 misc; |
|---|
| .. | .. |
|---|
| 353 | 356 | __u32 socketid; /* CPU socket ID */ |
|---|
| 354 | 357 | __u32 apicid; /* CPU initial apic ID */ |
|---|
| 355 | 358 | __u64 mcgcap; /* MCGCAP MSR: machine check capabilities of CPU */ |
|---|
| 359 | + __u64 synd; /* MCA_SYND MSR: only valid on SMCA systems */ |
|---|
| 360 | + __u64 ipid; /* MCA_IPID MSR: only valid on SMCA systems */ |
|---|
| 361 | + __u64 ppin; /* Protected Processor Inventory Number */ |
|---|
| 356 | 362 | }; |
|---|
| 357 | 363 | |
|---|
| 358 | 364 | /* |
|---|