Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: MIT */
0002 /******************************************************************************
0003  * nmi.h
0004  *
0005  * NMI callback registration and reason codes.
0006  *
0007  * Copyright (c) 2005, Keir Fraser <keir@xensource.com>
0008  */
0009 
0010 #ifndef __XEN_PUBLIC_NMI_H__
0011 #define __XEN_PUBLIC_NMI_H__
0012 
0013 #include <xen/interface/xen.h>
0014 
0015 /*
0016  * NMI reason codes:
0017  * Currently these are x86-specific, stored in arch_shared_info.nmi_reason.
0018  */
0019  /* I/O-check error reported via ISA port 0x61, bit 6. */
0020 #define _XEN_NMIREASON_io_error     0
0021 #define XEN_NMIREASON_io_error      (1UL << _XEN_NMIREASON_io_error)
0022  /* PCI SERR reported via ISA port 0x61, bit 7. */
0023 #define _XEN_NMIREASON_pci_serr     1
0024 #define XEN_NMIREASON_pci_serr      (1UL << _XEN_NMIREASON_pci_serr)
0025  /* Unknown hardware-generated NMI. */
0026 #define _XEN_NMIREASON_unknown      2
0027 #define XEN_NMIREASON_unknown       (1UL << _XEN_NMIREASON_unknown)
0028 
0029 /*
0030  * long nmi_op(unsigned int cmd, void *arg)
0031  * NB. All ops return zero on success, else a negative error code.
0032  */
0033 
0034 /*
0035  * Register NMI callback for this (calling) VCPU. Currently this only makes
0036  * sense for domain 0, vcpu 0. All other callers will be returned EINVAL.
0037  * arg == pointer to xennmi_callback structure.
0038  */
0039 #define XENNMI_register_callback   0
0040 struct xennmi_callback {
0041     unsigned long handler_address;
0042     unsigned long pad;
0043 };
0044 DEFINE_GUEST_HANDLE_STRUCT(xennmi_callback);
0045 
0046 /*
0047  * Deregister NMI callback for this (calling) VCPU.
0048  * arg == NULL.
0049  */
0050 #define XENNMI_unregister_callback 1
0051 
0052 #endif /* __XEN_PUBLIC_NMI_H__ */