Acked-by: Steve Wahl <steve.wahl@xxxxxxx> On Wed, Sep 16, 2020 at 02:20:28PM -0500, Mike Travis wrote: > UV class systems no longer use System Controller for monitoring of CPU > activity provided by this driver. Other methods have been developed > for BIOS and the management controller (BMC). This patch removes that > supporting code. > > Signed-off-by: Mike Travis <mike.travis@xxxxxxx> > Reviewed-by: Dimitri Sivanich <dimitri.sivanich@xxxxxxx> > --- > arch/x86/include/asm/uv/uv_hub.h | 43 ++-------------- > arch/x86/kernel/apic/x2apic_uv_x.c | 82 ------------------------------ > 2 files changed, 3 insertions(+), 122 deletions(-) > > diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h > index 100d66806503..b21228db75bf 100644 > --- a/arch/x86/include/asm/uv/uv_hub.h > +++ b/arch/x86/include/asm/uv/uv_hub.h > @@ -129,17 +129,6 @@ > */ > #define UV_MAX_NASID_VALUE (UV_MAX_NUMALINK_BLADES * 2) > > -/* System Controller Interface Reg info */ > -struct uv_scir_s { > - struct timer_list timer; > - unsigned long offset; > - unsigned long last; > - unsigned long idle_on; > - unsigned long idle_off; > - unsigned char state; > - unsigned char enabled; > -}; > - > /* GAM (globally addressed memory) range table */ > struct uv_gam_range_s { > u32 limit; /* PA bits 56:26 (GAM_RANGE_SHFT) */ > @@ -191,16 +180,13 @@ struct uv_hub_info_s { > struct uv_cpu_info_s { > void *p_uv_hub_info; > unsigned char blade_cpu_id; > - struct uv_scir_s scir; > + void *reserved; > }; > DECLARE_PER_CPU(struct uv_cpu_info_s, __uv_cpu_info); > > #define uv_cpu_info this_cpu_ptr(&__uv_cpu_info) > #define uv_cpu_info_per(cpu) (&per_cpu(__uv_cpu_info, cpu)) > > -#define uv_scir_info (&uv_cpu_info->scir) > -#define uv_cpu_scir_info(cpu) (&uv_cpu_info_per(cpu)->scir) > - > /* Node specific hub common info struct */ > extern void **__uv_hub_info_list; > static inline struct uv_hub_info_s *uv_hub_info_list(int node) > @@ -297,9 +283,9 @@ union uvh_apicid { > #define UV3_GLOBAL_MMR32_SIZE (32UL * 1024 * 1024) > > #define UV4_LOCAL_MMR_BASE 0xfa000000UL > -#define UV4_GLOBAL_MMR32_BASE 0xfc000000UL > +#define UV4_GLOBAL_MMR32_BASE 0 > #define UV4_LOCAL_MMR_SIZE (32UL * 1024 * 1024) > -#define UV4_GLOBAL_MMR32_SIZE (16UL * 1024 * 1024) > +#define UV4_GLOBAL_MMR32_SIZE 0 > > #define UV_LOCAL_MMR_BASE ( \ > is_uv2_hub() ? UV2_LOCAL_MMR_BASE : \ > @@ -772,29 +758,6 @@ DECLARE_PER_CPU(struct uv_cpu_nmi_s, uv_cpu_nmi); > #define UV_NMI_STATE_DUMP 2 > #define UV_NMI_STATE_DUMP_DONE 3 > > -/* Update SCIR state */ > -static inline void uv_set_scir_bits(unsigned char value) > -{ > - if (uv_scir_info->state != value) { > - uv_scir_info->state = value; > - uv_write_local_mmr8(uv_scir_info->offset, value); > - } > -} > - > -static inline unsigned long uv_scir_offset(int apicid) > -{ > - return SCIR_LOCAL_MMR_BASE | (apicid & 0x3f); > -} > - > -static inline void uv_set_cpu_scir_bits(int cpu, unsigned char value) > -{ > - if (uv_cpu_scir_info(cpu)->state != value) { > - uv_write_global_mmr8(uv_cpu_to_pnode(cpu), > - uv_cpu_scir_info(cpu)->offset, value); > - uv_cpu_scir_info(cpu)->state = value; > - } > -} > - > /* > * Get the minimum revision number of the hub chips within the partition. > * (See UVx_HUB_REVISION_BASE above for specific values.) > diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c > index 0b6eea3f54e6..f51fabf56010 100644 > --- a/arch/x86/kernel/apic/x2apic_uv_x.c > +++ b/arch/x86/kernel/apic/x2apic_uv_x.c > @@ -909,85 +909,6 @@ static __init void uv_rtc_init(void) > } > } > > -/* > - * percpu heartbeat timer > - */ > -static void uv_heartbeat(struct timer_list *timer) > -{ > - unsigned char bits = uv_scir_info->state; > - > - /* Flip heartbeat bit: */ > - bits ^= SCIR_CPU_HEARTBEAT; > - > - /* Is this CPU idle? */ > - if (idle_cpu(raw_smp_processor_id())) > - bits &= ~SCIR_CPU_ACTIVITY; > - else > - bits |= SCIR_CPU_ACTIVITY; > - > - /* Update system controller interface reg: */ > - uv_set_scir_bits(bits); > - > - /* Enable next timer period: */ > - mod_timer(timer, jiffies + SCIR_CPU_HB_INTERVAL); > -} > - > -static int uv_heartbeat_enable(unsigned int cpu) > -{ > - while (!uv_cpu_scir_info(cpu)->enabled) { > - struct timer_list *timer = &uv_cpu_scir_info(cpu)->timer; > - > - uv_set_cpu_scir_bits(cpu, SCIR_CPU_HEARTBEAT|SCIR_CPU_ACTIVITY); > - timer_setup(timer, uv_heartbeat, TIMER_PINNED); > - timer->expires = jiffies + SCIR_CPU_HB_INTERVAL; > - add_timer_on(timer, cpu); > - uv_cpu_scir_info(cpu)->enabled = 1; > - > - /* Also ensure that boot CPU is enabled: */ > - cpu = 0; > - } > - return 0; > -} > - > -#ifdef CONFIG_HOTPLUG_CPU > -static int uv_heartbeat_disable(unsigned int cpu) > -{ > - if (uv_cpu_scir_info(cpu)->enabled) { > - uv_cpu_scir_info(cpu)->enabled = 0; > - del_timer(&uv_cpu_scir_info(cpu)->timer); > - } > - uv_set_cpu_scir_bits(cpu, 0xff); > - return 0; > -} > - > -static __init void uv_scir_register_cpu_notifier(void) > -{ > - cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "x86/x2apic-uvx:online", > - uv_heartbeat_enable, uv_heartbeat_disable); > -} > - > -#else /* !CONFIG_HOTPLUG_CPU */ > - > -static __init void uv_scir_register_cpu_notifier(void) > -{ > -} > - > -static __init int uv_init_heartbeat(void) > -{ > - int cpu; > - > - if (is_uv_system()) { > - for_each_online_cpu(cpu) > - uv_heartbeat_enable(cpu); > - } > - > - return 0; > -} > - > -late_initcall(uv_init_heartbeat); > - > -#endif /* !CONFIG_HOTPLUG_CPU */ > - > /* Direct Legacy VGA I/O traffic to designated IOH */ > static int uv_set_vga_state(struct pci_dev *pdev, bool decode, unsigned int command_bits, u32 flags) > { > @@ -1517,8 +1438,6 @@ static void __init uv_system_init_hub(void) > uv_hub_info_list(numa_node_id)->pnode = pnode; > else if (uv_cpu_hub_info(cpu)->pnode == 0xffff) > uv_cpu_hub_info(cpu)->pnode = pnode; > - > - uv_cpu_scir_info(cpu)->offset = uv_scir_offset(apicid); > } > > for_each_node(nodeid) { > @@ -1547,7 +1466,6 @@ static void __init uv_system_init_hub(void) > > uv_nmi_setup(); > uv_cpu_init(); > - uv_scir_register_cpu_notifier(); > uv_setup_proc_files(0); > > /* Register Legacy VGA I/O redirection handler: */ > -- > 2.21.0 >