Messages in this thread | ![/](/images/icornerl.gif) | | Date | Mon, 26 Jun 2023 14:07:13 +0100 | From | Conor Dooley <> | Subject | Re: [PATCH 2/2] RISC-V: alternative: Remove feature_probe_func |
| |
Hey Evan,
On Fri, Jun 23, 2023 at 03:20:16PM -0700, Evan Green wrote: > Now that we're testing unaligned memory copy and making that > determination generically, there are no more users of the vendor > feature_probe_func(). While I think it's probably going to need to come > back, there are no users right now, so let's remove it until it's > needed.
How come this is done as a separate patch, rather than delete the dead code as part of the probe addition? Ease of review?
Change itself seems fine to me though, so Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Cheers, Conor.
> > Signed-off-by: Evan Green <evan@rivosinc.com> > > --- > > arch/riscv/errata/thead/errata.c | 8 -------- > arch/riscv/include/asm/alternative.h | 5 ----- > arch/riscv/kernel/alternative.c | 19 ------------------- > arch/riscv/kernel/smpboot.c | 1 - > 4 files changed, 33 deletions(-) > > diff --git a/arch/riscv/errata/thead/errata.c b/arch/riscv/errata/thead/errata.c > index c259dc925ec1..bf42857c977f 100644 > --- a/arch/riscv/errata/thead/errata.c > +++ b/arch/riscv/errata/thead/errata.c > @@ -117,11 +117,3 @@ void thead_errata_patch_func(struct alt_entry *begin, struct alt_entry *end, > if (stage == RISCV_ALTERNATIVES_EARLY_BOOT) > local_flush_icache_all(); > } > - > -void thead_feature_probe_func(unsigned int cpu, > - unsigned long archid, > - unsigned long impid) > -{ > - if ((archid == 0) && (impid == 0)) > - per_cpu(misaligned_access_speed, cpu) = RISCV_HWPROBE_MISALIGNED_FAST; > -} > diff --git a/arch/riscv/include/asm/alternative.h b/arch/riscv/include/asm/alternative.h > index 6a41537826a7..58ccd2f8cab7 100644 > --- a/arch/riscv/include/asm/alternative.h > +++ b/arch/riscv/include/asm/alternative.h > @@ -30,7 +30,6 @@ > #define ALT_OLD_PTR(a) __ALT_PTR(a, old_offset) > #define ALT_ALT_PTR(a) __ALT_PTR(a, alt_offset) > > -void probe_vendor_features(unsigned int cpu); > void __init apply_boot_alternatives(void); > void __init apply_early_boot_alternatives(void); > void apply_module_alternatives(void *start, size_t length); > @@ -53,15 +52,11 @@ void thead_errata_patch_func(struct alt_entry *begin, struct alt_entry *end, > unsigned long archid, unsigned long impid, > unsigned int stage); > > -void thead_feature_probe_func(unsigned int cpu, unsigned long archid, > - unsigned long impid); > - > void riscv_cpufeature_patch_func(struct alt_entry *begin, struct alt_entry *end, > unsigned int stage); > > #else /* CONFIG_RISCV_ALTERNATIVE */ > > -static inline void probe_vendor_features(unsigned int cpu) { } > static inline void apply_boot_alternatives(void) { } > static inline void apply_early_boot_alternatives(void) { } > static inline void apply_module_alternatives(void *start, size_t length) { } > diff --git a/arch/riscv/kernel/alternative.c b/arch/riscv/kernel/alternative.c > index 6b75788c18e6..85056153fa23 100644 > --- a/arch/riscv/kernel/alternative.c > +++ b/arch/riscv/kernel/alternative.c > @@ -27,8 +27,6 @@ struct cpu_manufacturer_info_t { > void (*patch_func)(struct alt_entry *begin, struct alt_entry *end, > unsigned long archid, unsigned long impid, > unsigned int stage); > - void (*feature_probe_func)(unsigned int cpu, unsigned long archid, > - unsigned long impid); > }; > > static void riscv_fill_cpu_mfr_info(struct cpu_manufacturer_info_t *cpu_mfr_info) > @@ -43,7 +41,6 @@ static void riscv_fill_cpu_mfr_info(struct cpu_manufacturer_info_t *cpu_mfr_info > cpu_mfr_info->imp_id = sbi_get_mimpid(); > #endif > > - cpu_mfr_info->feature_probe_func = NULL; > switch (cpu_mfr_info->vendor_id) { > #ifdef CONFIG_ERRATA_SIFIVE > case SIFIVE_VENDOR_ID: > @@ -53,7 +50,6 @@ static void riscv_fill_cpu_mfr_info(struct cpu_manufacturer_info_t *cpu_mfr_info > #ifdef CONFIG_ERRATA_THEAD > case THEAD_VENDOR_ID: > cpu_mfr_info->patch_func = thead_errata_patch_func; > - cpu_mfr_info->feature_probe_func = thead_feature_probe_func; > break; > #endif > default: > @@ -143,20 +139,6 @@ void riscv_alternative_fix_offsets(void *alt_ptr, unsigned int len, > } > } > > -/* Called on each CPU as it starts */ > -void probe_vendor_features(unsigned int cpu) > -{ > - struct cpu_manufacturer_info_t cpu_mfr_info; > - > - riscv_fill_cpu_mfr_info(&cpu_mfr_info); > - if (!cpu_mfr_info.feature_probe_func) > - return; > - > - cpu_mfr_info.feature_probe_func(cpu, > - cpu_mfr_info.arch_id, > - cpu_mfr_info.imp_id); > -} > - > /* > * This is called very early in the boot process (directly after we run > * a feature detect on the boot CPU). No need to worry about other CPUs > @@ -211,7 +193,6 @@ void __init apply_boot_alternatives(void) > /* If called on non-boot cpu things could go wrong */ > WARN_ON(smp_processor_id() != 0); > > - probe_vendor_features(0); > _apply_alternatives((struct alt_entry *)__alt_start, > (struct alt_entry *)__alt_end, > RISCV_ALTERNATIVES_BOOT); > diff --git a/arch/riscv/kernel/smpboot.c b/arch/riscv/kernel/smpboot.c > index e34a71b4786b..054f2d4474d0 100644 > --- a/arch/riscv/kernel/smpboot.c > +++ b/arch/riscv/kernel/smpboot.c > @@ -246,7 +246,6 @@ asmlinkage __visible void smp_callin(void) > numa_add_cpu(curr_cpuid); > set_cpu_online(curr_cpuid, 1); > check_misaligned_access(curr_cpuid); > - probe_vendor_features(curr_cpuid); > > if (has_vector()) { > if (riscv_v_setup_vsize()) > -- > 2.34.1 > [unhandled content-type:application/pgp-signature] | ![\](/images/icornerr.gif) |