[v2,2/4] config/arm: add generic V2 SoC

Message ID 20240220014533.1483934-2-honnappa.nagarahalli@arm.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series [v2,1/4] config/arm: add Neoverse V2 part number |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Honnappa Nagarahalli Feb. 20, 2024, 1:45 a.m. UTC
  Add generic V2 CPU SoC. This will allow for compiling a binary
that will run on any SoC that uses V2 CPU.

Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Wathsala Vithanage <wathsala.vithanage@arm.com>
---
 config/arm/arm64_v2_linux_gcc | 16 ++++++++++++++++
 config/arm/meson.build        |  9 +++++++++
 2 files changed, 25 insertions(+)
 create mode 100644 config/arm/arm64_v2_linux_gcc
  

Comments

Thomas Monjalon Feb. 22, 2024, 7:08 a.m. UTC | #1
20/02/2024 02:45, Honnappa Nagarahalli:
> Add generic V2 CPU SoC. This will allow for compiling a binary
> that will run on any SoC that uses V2 CPU.
[...]
> +soc_v2 = {
> +    'description': 'Arm Neoverse V2',
> +    'implementer': '0x41',
> +    'part_number': '0xd4f',
> +    'numa': true
> +}
[...]
>  thunderxt88:     Marvell ThunderX T88
>  thunderxt83:     Marvell ThunderX T83
> +v2:              Arm Neoverse V2

Why just "v2" and not "neoversev2"?

Is it a new Arm naming?
If yes, why not just "2" ;)
Last question: what is best between Arm V2 and Armv7? answer is aarchv2 :D
Sorry I like having fun with Arm naming.
  
Honnappa Nagarahalli Feb. 22, 2024, 10:05 p.m. UTC | #2
> On Feb 22, 2024, at 1:08 AM, Thomas Monjalon <thomas@monjalon.net> wrote:
> 
> 20/02/2024 02:45, Honnappa Nagarahalli:
>> Add generic V2 CPU SoC. This will allow for compiling a binary
>> that will run on any SoC that uses V2 CPU.
> [...]
>> +soc_v2 = {
>> +    'description': 'Arm Neoverse V2',
>> +    'implementer': '0x41',
>> +    'part_number': '0xd4f',
>> +    'numa': true
>> +}
> [...]
>> thunderxt88:     Marvell ThunderX T88
>> thunderxt83:     Marvell ThunderX T83
>> +v2:              Arm Neoverse V2
> 
> Why just "v2" and not "neoversev2”?
This is what was done for N2, so just keeping it consistent

> 
> Is it a new Arm naming?
No. ’Neoverse’ is the brand name that encompasses all the products for infrastructure market. CPUs are one of the products under Neoverse brand name. There are 2 series of CPUs (targeting 2 different PPAs) - N series and V series. N2 and V2 are the second generation of CPUs in those series.

> If yes, why not just "2" ;)
> Last question: what is best between Arm V2 and Armv7? answer is aarchv2 :D
ArmV7/ArmV8/ArmV9 are architecture revisions. There is no ArmV2 architecture.

Aarch32/Aarch64 are architecture states. For ex: N1 supported Aarch32 to run 32b applications as well as Aarch64 to run 64b applications. The later cores just support Aarch64 state and one can run only 64b applications.

> Sorry I like having fun with Arm naming.
No worries, it can be confusing. I hope the above explanation helps.

You have to pin this email for several months to be able to remember this :)
> 
>
  

Patch

diff --git a/config/arm/arm64_v2_linux_gcc b/config/arm/arm64_v2_linux_gcc
new file mode 100644
index 0000000000..50d9be3da3
--- /dev/null
+++ b/config/arm/arm64_v2_linux_gcc
@@ -0,0 +1,16 @@ 
+[binaries]
+c = ['ccache', 'aarch64-linux-gnu-gcc']
+cpp = ['ccache', 'aarch64-linux-gnu-g++']
+ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
+pkgconfig = 'aarch64-linux-gnu-pkg-config'
+pcap-config = ''
+
+[host_machine]
+system = 'linux'
+cpu_family = 'aarch64'
+cpu = 'armv9-a'
+endian = 'little'
+
+[properties]
+platform = 'v2'
diff --git a/config/arm/meson.build b/config/arm/meson.build
index 18b595ead1..f096ed9ebf 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -527,6 +527,13 @@  soc_bluefield3 = {
    'numa': false
 }
 
+soc_v2 = {
+    'description': 'Arm Neoverse V2',
+    'implementer': '0x41',
+    'part_number': '0xd4f',
+    'numa': true
+}
+
 '''
 Start of SoCs list
 generic:         Generic un-optimized build for armv8 aarch64 execution mode.
@@ -555,6 +562,7 @@  stingray:        Broadcom Stingray
 thunderx2:       Marvell ThunderX2 T99
 thunderxt88:     Marvell ThunderX T88
 thunderxt83:     Marvell ThunderX T83
+v2:              Arm Neoverse V2
 End of SoCs list
 '''
 # The string above is included in the documentation, keep it in sync with the
@@ -586,6 +594,7 @@  socs = {
     'thunderx2': soc_thunderx2,
     'thunderxt88': soc_thunderxt88,
     'thunderxt83': soc_thunderxt83,
+    'v2': soc_v2,
 }
 
 dpdk_conf.set('RTE_ARCH_ARM', 1)