[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/APIC: restrict certain messages to BSP
commit 5115b437eef595ce77f05bfc02626e31e263e965 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Thu May 14 15:04:32 2020 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Thu May 14 15:04:32 2020 +0200 x86/APIC: restrict certain messages to BSP All CPUs get an equal setting of EOI broadcast suppression; no need to log one message per CPU, even if it's only in verbose APIC mode. Only the BSP is eligible to possibly get ExtINT enabled; no need to log that it gets disabled on all APs, even if - again - it's only in verbose APIC mode. Take the opportunity and introduce a "bsp" parameter to the function, to stop using smp_processor_id() to tell BSP from APs. No functional change from this. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- xen/arch/x86/apic.c | 19 ++++++++++--------- xen/arch/x86/smpboot.c | 4 ++-- xen/include/asm-x86/apic.h | 2 +- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c index 71f4efb2fe..60627fd6e6 100644 --- a/xen/arch/x86/apic.c +++ b/xen/arch/x86/apic.c @@ -499,7 +499,7 @@ static void resume_x2apic(void) __enable_x2apic(); } -void setup_local_APIC(void) +void setup_local_APIC(bool bsp) { unsigned long oldvalue, value, maxlvt; int i, j; @@ -598,8 +598,8 @@ void setup_local_APIC(void) if ( directed_eoi_enabled ) { value |= APIC_SPIV_DIRECTED_EOI; - apic_printk(APIC_VERBOSE, "Suppress EOI broadcast on CPU#%d\n", - smp_processor_id()); + if ( bsp ) + apic_printk(APIC_VERBOSE, "Suppressing EOI broadcast\n"); } apic_write(APIC_SPIV, value); @@ -615,21 +615,22 @@ void setup_local_APIC(void) * TODO: set up through-local-APIC from through-I/O-APIC? --macro */ value = apic_read(APIC_LVT0) & APIC_LVT_MASKED; - if (!smp_processor_id() && (pic_mode || !value)) { + if (bsp && (pic_mode || !value)) { value = APIC_DM_EXTINT; apic_printk(APIC_VERBOSE, "enabled ExtINT on CPU#%d\n", smp_processor_id()); } else { value = APIC_DM_EXTINT | APIC_LVT_MASKED; - apic_printk(APIC_VERBOSE, "masked ExtINT on CPU#%d\n", - smp_processor_id()); + if (bsp) + apic_printk(APIC_VERBOSE, "masked ExtINT on CPU#%d\n", + smp_processor_id()); } apic_write(APIC_LVT0, value); /* * only the BP should see the LINT1 NMI signal, obviously. */ - if (!smp_processor_id()) + if (bsp) value = APIC_DM_NMI; else value = APIC_DM_NMI | APIC_LVT_MASKED; @@ -663,7 +664,7 @@ void setup_local_APIC(void) printk("Leaving ESR disabled.\n"); } - if (nmi_watchdog == NMI_LOCAL_APIC && smp_processor_id()) + if (nmi_watchdog == NMI_LOCAL_APIC && !bsp) setup_apic_nmi_watchdog(); apic_pm_activate(); } @@ -1474,7 +1475,7 @@ int __init APIC_init_uniprocessor (void) physids_clear(phys_cpu_present_map); physid_set(boot_cpu_physical_apicid, phys_cpu_present_map); - setup_local_APIC(); + setup_local_APIC(true); if (nmi_watchdog == NMI_LOCAL_APIC) check_nmi_watchdog(); diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index f999323bc4..170ab24e66 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -192,7 +192,7 @@ static void smp_callin(void) */ Dprintk("CALLIN, before setup_local_APIC().\n"); x2apic_ap_setup(); - setup_local_APIC(); + setup_local_APIC(false); /* Save our processor parameters. */ if ( !smp_store_cpu_info(cpu) ) @@ -1183,7 +1183,7 @@ void __init smp_prepare_cpus(void) verify_local_APIC(); connect_bsp_APIC(); - setup_local_APIC(); + setup_local_APIC(true); if ( !skip_ioapic_setup && nr_ioapics ) setup_IO_APIC(); diff --git a/xen/include/asm-x86/apic.h b/xen/include/asm-x86/apic.h index 4759279eb2..8ddb896ee9 100644 --- a/xen/include/asm-x86/apic.h +++ b/xen/include/asm-x86/apic.h @@ -169,7 +169,7 @@ extern int verify_local_APIC (void); extern void cache_APIC_registers (void); extern void sync_Arb_IDs (void); extern void init_bsp_APIC (void); -extern void setup_local_APIC (void); +extern void setup_local_APIC(bool bsp); extern void init_apic_mappings (void); extern void smp_local_timer_interrupt (struct cpu_user_regs *regs); extern void setup_boot_APIC_clock (void); -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |