@@ -544,46 +544,20 @@ static struct clock_event_device lapic_clockevent = {
544
544
};
545
545
static DEFINE_PER_CPU (struct clock_event_device , lapic_events ) ;
546
546
547
- static __init u32 hsx_deadline_rev (void )
548
- {
549
- switch (boot_cpu_data .x86_stepping ) {
550
- case 0x02 : return 0x3a ; /* EP */
551
- case 0x04 : return 0x0f ; /* EX */
552
- }
553
-
554
- return ~0U ;
555
- }
556
-
557
- static __init u32 bdx_deadline_rev (void )
558
- {
559
- switch (boot_cpu_data .x86_stepping ) {
560
- case 0x02 : return 0x00000011 ;
561
- case 0x03 : return 0x0700000e ;
562
- case 0x04 : return 0x0f00000c ;
563
- case 0x05 : return 0x0e000003 ;
564
- }
565
-
566
- return ~0U ;
567
- }
568
-
569
- static __init u32 skx_deadline_rev (void )
570
- {
571
- switch (boot_cpu_data .x86_stepping ) {
572
- case 0x03 : return 0x01000136 ;
573
- case 0x04 : return 0x02000014 ;
574
- }
547
+ static const struct x86_cpu_id deadline_match [] __initconst = {
548
+ X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS (HASWELL_X , X86_STEPPINGS (0x2 , 0x2 ), 0x3a ), /* EP */
549
+ X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS (HASWELL_X , X86_STEPPINGS (0x4 , 0x4 ), 0x0f ), /* EX */
575
550
576
- if (boot_cpu_data .x86_stepping > 4 )
577
- return 0 ;
551
+ X86_MATCH_INTEL_FAM6_MODEL ( BROADWELL_X , 0x0b000020 ),
578
552
579
- return ~0U ;
580
- }
553
+ X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS (BROADWELL_D , X86_STEPPINGS (0x2 , 0x2 ), 0x00000011 ),
554
+ X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS (BROADWELL_D , X86_STEPPINGS (0x3 , 0x3 ), 0x0700000e ),
555
+ X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS (BROADWELL_D , X86_STEPPINGS (0x4 , 0x4 ), 0x0f00000c ),
556
+ X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS (BROADWELL_D , X86_STEPPINGS (0x5 , 0x5 ), 0x0e000003 ),
581
557
582
- static const struct x86_cpu_id deadline_match [] __initconst = {
583
- X86_MATCH_INTEL_FAM6_MODEL ( HASWELL_X , & hsx_deadline_rev ),
584
- X86_MATCH_INTEL_FAM6_MODEL ( BROADWELL_X , 0x0b000020 ),
585
- X86_MATCH_INTEL_FAM6_MODEL ( BROADWELL_D , & bdx_deadline_rev ),
586
- X86_MATCH_INTEL_FAM6_MODEL ( SKYLAKE_X , & skx_deadline_rev ),
558
+ X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS (SKYLAKE_X , X86_STEPPINGS (0x3 , 0x3 ), 0x01000136 ),
559
+ X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS (SKYLAKE_X , X86_STEPPINGS (0x4 , 0x4 ), 0x02000014 ),
560
+ X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS (SKYLAKE_X , X86_STEPPINGS (0x5 , 0xf ), 0 ),
587
561
588
562
X86_MATCH_INTEL_FAM6_MODEL ( HASWELL , 0x22 ),
589
563
X86_MATCH_INTEL_FAM6_MODEL ( HASWELL_L , 0x20 ),
@@ -615,14 +589,7 @@ static __init bool apic_validate_deadline_timer(void)
615
589
if (!m )
616
590
return true;
617
591
618
- /*
619
- * Function pointers will have the MSB set due to address layout,
620
- * immediate revisions will not.
621
- */
622
- if ((long )m -> driver_data < 0 )
623
- rev = ((u32 (* )(void ))(m -> driver_data ))();
624
- else
625
- rev = (u32 )m -> driver_data ;
592
+ rev = (u32 )m -> driver_data ;
626
593
627
594
if (boot_cpu_data .microcode >= rev )
628
595
return true;
0 commit comments