Lines Matching full:hfi

15  * constraints). On other processor models, there is a single HFI update
18 * This file provides functionality to process HFI updates and relay these
22 #define pr_fmt(fmt) "intel-hfi: " fmt
55 /* CPUID detection and enumeration definitions for HFI */
79 * struct hfi_cpu_data - HFI capabilities per CPU
83 * Capabilities of a logical processor in the HFI table. These capabilities are
92 * struct hfi_hdr - Header of the HFI table
96 * Properties of the data in an HFI table.
104 * struct hfi_instance - Representation of an HFI instance (i.e., a table)
105 * @local_table: Base of the local copy of the HFI table
110 * @cpus: CPUs represented in this HFI table instance
111 * @hw_table: Pointer to the HFI table of this instance
112 * @update_work: Delayed work to process HFI updates
114 * @event_lock: Lock to process HFI interrupts
116 * A set of parameters to parse and navigate a specific HFI table.
133 * struct hfi_features - Supported HFI features
134 * @nr_table_pages: Size of the HFI table in 4KB pages
139 * Parameters and supported features that are common to all HFI instances
148 * struct hfi_cpu_info - Per-CPU attributes to consume HFI data
149 * @index: Row of this CPU in its HFI table
150 * @hfi_instance: Attributes of the HFI table to which this CPU belongs
152 * Parameters to link a logical processor to an HFI table and a row within it.
198 * Call update_capabilities() when there are changes in the HFI table.
205 /* CPUs may come online/offline while processing an HFI update. */ in update_capabilities()
257 u64 new_timestamp, msr, hfi; in intel_hfi_process_event() local
267 * A CPU is linked to its HFI instance before the thermal vector in the in intel_hfi_process_event()
269 * when receiving an HFI event. in intel_hfi_process_event()
279 * thermal interrupt when there is an HFI update. It is sufficient to in intel_hfi_process_event()
287 hfi = msr & PACKAGE_THERM_STATUS_HFI_UPDATED; in intel_hfi_process_event()
288 if (!hfi) { in intel_hfi_process_event()
294 * Ack duplicate update. Since there is an active HFI in intel_hfi_process_event()
315 * Let hardware know that we are done reading the HFI table and it is in intel_hfi_process_event()
340 * The format of the HFI table depends on the number of capabilities that the
345 /* The HFI header is below the time-stamp. */ in init_hfi_instance()
349 /* The HFI data starts below the header. */ in init_hfi_instance()
384 * Wait for hardware to acknowledge the disabling of HFI. Some in hfi_disable()
386 * time for hardware to complete any pending actions on the HFI in hfi_disable()
400 * intel_hfi_online() - Enable HFI on @cpu
401 * @cpu: CPU in which the HFI will be enabled
403 * Enable the HFI to be used in @cpu. The HFI is enabled at the die/package
404 * level. The first CPU in the die/package to come online does the full HFI
405 * initialization. Subsequent CPUs will just link themselves to the HFI
409 * in order to ensure that @cpu has an associated HFI instance when it receives
410 * an HFI event.
423 * Link @cpu to the HFI instance of its package/die. It does not in intel_hfi_online()
440 * Now check if the HFI instance of the package/die of @cpu has been in intel_hfi_online()
453 * Some processors do not forget the initial address of the HFI table in intel_hfi_online()
480 /* Enable this HFI instance if this is its first online CPU. */ in intel_hfi_online()
496 * intel_hfi_offline() - Disable HFI on @cpu
497 * @cpu: CPU in which the HFI will be disabled
499 * Remove @cpu from those covered by its HFI instance.
502 * after being reprogrammed. Thus, keep HFI enabled even if all CPUs in the
512 * header). Also, HFI instances are only initialized if X86_FEATURE_HFI in intel_hfi_offline()
541 * supported capabilities and the size of the HFI table. in hfi_parse_features()
546 pr_debug("Performance reporting not supported! Not using HFI\n"); in hfi_parse_features()
552 * columns in the HFI table. Exclude the reserved bits. in hfi_parse_features()
608 /* There is one HFI instance per die/package. */ in intel_hfi_init()
627 hfi_updates_wq = create_singlethread_workqueue("hfi-updates"); in intel_hfi_init()