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()
219 static int convert_log(struct mc_info *mi) in convert_log()
221 struct mcinfo_common *mic; in convert_log() local
225 unsigned int i, j; in convert_log()
227 mic = NULL; in convert_log()
228 x86_mcinfo_lookup(&mic, mi, MC_TYPE_GLOBAL); in convert_log()
229 if (unlikely(!mic)) { in convert_log()
231 return -ENODEV; in convert_log()
236 mc_global = (struct mcinfo_global *)mic; in convert_log()
237 m.mcgstatus = mc_global->mc_gstatus; in convert_log()
238 m.apicid = mc_global->mc_apicid; in convert_log()
245 return -ENODEV; in convert_log()
263 mic = NULL; in convert_log()
264 x86_mcinfo_lookup(&mic, mi, MC_TYPE_BANK); in convert_log()
265 if (unlikely(!mic)) { in convert_log()
267 return -ENODEV; in convert_log()
271 if ((!mic) || (mic->size == 0) || in convert_log()
272 (mic->type != MC_TYPE_GLOBAL && in convert_log()
273 mic->type != MC_TYPE_BANK && in convert_log()
274 mic->type != MC_TYPE_EXTENDED && in convert_log()
275 mic->type != MC_TYPE_RECOVERY)) in convert_log()
278 if (mic->type == MC_TYPE_BANK) { in convert_log()
279 mc_bank = (struct mcinfo_bank *)mic; in convert_log()
280 m.misc = mc_bank->mc_misc; in convert_log()
281 m.status = mc_bank->mc_status; in convert_log()
282 m.addr = mc_bank->mc_addr; in convert_log()
283 m.tsc = mc_bank->mc_tsc; in convert_log()
284 m.bank = mc_bank->mc_bank; in convert_log()
289 mic = x86_mcinfo_next(mic); in convert_log()
295 static int mc_queue_handle(uint32_t flags) in mc_queue_handle()
298 int ret = 0; in mc_queue_handle()
334 int err; in xen_mce_work_fn()
355 static irqreturn_t xen_mce_interrupt(int irq, void *dev_id) in xen_mce_interrupt()
361 static int bind_virq_for_mce(void) in bind_virq_for_mce()
363 int ret; in bind_virq_for_mce()
382 return -ENOMEM; in bind_virq_for_mce()
402 static int __init xen_late_init_mcelog(void) in xen_late_init_mcelog()
404 int ret; in xen_late_init_mcelog()
408 return -ENODEV; in xen_late_init_mcelog()