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
53 /* CPUID detection and enumeration definitions for HFI */
77 * struct hfi_cpu_data - HFI capabilities per CPU
81 * Capabilities of a logical processor in the HFI table. These capabilities are
90 * struct hfi_hdr - Header of the HFI table
94 * Properties of the data in an HFI table.
102 * struct hfi_instance - Representation of an HFI instance (i.e., a table)
103 * @local_table: Base of the local copy of the HFI table
108 * @cpus: CPUs represented in this HFI table instance
109 * @hw_table: Pointer to the HFI table of this instance
110 * @update_work: Delayed work to process HFI updates
112 * @event_lock: Lock to process HFI interrupts
114 * A set of parameters to parse and navigate a specific HFI table.
131 * struct hfi_features - Supported HFI features
132 * @nr_table_pages: Size of the HFI table in 4KB pages
137 * Parameters and supported features that are common to all HFI instances
146 * struct hfi_cpu_info - Per-CPU attributes to consume HFI data
147 * @index: Row of this CPU in its HFI table
148 * @hfi_instance: Attributes of the HFI table to which this CPU belongs
150 * Parameters to link a logical processor to an HFI table and a row within it.
196 * Call update_capabilities() when there are changes in the HFI table.
203 /* CPUs may come online/offline while processing an HFI update. */ in update_capabilities()
265 * A CPU is linked to its HFI instance before the thermal vector in the in intel_hfi_process_event()
267 * when receiving an HFI event. in intel_hfi_process_event()
277 * thermal interrupt when there is an HFI update. It is sufficient to in intel_hfi_process_event()
304 * Let hardware know that we are done reading the HFI table and it is in intel_hfi_process_event()
328 * The format of the HFI table depends on the number of capabilities that the
333 /* The HFI header is below the time-stamp. */ in init_hfi_instance()
337 /* The HFI data starts below the header. */ in init_hfi_instance()
342 * intel_hfi_online() - Enable HFI on @cpu
343 * @cpu: CPU in which the HFI will be enabled
345 * Enable the HFI to be used in @cpu. The HFI is enabled at the die/package
346 * level. The first CPU in the die/package to come online does the full HFI
347 * initialization. Subsequent CPUs will just link themselves to the HFI
351 * in order to ensure that @cpu has an associated HFI instance when it receives
352 * an HFI event.
367 * Link @cpu to the HFI instance of its package/die. It does not in intel_hfi_online()
384 * Now check if the HFI instance of the package/die of @cpu has been in intel_hfi_online()
416 * some processors, hardware remembers the old address of the HFI table in intel_hfi_online()
450 * intel_hfi_offline() - Disable HFI on @cpu
451 * @cpu: CPU in which the HFI will be disabled
453 * Remove @cpu from those covered by its HFI instance.
456 * after being reprogrammed. Thus, keep HFI enabled even if all CPUs in the
466 * header). Also, HFI instances are only initialized if X86_FEATURE_HFI in intel_hfi_offline()
491 * supported capabilities and the size of the HFI table. in hfi_parse_features()
496 pr_debug("Performance reporting not supported! Not using HFI\n"); in hfi_parse_features()
502 * columns in the HFI table. Exclude the reserved bits. in hfi_parse_features()
534 /* There is one HFI instance per die/package. */ in intel_hfi_init()
553 hfi_updates_wq = create_singlethread_workqueue("hfi-updates"); in intel_hfi_init()