[PATCH v6 12/14] arm/cpu: Add sysreg generation scripts

Cornelia Huck posted 14 patches 9 months, 1 week ago
Maintainers: Peter Maydell <peter.maydell@linaro.org>, Alexander Graf <agraf@csgraf.de>, Paolo Bonzini <pbonzini@redhat.com>
There is a newer version of this series
[PATCH v6 12/14] arm/cpu: Add sysreg generation scripts
Posted by Cornelia Huck 9 months, 1 week ago
From: Eric Auger <eric.auger@redhat.com>

Introduce scripts that automate the generation of system register
definitions from a given linux source tree arch/arm64/tools/sysreg.

Invocation of
./update-aarch64-sysreg-code.sh $PATH_TO_LINUX_SOURCE_TREE
in scripts directory generates target/arm/cpu-sysregs.h.inc
containing defines for all system registers.

[CH: update to handle current kernel sysregs structure, and to emit
     the re-worked register structures; cpu properties will be added
     later]
Reviewed-by: Sebastian Ott <sebott@redhat.com>
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
 scripts/gen-cpu-sysregs-header.awk    | 35 +++++++++++++++++++++++++++
 scripts/update-aarch64-sysreg-code.sh | 25 +++++++++++++++++++
 2 files changed, 60 insertions(+)
 create mode 100755 scripts/gen-cpu-sysregs-header.awk
 create mode 100755 scripts/update-aarch64-sysreg-code.sh

diff --git a/scripts/gen-cpu-sysregs-header.awk b/scripts/gen-cpu-sysregs-header.awk
new file mode 100755
index 000000000000..b6b207e3c0fd
--- /dev/null
+++ b/scripts/gen-cpu-sysregs-header.awk
@@ -0,0 +1,35 @@
+#!/bin/awk -f
+# SPDX-License-Identifier: GPL-2.0
+# gen-cpu-sysregs-header.awk: arm64 sysreg header include generator
+#
+# Usage: awk -f gen-cpu-sysregs-header.awk $LINUX_PATH/arch/arm64/tools/sysreg
+
+BEGIN {
+    print ""
+} END {
+    print ""
+}
+
+# skip blank lines and comment lines
+/^$/ { next }
+/^[\t ]*#/ { next }
+
+/^Sysreg\t/ || /^Sysreg /{
+
+	reg = $2
+	op0 = $3
+	op1 = $4
+	crn = $5
+	crm = $6
+	op2 = $7
+
+	if (op0 == 3 && (op1>=0 && op1<=3) && crn==0 && (crm>=0 && crm<=7) && (op2>=0 && op2<=7)) {
+	    print "DEF("reg", "op0", "op1", "crn", "crm", "op2")"
+	}
+	next
+}
+
+{
+	/* skip all other lines */
+	next
+}
diff --git a/scripts/update-aarch64-sysreg-code.sh b/scripts/update-aarch64-sysreg-code.sh
new file mode 100755
index 000000000000..721f41a9a516
--- /dev/null
+++ b/scripts/update-aarch64-sysreg-code.sh
@@ -0,0 +1,25 @@
+#!/bin/sh -e
+#
+# Update target/arm/cpu-sysregs.h
+# from a linux source tree (arch/arm64/tools/sysreg)
+#
+# Copyright Red Hat, Inc. 2024
+#
+# Authors:
+#          Eric Auger <eric.auger@redhat.com>
+#
+
+linux="$1"
+output="$PWD"
+
+if [ -z "$linux" ] || ! [ -d "$linux" ]; then
+    cat << EOF
+usage: update-aarch64-sysreg-code.sh LINUX_PATH
+
+LINUX_PATH      Linux kernel directory to obtain the headers from
+EOF
+    exit 1
+fi
+
+awk -f gen-cpu-sysregs-header.awk \
+    $linux/arch/arm64/tools/sysreg > ../target/arm/cpu-sysregs.h.inc
-- 
2.49.0
Re: [PATCH v6 12/14] arm/cpu: Add sysreg generation scripts
Posted by Daniel P. Berrangé 9 months ago
On Tue, May 06, 2025 at 10:52:32AM +0200, Cornelia Huck wrote:
> From: Eric Auger <eric.auger@redhat.com>
> 
> Introduce scripts that automate the generation of system register
> definitions from a given linux source tree arch/arm64/tools/sysreg.
> 
> Invocation of
> ./update-aarch64-sysreg-code.sh $PATH_TO_LINUX_SOURCE_TREE
> in scripts directory generates target/arm/cpu-sysregs.h.inc
> containing defines for all system registers.
> 
> [CH: update to handle current kernel sysregs structure, and to emit
>      the re-worked register structures; cpu properties will be added
>      later]
> Reviewed-by: Sebastian Ott <sebott@redhat.com>
> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
> ---
>  scripts/gen-cpu-sysregs-header.awk    | 35 +++++++++++++++++++++++++++
>  scripts/update-aarch64-sysreg-code.sh | 25 +++++++++++++++++++
>  2 files changed, 60 insertions(+)
>  create mode 100755 scripts/gen-cpu-sysregs-header.awk
>  create mode 100755 scripts/update-aarch64-sysreg-code.sh
> 
> diff --git a/scripts/gen-cpu-sysregs-header.awk b/scripts/gen-cpu-sysregs-header.awk
> new file mode 100755
> index 000000000000..b6b207e3c0fd
> --- /dev/null
> +++ b/scripts/gen-cpu-sysregs-header.awk
> @@ -0,0 +1,35 @@
> +#!/bin/awk -f
> +# SPDX-License-Identifier: GPL-2.0

