diff mbox

[v5,04/14] x86/rtc: replace paravirt rtc check with platform legacy quirk

Message ID 570BAB84.903@oracle.com (mailing list archive)
State New, archived
Headers show

Commit Message

Boris Ostrovsky April 11, 2016, 1:49 p.m. UTC
On 04/08/2016 07:40 PM, Luis R. Rodriguez wrote:

-boris

> +	void (*set_legacy_features)(void);
>   };
>   
>   struct pci_dev;
> @@ -186,6 +205,8 @@ extern struct x86_cpuinit_ops x86_cpuinit;
>   extern struct x86_platform_ops x86_platform;
>   extern struct x86_msi_ops x86_msi;
>   extern struct x86_io_apic_ops x86_io_apic_ops;
> +
> +extern void x86_early_init_platform_quirks(void);
>   extern void x86_init_noop(void);
>   extern void x86_init_uint_noop(unsigned int unused);
>   
>

Comments

Luis Chamberlain April 12, 2016, 8:56 p.m. UTC | #1
On Mon, Apr 11, 2016 at 09:49:56AM -0400, Boris Ostrovsky wrote:
> On 04/08/2016 07:40 PM, Luis R. Rodriguez wrote:
> 
> diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
> index 1ae89a2721d6..8bb8c1a4615a 100644
> --- a/arch/x86/include/asm/x86_init.h
> +++ b/arch/x86/include/asm/x86_init.h
> @@ -142,6 +142,15 @@ struct x86_cpuinit_ops {
>  struct timespec;
>  /**
> + * struct x86_legacy_features - legacy x86 features
> + *
> + * @rtc: this device has a CMOS real-time clock present
> + */
> +struct x86_legacy_features {
> +	int rtc;
> +};
> +
> +/**
>   * struct x86_platform_ops - platform specific runtime functions
>   * @calibrate_tsc:		calibrate TSC
>   * @get_wallclock:		get time from HW clock like RTC etc.
> @@ -152,6 +161,14 @@ struct timespec;
>   * @save_sched_clock_state:	save state for sched_clock() on suspend
>   * @restore_sched_clock_state:	restore state for sched_clock() on resume
>   * @apic_post_init:		adjust apic if neeeded
> + * @legacy:			legacy features
> + * @set_legacy_features:	override legacy features. Use of this callback
> + * 				is highly discouraged. You should only need
> + * 				this if your hardware platform requires further
> + * 				custom fine tuning far beyong what may be
> + * 				possible in x86_early_init_platform_quirks() by
> + * 				only using the current x86_hardware_subarch
> + * 				semantics.
>   */
>  struct x86_platform_ops {
>  	unsigned long (*calibrate_tsc)(void);
> @@ -165,6 +182,8 @@ struct x86_platform_ops {
>  	void (*save_sched_clock_state)(void);
>  	void (*restore_sched_clock_state)(void);
>  	void (*apic_post_init)(void);
> +	struct x86_legacy_features legacy;
> 
> 
> I don't think this belongs here --- we are in the ops structure.

Bike shed thing -- I went with what Ingo suggested [0], which was to
embed things under x86_platform, and that happens to be this struct.

So unless I hear otherwise from the maintainer I'm sticking with it.

http://lkml.kernel.org/r/20160224083259.GA20579@gmail.com

  Luis
diff mbox

Patch

diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
index 1ae89a2721d6..8bb8c1a4615a 100644
--- a/arch/x86/include/asm/x86_init.h
+++ b/arch/x86/include/asm/x86_init.h
@@ -142,6 +142,15 @@  struct x86_cpuinit_ops {
  struct timespec;
  
  /**
+ * struct x86_legacy_features - legacy x86 features
+ *
+ * @rtc: this device has a CMOS real-time clock present
+ */
+struct x86_legacy_features {
+	int rtc;
+};
+
+/**
   * struct x86_platform_ops - platform specific runtime functions
   * @calibrate_tsc:		calibrate TSC
   * @get_wallclock:		get time from HW clock like RTC etc.
@@ -152,6 +161,14 @@  struct timespec;
   * @save_sched_clock_state:	save state for sched_clock() on suspend
   * @restore_sched_clock_state:	restore state for sched_clock() on resume
   * @apic_post_init:		adjust apic if neeeded
+ * @legacy:			legacy features
+ * @set_legacy_features:	override legacy features. Use of this callback
+ * 				is highly discouraged. You should only need
+ * 				this if your hardware platform requires further
+ * 				custom fine tuning far beyong what may be
+ * 				possible in x86_early_init_platform_quirks() by
+ * 				only using the current x86_hardware_subarch
+ * 				semantics.
   */
  struct x86_platform_ops {
  	unsigned long (*calibrate_tsc)(void);
@@ -165,6 +182,8 @@  struct x86_platform_ops {
  	void (*save_sched_clock_state)(void);
  	void (*restore_sched_clock_state)(void);
  	void (*apic_post_init)(void);
+	struct x86_legacy_features legacy;


I don't think this belongs here --- we are in the ops structure.