Lines Matching +full:mic +full:- +full:int
69 static int xen_mce_chrdev_open_count; /* #times opened */
70 static int xen_mce_chrdev_open_exclu; /* already open exclusive? */
74 static int xen_mce_chrdev_open(struct inode *inode, struct file *file) in xen_mce_chrdev_open()
79 (xen_mce_chrdev_open_count && (file->f_flags & O_EXCL))) { in xen_mce_chrdev_open()
82 return -EBUSY; in xen_mce_chrdev_open()
85 if (file->f_flags & O_EXCL) in xen_mce_chrdev_open()
94 static int xen_mce_chrdev_release(struct inode *inode, struct file *file) in xen_mce_chrdev_release()
98 xen_mce_chrdev_open_count--; in xen_mce_chrdev_release()
111 int i, err; in xen_mce_chrdev_read()
118 err = -EINVAL; in xen_mce_chrdev_read()
134 err = -EFAULT; in xen_mce_chrdev_read()
139 return err ? err : buf - ubuf; in xen_mce_chrdev_read()
152 static long xen_mce_chrdev_ioctl(struct file *f, unsigned int cmd, in xen_mce_chrdev_ioctl()
155 int __user *p = (int __user *)arg; in xen_mce_chrdev_ioctl()
158 return -EPERM; in xen_mce_chrdev_ioctl()
175 return -ENOTTY; in xen_mce_chrdev_ioctl()
218 static int convert_log(struct mc_info *mi) in convert_log()
220 struct mcinfo_common *mic; in convert_log() local
224 unsigned int i, j; in convert_log()
226 mic = NULL; in convert_log()
227 x86_mcinfo_lookup(&mic, mi, MC_TYPE_GLOBAL); in convert_log()
228 if (unlikely(!mic)) { in convert_log()
230 return -ENODEV; in convert_log()
235 mc_global = (struct mcinfo_global *)mic; in convert_log()
236 m.mcgstatus = mc_global->mc_gstatus; in convert_log()
237 m.apicid = mc_global->mc_apicid; in convert_log()
244 return -ENODEV; in convert_log()
262 mic = NULL; in convert_log()
263 x86_mcinfo_lookup(&mic, mi, MC_TYPE_BANK); in convert_log()
264 if (unlikely(!mic)) { in convert_log()
266 return -ENODEV; in convert_log()
270 if ((!mic) || (mic->size == 0) || in convert_log()
271 (mic->type != MC_TYPE_GLOBAL && in convert_log()
272 mic->type != MC_TYPE_BANK && in convert_log()
273 mic->type != MC_TYPE_EXTENDED && in convert_log()
274 mic->type != MC_TYPE_RECOVERY)) in convert_log()
277 if (mic->type == MC_TYPE_BANK) { in convert_log()
278 mc_bank = (struct mcinfo_bank *)mic; in convert_log()
279 m.misc = mc_bank->mc_misc; in convert_log()
280 m.status = mc_bank->mc_status; in convert_log()
281 m.addr = mc_bank->mc_addr; in convert_log()
282 m.tsc = mc_bank->mc_tsc; in convert_log()
283 m.bank = mc_bank->mc_bank; in convert_log()
288 mic = x86_mcinfo_next(mic); in convert_log()
294 static int mc_queue_handle(uint32_t flags) in mc_queue_handle()
297 int ret = 0; in mc_queue_handle()
333 int err; in xen_mce_work_fn()
354 static irqreturn_t xen_mce_interrupt(int irq, void *dev_id) in xen_mce_interrupt()
360 static int bind_virq_for_mce(void) in bind_virq_for_mce()
362 int ret; in bind_virq_for_mce()
381 return -ENOMEM; in bind_virq_for_mce()
401 static int __init xen_late_init_mcelog(void) in xen_late_init_mcelog()
403 int ret; in xen_late_init_mcelog()
407 return -ENODEV; in xen_late_init_mcelog()