Invalid license name here - hopefully checkpatch.pl is warning
about this.

Same issue as in the other sysreg script in the host CPU model
series.


> diff --git a/scripts/update-aarch64-sysreg-code.sh b/scripts/update-aarch64-sysreg-code.sh
> new file mode 100755
> index 000000000000..721f41a9a516
> --- /dev/null
> +++ b/scripts/update-aarch64-sysreg-code.sh
> @@ -0,0 +1,25 @@
> +#!/bin/sh -e
> +#
> +# Update target/arm/cpu-sysregs.h
> +# from a linux source tree (arch/arm64/tools/sysreg)
> +#
> +# Copyright Red Hat, Inc. 2024
> +#
> +# Authors:
> +#          Eric Auger <eric.auger@redhat.com>

Although its fairly short, this still deserves SPDX-License-Identifier
to be set.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Re: [PATCH v6 12/14] arm/cpu: Add sysreg generation scripts
Posted by Cornelia Huck 9 months ago
On Tue, May 13 2025, Daniel P. Berrangé <berrange@redhat.com> wrote:

> On Tue, May 06, 2025 at 10:52:32AM +0200, Cornelia Huck wrote:
>> From: Eric Auger <eric.auger@redhat.com>
>> 
>> Introduce scripts that automate the generation of system register
>> definitions from a given linux source tree arch/arm64/tools/sysreg.
>> 
>> Invocation of
>> ./update-aarch64-sysreg-code.sh $PATH_TO_LINUX_SOURCE_TREE
>> in scripts directory generates target/arm/cpu-sysregs.h.inc
>> containing defines for all system registers.
>> 
>> [CH: update to handle current kernel sysregs structure, and to emit
>>      the re-worked register structures; cpu properties will be added
>>      later]
>> Reviewed-by: Sebastian Ott <sebott@redhat.com>
>> Signed-off-by: Eric Auger <eric.auger@redhat.com>
>> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
>> ---
>>  scripts/gen-cpu-sysregs-header.awk    | 35 +++++++++++++++++++++++++++
>>  scripts/update-aarch64-sysreg-code.sh | 25 +++++++++++++++++++
>>  2 files changed, 60 insertions(+)
>>  create mode 100755 scripts/gen-cpu-sysregs-header.awk
>>  create mode 100755 scripts/update-aarch64-sysreg-code.sh
>> 
>> diff --git a/scripts/gen-cpu-sysregs-header.awk b/scripts/gen-cpu-sysregs-header.awk
>> new file mode 100755
>> index 000000000000..b6b207e3c0fd
>> --- /dev/null
>> +++ b/scripts/gen-cpu-sysregs-header.awk
>> @@ -0,0 +1,35 @@
>> +#!/bin/awk -f
>> +# SPDX-License-Identifier: GPL-2.0
>
> Invalid license name here - hopefully checkpatch.pl is warning
> about this.

It might not check .awk scripts?

>
> Same issue as in the other sysreg script in the host CPU model
> series.
>
>
>> diff --git a/scripts/update-aarch64-sysreg-code.sh b/scripts/update-aarch64-sysreg-code.sh
>> new file mode 100755
>> index 000000000000..721f41a9a516
>> --- /dev/null
>> +++ b/scripts/update-aarch64-sysreg-code.sh
>> @@ -0,0 +1,25 @@
>> +#!/bin/sh -e
>> +#
>> +# Update target/arm/cpu-sysregs.h
>> +# from a linux source tree (arch/arm64/tools/sysreg)
>> +#
>> +# Copyright Red Hat, Inc. 2024
>> +#
>> +# Authors:
>> +#          Eric Auger <eric.auger@redhat.com>
>
> Although its fairly short, this still deserves SPDX-License-Identifier
> to be set.

@Eric: do you agree on "GPL-2.0-or-later"?
Re: [PATCH v6 12/14] arm/cpu: Add sysreg generation scripts
Posted by Daniel P. Berrangé 9 months ago
On Wed, May 14, 2025 at 04:54:15PM +0200, Cornelia Huck wrote:
> On Tue, May 13 2025, Daniel P. Berrangé <berrange@redhat.com> wrote:
> 
> > On Tue, May 06, 2025 at 10:52:32AM +0200, Cornelia Huck wrote:
> >> From: Eric Auger <eric.auger@redhat.com>
> >> 
> >> Introduce scripts that automate the generation of system register
> >> definitions from a given linux source tree arch/arm64/tools/sysreg.
> >> 
> >> Invocation of
> >> ./update-aarch64-sysreg-code.sh $PATH_TO_LINUX_SOURCE_TREE
> >> in scripts directory generates target/arm/cpu-sysregs.h.inc
> >> containing defines for all system registers.
> >> 
> >> [CH: update to handle current kernel sysregs structure, and to emit
> >>      the re-worked register structures; cpu properties will be added
> >>      later]
> >> Reviewed-by: Sebastian Ott <sebott@redhat.com>
> >> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> >> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
> >> ---
> >>  scripts/gen-cpu-sysregs-header.awk    | 35 +++++++++++++++++++++++++++
> >>  scripts/update-aarch64-sysreg-code.sh | 25 +++++++++++++++++++
> >>  2 files changed, 60 insertions(+)
> >>  create mode 100755 scripts/gen-cpu-sysregs-header.awk
> >>  create mode 100755 scripts/update-aarch64-sysreg-code.sh
> >> 
> >> diff --git a/scripts/gen-cpu-sysregs-header.awk b/scripts/gen-cpu-sysregs-header.awk
> >> new file mode 100755
> >> index 000000000000..b6b207e3c0fd
> >> --- /dev/null
> >> +++ b/scripts/gen-cpu-sysregs-header.awk
> >> @@ -0,0 +1,35 @@
> >> +#!/bin/awk -f
> >> +# SPDX-License-Identifier: GPL-2.0
> >
> > Invalid license name here - hopefully checkpatch.pl is warning
> > about this.
> 
> It might not check .awk scripts?

The existence of SPDX tags is only checked for .c, .h,
.py, .pl, .sh, .json & .inc

The validation of license names is checked unconditionally any time
the SPDX-License-Identifier tag is seen.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH v6 12/14] arm/cpu: Add sysreg generation scripts
Posted by Eric Auger 9 months ago
Hi Connie,

On 5/14/25 4:54 PM, Cornelia Huck wrote:
> On Tue, May 13 2025, Daniel P. Berrangé <berrange@redhat.com> wrote:
>
>> On Tue, May 06, 2025 at 10:52:32AM +0200, Cornelia Huck wrote:
>>> From: Eric Auger <eric.auger@redhat.com>
>>>
>>> Introduce scripts that automate the generation of system register
>>> definitions from a given linux source tree arch/arm64/tools/sysreg.
>>>
>>> Invocation of
>>> ./update-aarch64-sysreg-code.sh $PATH_TO_LINUX_SOURCE_TREE
>>> in scripts directory generates target/arm/cpu-sysregs.h.inc
>>> containing defines for all system registers.
>>>
>>> [CH: update to handle current kernel sysregs structure, and to emit
>>>      the re-worked register structures; cpu properties will be added
>>>      later]
>>> Reviewed-by: Sebastian Ott <sebott@redhat.com>
>>> Signed-off-by: Eric Auger <eric.auger@redhat.com>
>>> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
>>> ---
>>>  scripts/gen-cpu-sysregs-header.awk    | 35 +++++++++++++++++++++++++++
>>>  scripts/update-aarch64-sysreg-code.sh | 25 +++++++++++++++++++
>>>  2 files changed, 60 insertions(+)
>>>  create mode 100755 scripts/gen-cpu-sysregs-header.awk
>>>  create mode 100755 scripts/update-aarch64-sysreg-code.sh
>>>
>>> diff --git a/scripts/gen-cpu-sysregs-header.awk b/scripts/gen-cpu-sysregs-header.awk
>>> new file mode 100755
>>> index 000000000000..b6b207e3c0fd
>>> --- /dev/null
>>> +++ b/scripts/gen-cpu-sysregs-header.awk
>>> @@ -0,0 +1,35 @@
>>> +#!/bin/awk -f
>>> +# SPDX-License-Identifier: GPL-2.0
>> Invalid license name here - hopefully checkpatch.pl is warning
>> about this.
> It might not check .awk scripts?
>
>> Same issue as in the other sysreg script in the host CPU model
>> series.
>>
>>
>>> diff --git a/scripts/update-aarch64-sysreg-code.sh b/scripts/update-aarch64-sysreg-code.sh
>>> new file mode 100755
>>> index 000000000000..721f41a9a516
>>> --- /dev/null
>>> +++ b/scripts/update-aarch64-sysreg-code.sh
>>> @@ -0,0 +1,25 @@
>>> +#!/bin/sh -e
>>> +#
>>> +# Update target/arm/cpu-sysregs.h
>>> +# from a linux source tree (arch/arm64/tools/sysreg)
>>> +#
>>> +# Copyright Red Hat, Inc. 2024
>>> +#
>>> +# Authors:
>>> +#          Eric Auger <eric.auger@redhat.com>
>> Although its fairly short, this still deserves SPDX-License-Identifier
>> to be set.
> @Eric: do you agree on "GPL-2.0-or-later"?

Yes I agree

Eric
>