€•hXŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ&/translations/zh_CN/driver-api/mei/mei”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/zh_TW/driver-api/mei/mei”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/it_IT/driver-api/mei/mei”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ja_JP/driver-api/mei/mei”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ko_KR/driver-api/mei/mei”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/sp_SP/driver-api/mei/mei”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh£sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1h¡hhhžhhŸŒ@/var/lib/git/docbuild/linux/Documentation/driver-api/mei/mei.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ Introduction”h]”hŒ Introduction”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh¶hžhhŸh³h KubhŒ paragraph”“”)”}”(hXThe Intel Management Engine (Intel ME) is an isolated and protected computing resource (Co-processor) residing inside certain Intel chipsets. The Intel ME provides support for computer/IT management and security features. The actual feature set depends on the Intel chipset SKU.”h]”hXThe Intel Management Engine (Intel ME) is an isolated and protected computing resource (Co-processor) residing inside certain Intel chipsets. The Intel ME provides support for computer/IT management and security features. The actual feature set depends on the Intel chipset SKU.”…””}”(hhËhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khh¶hžhubhÊ)”}”(hXWThe Intel Management Engine Interface (Intel MEI, previously known as HECI) is the interface between the Host and Intel ME. This interface is exposed to the host as a PCI device, actually multiple PCI devices might be exposed. The Intel MEI Driver is in charge of the communication channel between a host application and the Intel ME features.”h]”hXWThe Intel Management Engine Interface (Intel MEI, previously known as HECI) is the interface between the Host and Intel ME. This interface is exposed to the host as a PCI device, actually multiple PCI devices might be exposed. The Intel MEI Driver is in charge of the communication channel between a host application and the Intel ME features.”…””}”(hhÙhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K hh¶hžhubhÊ)”}”(hŒîEach Intel ME feature, or Intel ME Client is addressed by a unique GUID and each client has its own protocol. The protocol is message-based with a header and payload up to maximal number of bytes advertised by the client, upon connection.”h]”hŒîEach Intel ME feature, or Intel ME Client is addressed by a unique GUID and each client has its own protocol. The protocol is message-based with a header and payload up to maximal number of bytes advertised by the client, upon connection.”…””}”(hhçhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khh¶hžhubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1h´hhhžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒIntel MEI Driver”h]”hŒIntel MEI Driver”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hhýhžhhŸh³h KubhÊ)”}”(hŒBThe driver exposes a character device with device nodes /dev/meiX.”h]”hŒBThe driver exposes a character device with device nodes /dev/meiX.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KhhýhžhubhÊ)”}”(hXAn application maintains communication with an Intel ME feature while /dev/meiX is open. The binding to a specific feature is performed by calling :c:macro:`MEI_CONNECT_CLIENT_IOCTL`, which passes the desired GUID. The number of instances of an Intel ME feature that can be opened at the same time depends on the Intel ME feature, but most of the features allow only a single instance.”h]”(hŒ“An application maintains communication with an Intel ME feature while /dev/meiX is open. The binding to a specific feature is performed by calling ”…””}”(hjhžhhŸNh Nubh)”}”(hŒ#:c:macro:`MEI_CONNECT_CLIENT_IOCTL`”h]”hŒliteral”“”)”}”(hj&h]”hŒMEI_CONNECT_CLIENT_IOCTL”…””}”(hj*hžhhŸNh Nubah}”(h]”h ]”(Œxref”Œc”Œc-macro”eh"]”h$]”h&]”uh1j(hj$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/mei/mei”Œ refdomain”j5Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰Œ reftarget”ŒMEI_CONNECT_CLIENT_IOCTL”uh1hhŸh³h KhjubhŒË, which passes the desired GUID. The number of instances of an Intel ME feature that can be opened at the same time depends on the Intel ME feature, but most of the features allow only a single instance.”…””}”(hjhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KhhýhžhubhÊ)”}”(hŒ`The driver is transparent to data that are passed between firmware feature and host application.”h]”hŒ`The driver is transparent to data that are passed between firmware feature and host application.”…””}”(hjShžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K"hhýhžhubhÊ)”}”(hŒŒBecause some of the Intel ME features can change the system configuration, the driver by default allows only a privileged user to access it.”h]”hŒŒBecause some of the Intel ME features can change the system configuration, the driver by default allows only a privileged user to access it.”…””}”(hjahžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K%hhýhžhubhÊ)”}”(hŒ6The session is terminated calling :c:expr:`close(fd)`.”h]”(hŒ"The session is terminated calling ”…””}”(hjohžhhŸNh NubhŒ desc_inline”“”)”}”(hŒ close(fd)”h]”(h)”}”(hhh]”hŒ desc_sig_name”“”)”}”(hŒclose”h]”hŒclose”…””}”(hj‚hžhhŸNh Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j€hj}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j5Œreftype”Œ identifier”Œ reftarget”j„Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)”}”Œdata”]”sbuh1hhjyubhŒdesc_sig_punctuation”“”)”}”(hŒ(”h]”hŒ(”…””}”(hj§hžhhŸNh Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j¥hjyubh)”}”(hhh]”j)”}”(hŒfd”h]”hŒfd”…””}”(hj¹hžhhŸNh Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j€hj¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j5Œreftype”j™Œ reftarget”j»Œmodname”NŒ classname”Njj )”}”j£]”sbuh1hhjyubj¦)”}”(hŒ)”h]”hŒ)”…””}”(hjÕhžhhŸNh Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjyubeh}”(h]”h ]”(Œc-expr”Œsig”Œ sig-inline”j5eh"]”h$]”h&]”uh1jwhjoubhŒ.”…””}”(hjohžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K)hhýhžhubhÊ)”}”(hŒHA code snippet for an application communicating with Intel AMTHI client:”h]”hŒHA code snippet for an application communicating with Intel AMTHI client:”…””}”(hjöhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K+hhýhžhubhÊ)”}”(hŒùIn order to support virtualization or sandboxing a trusted supervisor can use :c:macro:`MEI_CONNECT_CLIENT_IOCTL_VTAG` to create virtual channels with an Intel ME feature. Not all features support virtual channels such client with answer EOPNOTSUPP.”h]”(hŒNIn order to support virtualization or sandboxing a trusted supervisor can use ”…””}”(hjhžhhŸNh Nubh)”}”(hŒ(:c:macro:`MEI_CONNECT_CLIENT_IOCTL_VTAG`”h]”j))”}”(hjh]”hŒMEI_CONNECT_CLIENT_IOCTL_VTAG”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(j4j5Œc-macro”eh"]”h$]”h&]”uh1j(hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jAŒ refdomain”j5Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰jGŒMEI_CONNECT_CLIENT_IOCTL_VTAG”uh1hhŸh³h K-hjubhŒƒ to create virtual channels with an Intel ME feature. Not all features support virtual channels such client with answer EOPNOTSUPP.”…””}”(hjhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K-hhýhžhubhŒ literal_block”“”)”}”(hXŠstruct mei_connect_client_data data; fd = open(MEI_DEVICE); data.d.in_client_uuid = AMTHI_GUID; ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &data); printf("Ver=%d, MaxLen=%ld\n", data.d.in_client_uuid.protocol_version, data.d.in_client_uuid.max_msg_length); [...] write(fd, amthi_req_data, amthi_req_data_len); [...] read(fd, &amthi_res_data, amthi_res_data_len); [...] close(fd);”h]”hXŠstruct mei_connect_client_data data; fd = open(MEI_DEVICE); data.d.in_client_uuid = AMTHI_GUID; ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &data); printf("Ver=%d, MaxLen=%ld\n", data.d.in_client_uuid.protocol_version, data.d.in_client_uuid.max_msg_length); [...] write(fd, amthi_req_data, amthi_req_data_len); [...] read(fd, &amthi_res_data, amthi_res_data_len); [...] close(fd);”…””}”hj7sbah}”(h]”h ]”h"]”h$]”h&]”h±h²Œforce”‰Œlanguage”ŒC”Œhighlight_args”}”uh1j5hŸh³h K2hhýhžhubhÊ)”}”(hŒUser space API”h]”hŒUser space API”…””}”(hjJhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KKhhýhžhubeh}”(h]”Œintel-mei-driver”ah ]”h"]”Œintel mei driver”ah$]”h&]”uh1h´hhhžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒIOCTLs:”h]”hŒIOCTLs:”…””}”(hjchžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj`hžhhŸh³h KNubhÊ)”}”(hŒ;The Intel MEI Driver supports the following IOCTL commands:”h]”hŒ;The Intel MEI Driver supports the following IOCTL commands:”…””}”(hjqhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KPhj`hžhubhµ)”}”(hhh]”(hº)”}”(hŒIOCTL_MEI_CONNECT_CLIENT”h]”hŒIOCTL_MEI_CONNECT_CLIENT”…””}”(hj‚hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjhžhhŸh³h KSubhÊ)”}”(hŒ#Connect to firmware Feature/Client.”h]”hŒ#Connect to firmware Feature/Client.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KThjhžhubj6)”}”(hXóUsage: struct mei_connect_client_data client_data; ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &client_data); Inputs: struct mei_connect_client_data - contain the following Input field: in_client_uuid - GUID of the FW Feature that needs to connect to. Outputs: out_client_properties - Client Properties: MTU and Protocol Version. Error returns: ENOTTY No such client (i.e. wrong GUID) or connection is not allowed. EINVAL Wrong IOCTL Number ENODEV Device or Connection is not initialized or ready. ENOMEM Unable to allocate memory to client internal data. EFAULT Fatal Error (e.g. Unable to access user input data) EBUSY Connection Already Open”h]”hXóUsage: struct mei_connect_client_data client_data; ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &client_data); Inputs: struct mei_connect_client_data - contain the following Input field: in_client_uuid - GUID of the FW Feature that needs to connect to. Outputs: out_client_properties - Client Properties: MTU and Protocol Version. Error returns: ENOTTY No such client (i.e. wrong GUID) or connection is not allowed. EINVAL Wrong IOCTL Number ENODEV Device or Connection is not initialized or ready. ENOMEM Unable to allocate memory to client internal data. EFAULT Fatal Error (e.g. Unable to access user input data) EBUSY Connection Already Open”…””}”hjžsbah}”(h]”h ]”h"]”h$]”h&]”h±h²jE‰jFŒnone”jH}”uh1j5hŸh³h KVhjhžhubhŒ field_list”“”)”}”(hhh]”hŒfield”“”)”}”(hhh]”(hŒ field_name”“”)”}”(hŒNote”h]”hŒNote”…””}”(hjºhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjµhŸh³h KubhŒ field_body”“”)”}”(hŒ½max_msg_length (MTU) in client properties describes the maximum data that can be sent or received. (e.g. if MTU=2K, can send requests up to bytes 2k and received responses up to 2k bytes). ”h]”hÊ)”}”(hŒ¼max_msg_length (MTU) in client properties describes the maximum data that can be sent or received. (e.g. if MTU=2K, can send requests up to bytes 2k and received responses up to 2k bytes).”h]”hŒ¼max_msg_length (MTU) in client properties describes the maximum data that can be sent or received. (e.g. if MTU=2K, can send requests up to bytes 2k and received responses up to 2k bytes).”…””}”(hjÎhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KrhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³hŸh³h Kqhj°hžhubah}”(h]”h ]”h"]”h$]”h&]”uh1j®hjhžhhŸh³h Kqubeh}”(h]”Œioctl-mei-connect-client”ah ]”h"]”Œioctl_mei_connect_client”ah$]”h&]”uh1h´hj`hžhhŸh³h KSubhµ)”}”(hhh]”(hº)”}”(hŒIOCTL_MEI_CONNECT_CLIENT_VTAG:”h]”hŒIOCTL_MEI_CONNECT_CLIENT_VTAG:”…””}”(hjùhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjöhžhhŸh³h Kwubj6)”}”(hXTUsage: struct mei_connect_client_data_vtag client_data_vtag; ioctl(fd, IOCTL_MEI_CONNECT_CLIENT_VTAG, &client_data_vtag); Inputs: struct mei_connect_client_data_vtag - contain the following Input field: in_client_uuid - GUID of the FW Feature that needs to connect to. vtag - virtual tag [1, 255] Outputs: out_client_properties - Client Properties: MTU and Protocol Version. Error returns: ENOTTY No such client (i.e. wrong GUID) or connection is not allowed. EINVAL Wrong IOCTL Number or tag == 0 ENODEV Device or Connection is not initialized or ready. ENOMEM Unable to allocate memory to client internal data. EFAULT Fatal Error (e.g. Unable to access user input data) EBUSY Connection Already Open EOPNOTSUPP Vtag is not supported”h]”hXTUsage: struct mei_connect_client_data_vtag client_data_vtag; ioctl(fd, IOCTL_MEI_CONNECT_CLIENT_VTAG, &client_data_vtag); Inputs: struct mei_connect_client_data_vtag - contain the following Input field: in_client_uuid - GUID of the FW Feature that needs to connect to. vtag - virtual tag [1, 255] Outputs: out_client_properties - Client Properties: MTU and Protocol Version. Error returns: ENOTTY No such client (i.e. wrong GUID) or connection is not allowed. EINVAL Wrong IOCTL Number or tag == 0 ENODEV Device or Connection is not initialized or ready. ENOMEM Unable to allocate memory to client internal data. EFAULT Fatal Error (e.g. Unable to access user input data) EBUSY Connection Already Open EOPNOTSUPP Vtag is not supported”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”h±h²jE‰jFŒnone”jH}”uh1j5hŸh³h Kyhjöhžhubeh}”(h]”Œioctl-mei-connect-client-vtag”ah ]”h"]”Œioctl_mei_connect_client_vtag:”ah$]”h&]”uh1h´hj`hžhhŸh³h Kwubhµ)”}”(hhh]”(hº)”}”(hŒIOCTL_MEI_NOTIFY_SET”h]”hŒIOCTL_MEI_NOTIFY_SET”…””}”(hj"hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjhžhhŸh³h K˜ubhÊ)”}”(hŒ&Enable or disable event notifications.”h]”hŒ&Enable or disable event notifications.”…””}”(hj0hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K™hjhžhubj6)”}”(hXãUsage: uint32_t enable; ioctl(fd, IOCTL_MEI_NOTIFY_SET, &enable); uint32_t enable = 1; or uint32_t enable[disable] = 0; Error returns: EINVAL Wrong IOCTL Number ENODEV Device is not initialized or the client not connected ENOMEM Unable to allocate memory to client internal data. EFAULT Fatal Error (e.g. Unable to access user input data) EOPNOTSUPP if the device doesn't support the feature”h]”hXãUsage: uint32_t enable; ioctl(fd, IOCTL_MEI_NOTIFY_SET, &enable); uint32_t enable = 1; or uint32_t enable[disable] = 0; Error returns: EINVAL Wrong IOCTL Number ENODEV Device is not initialized or the client not connected ENOMEM Unable to allocate memory to client internal data. EFAULT Fatal Error (e.g. Unable to access user input data) EOPNOTSUPP if the device doesn't support the feature”…””}”hj>sbah}”(h]”h ]”h"]”h$]”h&]”h±h²jE‰jFŒnone”jH}”uh1j5hŸh³h Kœhjhžhubj¯)”}”(hhh]”j´)”}”(hhh]”(j¹)”}”(hŒNote”h]”hŒNote”…””}”(hjThžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjQhŸh³h KubjÉ)”}”(hŒEThe client must be connected in order to enable notification events ”h]”hÊ)”}”(hŒCThe client must be connected in order to enable notification events”h]”hŒCThe client must be connected in order to enable notification events”…””}”(hjfhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K³hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³hŸh³h K²hjNhžhubah}”(h]”h ]”h"]”h$]”h&]”uh1j®hjhžhhŸh³h K²ubeh}”(h]”Œioctl-mei-notify-set”ah ]”h"]”Œioctl_mei_notify_set”ah$]”h&]”uh1h´hj`hžhhŸh³h K˜ubhµ)”}”(hhh]”(hº)”}”(hŒIOCTL_MEI_NOTIFY_GET”h]”hŒIOCTL_MEI_NOTIFY_GET”…””}”(hj‘hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjŽhžhhŸh³h K·ubhÊ)”}”(hŒRetrieve event”h]”hŒRetrieve event”…””}”(hjŸhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K¸hjŽhžhubj6)”}”(hXáUsage: uint32_t event; ioctl(fd, IOCTL_MEI_NOTIFY_GET, &event); Outputs: 1 - if an event is pending 0 - if there is no even pending Error returns: EINVAL Wrong IOCTL Number ENODEV Device is not initialized or the client not connected ENOMEM Unable to allocate memory to client internal data. EFAULT Fatal Error (e.g. Unable to access user input data) EOPNOTSUPP if the device doesn't support the feature”h]”hXáUsage: uint32_t event; ioctl(fd, IOCTL_MEI_NOTIFY_GET, &event); Outputs: 1 - if an event is pending 0 - if there is no even pending Error returns: EINVAL Wrong IOCTL Number ENODEV Device is not initialized or the client not connected ENOMEM Unable to allocate memory to client internal data. EFAULT Fatal Error (e.g. Unable to access user input data) EOPNOTSUPP if the device doesn't support the feature”…””}”hj­sbah}”(h]”h ]”h"]”h$]”h&]”h±h²jE‰jFŒnone”jH}”uh1j5hŸh³h KºhjŽhžhubj¯)”}”(hhh]”j´)”}”(hhh]”(j¹)”}”(hŒNote”h]”hŒNote”…””}”(hjÃhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÀhŸh³h KubjÉ)”}”(hŒeThe client must be connected and event notification has to be enabled in order to receive an event ”h]”hÊ)”}”(hŒbThe client must be connected and event notification has to be enabled in order to receive an event”h]”hŒbThe client must be connected and event notification has to be enabled in order to receive an event”…””}”(hjÕhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KÌhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j³hŸh³h KËhj½hžhubah}”(h]”h ]”h"]”h$]”h&]”uh1j®hjŽhžhhŸh³h KËubeh}”(h]”Œioctl-mei-notify-get”ah ]”h"]”Œioctl_mei_notify_get”ah$]”h&]”uh1h´hj`hžhhŸh³h K·ubeh}”(h]”Œioctls”ah ]”h"]”Œioctls:”ah$]”h&]”uh1h´hhhžhhŸh³h KNubhµ)”}”(hhh]”(hº)”}”(hŒSupported Chipsets”h]”hŒSupported Chipsets”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjhžhhŸh³h KÒubhÊ)”}”(hŒ82X38/X48 Express and newer”h]”hŒ82X38/X48 Express and newer”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KÓhjhžhubhÊ)”}”(hŒlinux-mei@linux.intel.com”h]”hŒ reference”“”)”}”(hj&h]”hŒlinux-mei@linux.intel.com”…””}”(hj*hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ mailto:linux-mei@linux.intel.com”uh1j(hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KÕhjhžhubeh}”(h]”Œsupported-chipsets”ah ]”h"]”Œsupported chipsets”ah$]”h&]”uh1h´hhhžhhŸh³h KÒubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h³uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¹NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jjŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h³Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(húh÷j]jZjjÿjójðjjj‹jˆjúj÷jDjAuŒ nametypes”}”(hú‰j]‰j‰jó‰j‰j‹‰jú‰jD‰uh}”(h÷h¶jZhýjÿj`jðjjjöjˆjj÷jŽjAjuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.