Qualcomm Kryo 600-series Gold cores appear to have a derivative of an
ARM Cortex A78 / ARM Cortex X1 in them. Since these need Spectre
mitigation then the Kyro 600-series Gold/Prime cores also should need
Spectre mitigation.
Signed-off-by: Douglas Anderson <dianders@chromium.org>
---
Yes. I know. This patch DOESN'T COMPILE because
MIDR_QCOM_KRYO_6XX_GOLD and MIDR_QCOM_KRYO_6XX_PRIME are not
defined. Those value needs to come from Qualcomm or from testing on
hardware, which I don't have. Qualcomm needs to chime in to confirm
that this Spectre mitigation is correct anyway, though. I'm including
this patch so it's obvious that I think these cores also need the
mitigation.
arch/arm64/kernel/proton-pack.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm64/kernel/proton-pack.c b/arch/arm64/kernel/proton-pack.c
index 212481726f04..67aa54017dea 100644
--- a/arch/arm64/kernel/proton-pack.c
+++ b/arch/arm64/kernel/proton-pack.c
@@ -860,6 +860,8 @@ u8 spectre_bhb_loop_affected(int scope)
MIDR_ALL_VERSIONS(MIDR_CORTEX_X2),
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N2),
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V1),
+ MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_GOLD),
+ MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_PRIME),
{},
};
static const struct midr_range spectre_bhb_k24_list[] = {
--
2.47.0.338.g60cca15819-goog
Hi Douglas,
kernel test robot noticed the following build errors:
[auto build test ERROR on arm64/for-next/core]
[also build test ERROR on arm-perf/for-next/perf kvmarm/next soc/for-next arm/for-next arm/fixes linus/master v6.13-rc2 next-20241210]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Douglas-Anderson/arm64-errata-Add-QCOM_KRYO_4XX_GOLD-to-the-spectre_bhb_k24_list/20241210-014833
base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
patch link: https://lore.kernel.org/r/20241209094310.6.I722621804be859e4ae4b7479ce191c5e3367b37c%40changeid
patch subject: [PATCH 6/6] arm64: errata: Add QCOM_KRYO_6XX_GOLD/PRIME to the spectre_bhb_k32_list
config: arm64-allnoconfig (https://download.01.org/0day-ci/archive/20241211/202412110032.Sku0iZvD-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241211/202412110032.Sku0iZvD-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202412110032.Sku0iZvD-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from arch/arm64/include/asm/cache.h:43,
from include/linux/cache.h:6,
from include/linux/jiffies.h:5,
from include/linux/ktime.h:25,
from include/linux/timer.h:6,
from include/linux/workqueue.h:9,
from include/linux/bpf.h:10,
from arch/arm64/kernel/proton-pack.c:21:
arch/arm64/kernel/proton-pack.c: In function 'spectre_bhb_loop_affected':
>> arch/arm64/kernel/proton-pack.c:863:43: error: 'MIDR_QCOM_KRYO_6XX_GOLD' undeclared (first use in this function); did you mean 'MIDR_QCOM_KRYO_4XX_GOLD'?
863 | MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_GOLD),
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/cputype.h:251:26: note: in definition of macro 'MIDR_RANGE'
251 | .model = m, \
| ^
arch/arm64/kernel/proton-pack.c:863:25: note: in expansion of macro 'MIDR_ALL_VERSIONS'
863 | MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_GOLD),
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/proton-pack.c:863:43: note: each undeclared identifier is reported only once for each function it appears in
863 | MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_GOLD),
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/cputype.h:251:26: note: in definition of macro 'MIDR_RANGE'
251 | .model = m, \
| ^
arch/arm64/kernel/proton-pack.c:863:25: note: in expansion of macro 'MIDR_ALL_VERSIONS'
863 | MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_GOLD),
| ^~~~~~~~~~~~~~~~~
>> arch/arm64/kernel/proton-pack.c:864:43: error: 'MIDR_QCOM_KRYO_6XX_PRIME' undeclared (first use in this function); did you mean 'MIDR_QCOM_KRYO_3XX_SILVER'?
864 | MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_PRIME),
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/cputype.h:251:26: note: in definition of macro 'MIDR_RANGE'
251 | .model = m, \
| ^
arch/arm64/kernel/proton-pack.c:864:25: note: in expansion of macro 'MIDR_ALL_VERSIONS'
864 | MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_PRIME),
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/proton-pack.c:872:43: error: 'MIDR_QCOM_KRYO_5XX_GOLD' undeclared (first use in this function); did you mean 'MIDR_QCOM_KRYO_4XX_GOLD'?
872 | MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_5XX_GOLD),
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/cputype.h:251:26: note: in definition of macro 'MIDR_RANGE'
251 | .model = m, \
| ^
arch/arm64/kernel/proton-pack.c:872:25: note: in expansion of macro 'MIDR_ALL_VERSIONS'
872 | MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_5XX_GOLD),
| ^~~~~~~~~~~~~~~~~
vim +863 arch/arm64/kernel/proton-pack.c
843
844 /*
845 * This must be called with SCOPE_LOCAL_CPU for each type of CPU, before any
846 * SCOPE_SYSTEM call will give the right answer.
847 */
848 u8 spectre_bhb_loop_affected(int scope)
849 {
850 u8 k = 0;
851 static u8 max_bhb_k;
852
853 if (scope == SCOPE_LOCAL_CPU) {
854 static const struct midr_range spectre_bhb_k32_list[] = {
855 MIDR_ALL_VERSIONS(MIDR_CORTEX_A78),
856 MIDR_ALL_VERSIONS(MIDR_CORTEX_A78AE),
857 MIDR_ALL_VERSIONS(MIDR_CORTEX_A78C),
858 MIDR_ALL_VERSIONS(MIDR_CORTEX_X1),
859 MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
860 MIDR_ALL_VERSIONS(MIDR_CORTEX_X2),
861 MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N2),
862 MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V1),
> 863 MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_GOLD),
> 864 MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_PRIME),
865 {},
866 };
867 static const struct midr_range spectre_bhb_k24_list[] = {
868 MIDR_ALL_VERSIONS(MIDR_CORTEX_A76),
869 MIDR_ALL_VERSIONS(MIDR_CORTEX_A77),
870 MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N1),
871 MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_4XX_GOLD),
872 MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_5XX_GOLD),
873 {},
874 };
875 static const struct midr_range spectre_bhb_k11_list[] = {
876 MIDR_ALL_VERSIONS(MIDR_AMPERE1),
877 {},
878 };
879 static const struct midr_range spectre_bhb_k8_list[] = {
880 MIDR_ALL_VERSIONS(MIDR_CORTEX_A72),
881 MIDR_ALL_VERSIONS(MIDR_CORTEX_A57),
882 {},
883 };
884
885 if (is_midr_in_range_list(read_cpuid_id(), spectre_bhb_k32_list))
886 k = 32;
887 else if (is_midr_in_range_list(read_cpuid_id(), spectre_bhb_k24_list))
888 k = 24;
889 else if (is_midr_in_range_list(read_cpuid_id(), spectre_bhb_k11_list))
890 k = 11;
891 else if (is_midr_in_range_list(read_cpuid_id(), spectre_bhb_k8_list))
892 k = 8;
893
894 max_bhb_k = max(max_bhb_k, k);
895 } else {
896 k = max_bhb_k;
897 }
898
899 return k;
900 }
901
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
On Mon, Dec 09, 2024 at 09:43:16AM -0800, Douglas Anderson wrote:
> Qualcomm Kryo 600-series Gold cores appear to have a derivative of an
> ARM Cortex A78 / ARM Cortex X1 in them. Since these need Spectre
> mitigation then the Kyro 600-series Gold/Prime cores also should need
> Spectre mitigation.
>
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> ---
> Yes. I know. This patch DOESN'T COMPILE because
> MIDR_QCOM_KRYO_6XX_GOLD and MIDR_QCOM_KRYO_6XX_PRIME are not
> defined. Those value needs to come from Qualcomm or from testing on
> hardware, which I don't have. Qualcomm needs to chime in to confirm
> that this Spectre mitigation is correct anyway, though. I'm including
> this patch so it's obvious that I think these cores also need the
> mitigation.
SM8350 (Kryo 680) identifies itself as 0x41/0xd44 (Prime), 0x41/0xd41
(Gold) and 0x41/0xd05 (Silver)
>
> arch/arm64/kernel/proton-pack.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/arm64/kernel/proton-pack.c b/arch/arm64/kernel/proton-pack.c
> index 212481726f04..67aa54017dea 100644
> --- a/arch/arm64/kernel/proton-pack.c
> +++ b/arch/arm64/kernel/proton-pack.c
> @@ -860,6 +860,8 @@ u8 spectre_bhb_loop_affected(int scope)
> MIDR_ALL_VERSIONS(MIDR_CORTEX_X2),
> MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N2),
> MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V1),
> + MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_GOLD),
> + MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_6XX_PRIME),
> {},
> };
> static const struct midr_range spectre_bhb_k24_list[] = {
> --
> 2.47.0.338.g60cca15819-goog
>
--
With best wishes
Dmitry
Hi, On Mon, Dec 9, 2024 at 3:09 PM Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote: > > On Mon, Dec 09, 2024 at 09:43:16AM -0800, Douglas Anderson wrote: > > Qualcomm Kryo 600-series Gold cores appear to have a derivative of an > > ARM Cortex A78 / ARM Cortex X1 in them. Since these need Spectre > > mitigation then the Kyro 600-series Gold/Prime cores also should need > > Spectre mitigation. > > > > Signed-off-by: Douglas Anderson <dianders@chromium.org> > > --- > > Yes. I know. This patch DOESN'T COMPILE because > > MIDR_QCOM_KRYO_6XX_GOLD and MIDR_QCOM_KRYO_6XX_PRIME are not > > defined. Those value needs to come from Qualcomm or from testing on > > hardware, which I don't have. Qualcomm needs to chime in to confirm > > that this Spectre mitigation is correct anyway, though. I'm including > > this patch so it's obvious that I think these cores also need the > > mitigation. > > SM8350 (Kryo 680) identifies itself as 0x41/0xd44 (Prime), 0x41/0xd41 > (Gold) and 0x41/0xd05 (Silver) Wow, all standard ARM cores. OK, I guess we can drop this patch too then. Nice! -Doug
© 2016 - 2026 Red Hat, Inc.