@@ -141,6 +141,15 @@ struct x86_cpuinit_ops {
141141
142142struct timespec ;
143143
144+ /**
145+ * struct x86_legacy_features - legacy x86 features
146+ *
147+ * @rtc: this device has a CMOS real-time clock present
148+ */
149+ struct x86_legacy_features {
150+ int rtc ;
151+ };
152+
144153/**
145154 * struct x86_platform_ops - platform specific runtime functions
146155 * @calibrate_tsc: calibrate TSC
@@ -152,6 +161,14 @@ struct timespec;
152161 * @save_sched_clock_state: save state for sched_clock() on suspend
153162 * @restore_sched_clock_state: restore state for sched_clock() on resume
154163 * @apic_post_init: adjust apic if neeeded
164+ * @legacy: legacy features
165+ * @set_legacy_features: override legacy features. Use of this callback
166+ * is highly discouraged. You should only need
167+ * this if your hardware platform requires further
168+ * custom fine tuning far beyong what may be
169+ * possible in x86_early_init_platform_quirks() by
170+ * only using the current x86_hardware_subarch
171+ * semantics.
155172 */
156173struct x86_platform_ops {
157174 unsigned long (* calibrate_tsc )(void );
@@ -165,6 +182,8 @@ struct x86_platform_ops {
165182 void (* save_sched_clock_state )(void );
166183 void (* restore_sched_clock_state )(void );
167184 void (* apic_post_init )(void );
185+ struct x86_legacy_features legacy ;
186+ void (* set_legacy_features )(void );
168187};
169188
170189struct pci_dev ;
@@ -186,6 +205,8 @@ extern struct x86_cpuinit_ops x86_cpuinit;
186205extern struct x86_platform_ops x86_platform ;
187206extern struct x86_msi_ops x86_msi ;
188207extern struct x86_io_apic_ops x86_io_apic_ops ;
208+
209+ extern void x86_early_init_platform_quirks (void );
189210extern void x86_init_noop (void );
190211extern void x86_init_uint_noop (unsigned int unused );
191212
0 commit comments