tree: git://git.cmpxchg.org/linux-mmotm.git master head: f6bf2766c2091cbf8ffcc2c5009875dbdb678282 commit: 58ce2542a731938deecca455835fb7b399111728 [450/471] powerpc: handle new __get_cpu_var calls in 3.14 config: make ARCH=powerpc allmodconfig All error/warnings: arch/powerpc/kernel/mce.c: In function 'save_mce_event': >> arch/powerpc/kernel/mce.c:77:36: error: incompatible types when initializing type 'struct machine_check_event *' using type 'struct machine_check_event' struct machine_check_event *mce = __this_cpu_read(mce_event[index]); ^ arch/powerpc/kernel/mce.c: In function 'get_mce_event': >> arch/powerpc/kernel/mce.c:156:10: error: incompatible types when assigning to type 'struct machine_check_event *' from type 'struct machine_check_event' mc_evt = __this_cpu_read(mce_event[index]); ^ vim +77 arch/powerpc/kernel/mce.c 71 void save_mce_event(struct pt_regs *regs, long handled, 72 struct mce_error_info *mce_err, 73 uint64_t addr) 74 { 75 uint64_t srr1; 76 int index = __this_cpu_inc_return(mce_nest_count); > 77 struct machine_check_event *mce = __this_cpu_read(mce_event[index]); 78 79 /* 80 * Return if we don't have enough space to log mce event. 81 * mce_nest_count may go beyond MAX_MC_EVT but that's ok, 82 * the check below will stop buffer overrun. 83 */ 84 if (index >= MAX_MC_EVT) 85 return; 86 87 /* Populate generic machine check info */ 88 mce->version = MCE_V1; 89 mce->srr0 = regs->nip; 90 mce->srr1 = regs->msr; 91 mce->gpr3 = regs->gpr[3]; 92 mce->in_use = 1; 93 94 mce->initiator = MCE_INITIATOR_CPU; 95 if (handled) 96 mce->disposition = MCE_DISPOSITION_RECOVERED; 97 else 98 mce->disposition = MCE_DISPOSITION_NOT_RECOVERED; 99 mce->severity = MCE_SEV_ERROR_SYNC; 100 101 srr1 = regs->msr; 102 103 /* 104 * Populate the mce error_type and type-specific error_type. 105 */ 106 mce_set_error_info(mce, mce_err); 107 108 if (!addr) 109 return; 110 111 if (mce->error_type == MCE_ERROR_TYPE_TLB) { 112 mce->u.tlb_error.effective_address_provided = true; 113 mce->u.tlb_error.effective_address = addr; 114 } else if (mce->error_type == MCE_ERROR_TYPE_SLB) { 115 mce->u.slb_error.effective_address_provided = true; 116 mce->u.slb_error.effective_address = addr; 117 } else if (mce->error_type == MCE_ERROR_TYPE_ERAT) { 118 mce->u.erat_error.effective_address_provided = true; 119 mce->u.erat_error.effective_address = addr; 120 } else if (mce->error_type == MCE_ERROR_TYPE_UE) { 121 mce->u.ue_error.effective_address_provided = true; 122 mce->u.ue_error.effective_address = addr; 123 } 124 return; 125 } 126 127 /* 128 * get_mce_event: 129 * mce Pointer to machine_check_event structure to be filled. 130 * release Flag to indicate whether to free the event slot or not. 131 * 0 <= do not release the mce event. Caller will invoke 132 * release_mce_event() once event has been consumed. 133 * 1 <= release the slot. 134 * 135 * return 1 = success 136 * 0 = failure 137 * 138 * get_mce_event() will be called by platform specific machine check 139 * handle routine and in KVM. 140 * When we call get_mce_event(), we are still in interrupt context and 141 * preemption will not be scheduled until ret_from_expect() routine 142 * is called. 143 */ 144 int get_mce_event(struct machine_check_event *mce, bool release) 145 { 146 int index = __this_cpu_read(mce_nest_count) - 1; 147 struct machine_check_event *mc_evt; 148 int ret = 0; 149 150 /* Sanity check */ 151 if (index < 0) 152 return ret; 153 154 /* Check if we have MCE info to process. */ 155 if (index < MAX_MC_EVT) { > 156 mc_evt = __this_cpu_read(mce_event[index]); 157 /* Copy the event structure and release the original */ 158 if (mce) 159 *mce = *mc_evt; --- 0-DAY kernel build testing backend Open Source Technology Center http://lists.01.org/mailman/listinfo/kbuild Intel Corporation -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>