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
52 /* CPUID detection and enumeration definitions for HFI */
76 * struct hfi_cpu_data - HFI capabilities per CPU
80 * Capabilities of a logical processor in the HFI table. These capabilities are
89 * struct hfi_hdr - Header of the HFI table
93 * Properties of the data in an HFI table.
101 * struct hfi_instance - Representation of an HFI instance (i.e., a table)
102 * @local_table: Base of the local copy of the HFI table
107 * @cpus: CPUs represented in this HFI table instance
108 * @hw_table: Pointer to the HFI table of this instance
109 * @update_work: Delayed work to process HFI updates
111 * @event_lock: Lock to process HFI interrupts
113 * A set of parameters to parse and navigate a specific HFI table.
130 * struct hfi_features - Supported HFI features
131 * @nr_table_pages: Size of the HFI table in 4KB pages
136 * Parameters and supported features that are common to all HFI instances
145 * struct hfi_cpu_info - Per-CPU attributes to consume HFI data
146 * @index: Row of this CPU in its HFI table
147 * @hfi_instance: Attributes of the HFI table to which this CPU belongs
149 * Parameters to link a logical processor to an HFI table and a row within it.
195 * Call update_capabilities() when there are changes in the HFI table.
202 /* CPUs may come online/offline while processing an HFI update. */ in update_capabilities()
254 u64 new_timestamp, msr, hfi; in intel_hfi_process_event() local
264 * A CPU is linked to its HFI instance before the thermal vector in the in intel_hfi_process_event()
266 * when receiving an HFI event. in intel_hfi_process_event()
276 * thermal interrupt when there is an HFI update. It is sufficient to in intel_hfi_process_event()
284 hfi = msr & PACKAGE_THERM_STATUS_HFI_UPDATED; in intel_hfi_process_event()
285 if (!hfi) { in intel_hfi_process_event()
291 * Ack duplicate update. Since there is an active HFI in intel_hfi_process_event()
312 * Let hardware know that we are done reading the HFI table and it is in intel_hfi_process_event()
337 * The format of the HFI table depends on the number of capabilities that the
342 /* The HFI header is below the time-stamp. */ in init_hfi_instance()
346 /* The HFI data starts below the header. */ in init_hfi_instance()
351 * intel_hfi_online() - Enable HFI on @cpu
352 * @cpu: CPU in which the HFI will be enabled
354 * Enable the HFI to be used in @cpu. The HFI is enabled at the die/package
355 * level. The first CPU in the die/package to come online does the full HFI
356 * initialization. Subsequent CPUs will just link themselves to the HFI
360 * in order to ensure that @cpu has an associated HFI instance when it receives
361 * an HFI event.
376 * Link @cpu to the HFI instance of its package/die. It does not in intel_hfi_online()
393 * Now check if the HFI instance of the package/die of @cpu has been in intel_hfi_online()
425 * some processors, hardware remembers the old address of the HFI table in intel_hfi_online()
459 * intel_hfi_offline() - Disable HFI on @cpu
460 * @cpu: CPU in which the HFI will be disabled
462 * Remove @cpu from those covered by its HFI instance.
465 * after being reprogrammed. Thus, keep HFI enabled even if all CPUs in the
475 * header). Also, HFI instances are only initialized if X86_FEATURE_HFI in intel_hfi_offline()
500 * supported capabilities and the size of the HFI table. in hfi_parse_features()
505 pr_debug("Performance reporting not supported! Not using HFI\n"); in hfi_parse_features()
511 * columns in the HFI table. Exclude the reserved bits. in hfi_parse_features()
543 /* There is one HFI instance per die/package. */ in intel_hfi_init()
562 hfi_updates_wq = create_singlethread_workqueue("hfi-updates"); in intel_hfi_init()