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.
199 * Call update_capabilities() when there are changes in the HFI table.
206 /* CPUs may come online/offline while processing an HFI update. */ in update_capabilities()
258 u64 new_timestamp, msr, hfi; in intel_hfi_process_event() local
268 * A CPU is linked to its HFI instance before the thermal vector in the in intel_hfi_process_event()
270 * when receiving an HFI event. in intel_hfi_process_event()
280 * thermal interrupt when there is an HFI update. It is sufficient to in intel_hfi_process_event()
288 hfi = msr & PACKAGE_THERM_STATUS_HFI_UPDATED; in intel_hfi_process_event()
289 if (!hfi) { in intel_hfi_process_event()
295 * Ack duplicate update. Since there is an active HFI in intel_hfi_process_event()
316 * Let hardware know that we are done reading the HFI table and it is in intel_hfi_process_event()
341 * The format of the HFI table depends on the number of capabilities that the
346 /* The HFI header is below the time-stamp. */ in init_hfi_instance()
350 /* The HFI data starts below the header. */ in init_hfi_instance()
385 * Wait for hardware to acknowledge the disabling of HFI. Some in hfi_disable()
387 * time for hardware to complete any pending actions on the HFI in hfi_disable()
401 * intel_hfi_online() - Enable HFI on @cpu
402 * @cpu: CPU in which the HFI will be enabled
404 * Enable the HFI to be used in @cpu. The HFI is enabled at the package
405 * level. The first CPU in the package to come online does the full HFI
406 * initialization. Subsequent CPUs will just link themselves to the HFI
410 * in order to ensure that @cpu has an associated HFI instance when it receives
411 * an HFI event.
424 * Link @cpu to the HFI instance of its package. It does not in intel_hfi_online()
441 * Now check if the HFI instance of the package of @cpu has been in intel_hfi_online()
454 * Some processors do not forget the initial address of the HFI table in intel_hfi_online()
482 * Enable this HFI instance if this is its first online CPU and in intel_hfi_online()
500 * intel_hfi_offline() - Disable HFI on @cpu
501 * @cpu: CPU in which the HFI will be disabled
503 * Remove @cpu from those covered by its HFI instance.
506 * after being reprogrammed. Thus, keep HFI enabled even if all CPUs in the
516 * header). Also, HFI instances are only initialized if X86_FEATURE_HFI in intel_hfi_offline()
545 * supported capabilities and the size of the HFI table. in hfi_parse_features()
550 pr_debug("Performance reporting not supported! Not using HFI\n"); in hfi_parse_features()
556 * columns in the HFI table. Exclude the reserved bits. in hfi_parse_features()
581 * If concurrency is not prevented by other means, the HFI enable/disable
678 * Note: HFI resources are managed at the physical package scope. in intel_hfi_init()
680 * Special handling would be needed if this happens on an HFI-capable in intel_hfi_init()
700 hfi_updates_wq = create_singlethread_workqueue("hfi-updates"); in intel_hfi_init()
705 * Both thermal core and Intel HFI can not be build as modules. in intel_hfi_init()