From 95971221361d45ddfe6d0feb8b595a8fac7492c8 Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Tue, 7 Nov 2023 10:32:18 +0000
Subject: [PATCH 01/17] wperf: bump release version to 3.2.1

---
 content/install-guides/wperf.md | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/content/install-guides/wperf.md b/content/install-guides/wperf.md
index 1d264acef..8908abb73 100644
--- a/content/install-guides/wperf.md
+++ b/content/install-guides/wperf.md
@@ -57,15 +57,15 @@ https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/releases
 To download directly from command prompt, use:
 
 ```console
-mkdir windowsperf-bin-3.2.0
-cd windowsperf-bin-3.2.0
-curl https://gitlab.com/api/v4/projects/40381146/packages/generic/windowsperf/3.2.0/windowsperf-bin-3.2.0.zip --output windowsperf-bin-3.2.0.zip
+mkdir windowsperf-bin-3.2.1
+cd windowsperf-bin-3.2.1
+curl https://gitlab.com/api/v4/projects/40381146/packages/generic/windowsperf/3.2.1/windowsperf-bin-3.2.1.zip --output windowsperf-bin-3.2.1.zip
 ```
 
 Unzip the package:
 
 ```console
-tar -xmf windowsperf-bin-3.2.0.zip
+tar -xmf windowsperf-bin-3.2.1.zip
 ```
 
 ## Install wperf driver
@@ -80,7 +80,7 @@ Open a `Windows Command Prompt` terminal with `Run as administrator` enabled.
 
 Navigate to the `windowsperf-bin-<version>` directory.
 ```command
-cd windowsperf-bin-3.2.0
+cd windowsperf-bin-3.2.1
 ```
 
 ### Install with devcon {#devcon}
@@ -133,11 +133,11 @@ cd ..
 wperf --version
 ```
 You should see output similar to:
-```output
+```console
 Component     Version  GitVer
 =========     =======  ======
-wperf         3.2.0    a947eed8
-wperf-driver  3.2.0    a947eed8
+wperf         3.2.1    c831cfc2
+wperf-driver  3.2.1    c831cfc2
 ```
 ## Further reading
 

From ee9e12e2c8ebfa0e491dee70fe2d43782a00e6d8 Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Tue, 7 Nov 2023 10:33:12 +0000
Subject: [PATCH 02/17] wperf: use 'console' block to avoid empty new lines in
 command line output

---
 content/install-guides/wperf.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/content/install-guides/wperf.md b/content/install-guides/wperf.md
index 8908abb73..5ccb7f2aa 100644
--- a/content/install-guides/wperf.md
+++ b/content/install-guides/wperf.md
@@ -93,7 +93,7 @@ devcon install wperf-driver.inf Root\WPERFDRIVER
 ```
 You will see output similar to:
 
-```output
+```console
 Device node created. Install is complete when drivers are installed...
 Updating drivers for Root\WPERFDRIVER from <path>\wperf-driver.inf.
 Drivers installed successfully.
@@ -111,7 +111,7 @@ cd wperf-driver
 wperf-devgen install
 ```
 You will see output similar to:
-```output
+```console
 Executing command: install.
 Install requested.
 Waiting for device creation...

From 3adfd4e06c2cdda465f85ac5d3d38787ea36411e Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Tue, 7 Nov 2023 10:45:22 +0000
Subject: [PATCH 03/17] wperf: add 'Uninstall wperf driver' section

---
 content/install-guides/wperf.md | 37 +++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/content/install-guides/wperf.md b/content/install-guides/wperf.md
index 5ccb7f2aa..446c154c5 100644
--- a/content/install-guides/wperf.md
+++ b/content/install-guides/wperf.md
@@ -139,6 +139,43 @@ Component     Version  GitVer
 wperf         3.2.1    c831cfc2
 wperf-driver  3.2.1    c831cfc2
 ```
+
+## Uninstall wperf driver
+
+You can uninstall (aka "remove") the kernel driver using either the Visual Studio [devcon](#devcon) utility or the supplied [installer](#devgen).
+
+{{% notice  Note%}}
+You must uninstall the driver as `Administrator`.
+{{% /notice %}}
+
+### Uninstall with devcon {#devcon}
+
+Below command removes the device from the device tree and deletes the device stack for the device. As a result of these actions, child devices are removed from the device tree and the drivers that support the device are unloaded. See [DevCon Remove](https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/devcon-remove) article for more details.
+
+```command
+devcon remove wperf-driver.inf Root\WPERFDRIVER
+```
+You should see output similar to:
+```console
+ROOT\SYSTEM\0001                                            : Removed
+1 device(s) were removed.
+```
+
+### Uninstall with wperf-devgen {#devgen}
+
+```command
+wperf-devgen uninstall
+```
+You should see output similar to:
+```console
+Executing command: uninstall.
+Uninstall requested.
+Waiting for device creation...
+Device uninstalled successfully.
+Trying to remove driver <path>\wperf-driver.inf.
+Driver removed successfully.
+```
+
 ## Further reading
 
 [Announcing WindowsPerf: Open-source performance analysis tool for Windows on Arm](https://community.arm.com/arm-community-blogs/b/infrastructure-solutions-blog/posts/announcing-windowsperf)

From 3909d62a9118012b217bbba78383f3413a5157bc Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Tue, 7 Nov 2023 12:06:45 +0000
Subject: [PATCH 04/17] wperf: add links to current WindowsPerf blogs

---
 .../laptops-and-desktops/windowsperf/_next-steps.md  | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/_next-steps.md b/content/learning-paths/laptops-and-desktops/windowsperf/_next-steps.md
index 891b638ee..ef9cff9ad 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/_next-steps.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/_next-steps.md
@@ -19,6 +19,18 @@ further_reading:
         title: Announcing WindowsPerf Open-source performance analysis tool for Windows on Arm
         link: https://community.arm.com/arm-community-blogs/b/infrastructure-solutions-blog/posts/announcing-windowsperf
         type: blog
+    - resource:
+        title: WindowsPerf release 2.4.0 introduces the first stable version of sampling model support
+        link: https://www.linaro.org/blog/windowsperf-release-2-4-0-introduces-the-first-stable-version-of-sampling-model-support/
+        type: blog
+    - resource:
+        title: WindowsPerf Release 2.5.1
+        link: https://www.linaro.org/blog/windowsperf-release-2-5-1/
+        type: blog
+    - resource:
+        title: WindowsPerf Release 3.0.0
+        link: https://www.linaro.org/blog/windowsperf-release-3-0-0/
+        type: blog
     - resource:
         title: Windows on Arm overview
         link: https://learn.microsoft.com/en-us/windows/arm/overview

From 45276ef535694acd66906342d46777c2f3810c8d Mon Sep 17 00:00:00 2001
From: pareenaverma <pareena.verma@arm.com>
Date: Tue, 7 Nov 2023 13:29:41 -0500
Subject: [PATCH 05/17] Updated wperf.md to revert to output where applicable

---
 content/install-guides/wperf.md | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/content/install-guides/wperf.md b/content/install-guides/wperf.md
index 446c154c5..3eb598b0e 100644
--- a/content/install-guides/wperf.md
+++ b/content/install-guides/wperf.md
@@ -93,7 +93,7 @@ devcon install wperf-driver.inf Root\WPERFDRIVER
 ```
 You will see output similar to:
 
-```console
+```output
 Device node created. Install is complete when drivers are installed...
 Updating drivers for Root\WPERFDRIVER from <path>\wperf-driver.inf.
 Drivers installed successfully.
@@ -111,7 +111,7 @@ cd wperf-driver
 wperf-devgen install
 ```
 You will see output similar to:
-```console
+```output
 Executing command: install.
 Install requested.
 Waiting for device creation...
@@ -133,7 +133,7 @@ cd ..
 wperf --version
 ```
 You should see output similar to:
-```console
+```output
 Component     Version  GitVer
 =========     =======  ======
 wperf         3.2.1    c831cfc2
@@ -156,7 +156,7 @@ Below command removes the device from the device tree and deletes the device sta
 devcon remove wperf-driver.inf Root\WPERFDRIVER
 ```
 You should see output similar to:
-```console
+```output
 ROOT\SYSTEM\0001                                            : Removed
 1 device(s) were removed.
 ```

From 7a3eb8ce81a320ebb75c4270ac7a80e10730466b Mon Sep 17 00:00:00 2001
From: RonanSynnottArm <Ronan.Synnott@arm.com>
Date: Wed, 8 Nov 2023 05:43:17 +0000
Subject: [PATCH 06/17] updates to flexnet install guide

---
 content/install-guides/license/flexnet.md | 41 ++++++++++++++++++++---
 1 file changed, 37 insertions(+), 4 deletions(-)

diff --git a/content/install-guides/license/flexnet.md b/content/install-guides/license/flexnet.md
index 4313cbed6..e81933bde 100644
--- a/content/install-guides/license/flexnet.md
+++ b/content/install-guides/license/flexnet.md
@@ -11,7 +11,9 @@ multi_install: false            # Set to true if first page of multi-page articl
 multitool_install_part: true    # Set to true if a sub-page of a multi-page article, else false
 layout: installtoolsall         # DO NOT MODIFY. Always true for tool install articles
 ---
-Older Arm products do not support UBL licenses. These will be enabled with FlexNet Publisher floating licenses. You will be supplied with license key(s) to generate your license(s).
+Older Arm products do not support user-based licenses. These will be enabled with FlexNet Publisher floating licenses.
+
+You will be supplied with license key(s) to generate such license(s).
 
 ## License server set up
 
@@ -55,11 +57,42 @@ export ARMLMD_LICENSE_FILE=port@server
 
 The license can also be activated in the various Arm tool IDEs.
 
-For example [Arm Development Studio](https://developer.arm.com/Tools%20and%20Software/Arm%20Development%20Studio)), via `Help` > `Arm License Manager`. You will need to specify the appropriate Development Studio Edition as the `Active Product`.
+For example [Arm Development Studio](https://developer.arm.com/Tools%20and%20Software/Arm%20Development%20Studio)), via `Help` > `Arm License Manager`.
+
+If `ARMLMD_LICENSE_FILE` is not set, use `Add` > `Add product license`, and specify `port` and `server` information for your license server.
+
+Arm Development Studio will also ask to specify the appropriate [Edition](https://developer.arm.com/Tools%20and%20Software/Arm%20Development%20Studio#Editions) as the `Active Product`.
 
 ### Verify setup
 
-To verify that the license is set up correctly, execute an Arm tool that does not support user-based licensing, for example:
+To verify that the license is set up correctly, set the following environment variable:
+
+#### Windows
+```console
+set FLEXLM_DIAGNOSTICS=3
+```
+#### Linux
+```console
+export FLEXLM_DIAGNOSTICS=3
+```
+
+and execute an appropriate Arm tool, for example `Arm Compiler for Embedded`:
 ```command
-armcc --vsn
+armclang --version
 ```
+
+Observe the output, which will be similar to:
+```output
+Checkout succeeded: ds_suite_rowan/04C6 0E2A CDA4 6344
+        License file: port@server
+        License Server: port@server
+Checkout succeeded: ds_compiler_rowan/141D C968 2E7F 4187
+        License file: port@server
+        License Server: port@server
+Product: Arm Development Studio Gold Edition 2023.0
+Component: Arm Compiler for Embedded 6.20
+```
+
+{{% notice Note %}}
+Unset the `FLEXLM_DIAGNOSTICS` environment variable afterwards, as this will impact the tools performance.
+{{% /notice %}}

From 979f4219da58ef815c185e04347f2bf1878b7bb8 Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Wed, 8 Nov 2023 10:01:08 +0000
Subject: [PATCH 07/17] wperf: fix misleading intro to WindowsPerf

---
 .../windowsperf/windowsperf.md                  | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
index 6b9cdeb30..c4f7a427f 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
@@ -3,10 +3,25 @@ layout: learningpathall
 title: WindowsPerf
 weight: 2
 ---
-[WindowsPerf](https://gitlab.com/Linaro/WindowsPerf/windowsperf) is a port of the popular Linux [perf](https://perf.wiki.kernel.org) tool for performance analysis.
+
+# Overview
+
+[WindowsPerf](https://gitlab.com/Linaro/WindowsPerf/windowsperf) is (Linux [perf]([perf](https://perf.wiki.kernel.org)) inspired) Windows on Arm performance profiling tool. Profiling is based on ARM64 PMU and its hardware counters. WindowsPerf already supports the counting model for obtaining aggregate counts of occurrences of special events, and sampling model for determining the frequencies of event occurrences produced by program locations at the function, basic block, and/or instruction levels.
 
 Learn more in this [blog](https://community.arm.com/arm-community-blogs/b/infrastructure-solutions-blog/posts/announcing-windowsperf) announcing the first release.
 
+## WindowsPerf architecture
+
+`WindowsPerf` is composed of two main components:
+- [wperf](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/main/wperf) a command line interface (CLI) sometimes refereed as "user-space app" and
+- [wperf-driver](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/main/wperf-driver). `wperf-driver` is a (signed) Kernel-Mode Driver Framework (KMDF) driver.
+
+## WindowsPerf releases
+
+You can find all binary releases of `WindowsPerf` [here](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/releases).
+
+# Installation
+
 For installation instructions see the [install guide](/install-guides/wperf).
 
 ## Using WindowsPerf

From d6ceacddbe817201cc4ffc39b4a69a3e8b42dab0 Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Tue, 7 Nov 2023 11:06:49 +0000
Subject: [PATCH 08/17] wperf: s/output/console/ to avoid extra empty new lines
 in console text

---
 .../laptops-and-desktops/windowsperf/windowsperf.md             | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
index 6b9cdeb30..5d82d0c17 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
@@ -27,7 +27,7 @@ wperf list
 
 The output should be similar to:
 
-```output
+```console
 List of pre-defined events (to be used in -e)
 
         Alias Name              Raw Index  Event Type

From 6abed7144db9ec111157d2ea940d5e062a915cd6 Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Tue, 7 Nov 2023 11:09:59 +0000
Subject: [PATCH 09/17] wperf: update depricated example with -d command line
 option

---
 .../windowsperf/windowsperf.md                | 21 ++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
index 5d82d0c17..e6c16162f 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
@@ -50,20 +50,27 @@ List of supported metrics (to be used in -m)
 
 Specify the `event` to profile with `-e`. Groups of events, known as `metrics` can be specified with `-m`.
 
-For example, generate a report for Core 0 (`-c 0`) for two seconds (`-d 2`) with:
+For example, generate a report for CPU core 0 (`-c 0`) for two seconds (`sleep 2`) with:
 ```command
-wperf stat -e cpu_cycles -m icache -c 0 -d 2
+wperf stat -e cpu_cycles -m icache -c 0 sleep 2
 ```
 This will output a report similar to:
 ```output
+counting ... done
+
+Performance counter stats for core 0, no multiplexing, kernel mode excluded, on Arm Limited core implementation:
+note: 'e' - normal event, 'gN' - grouped event with group number N, metric name will be appended if 'e' or 'g' comes from it
+
         counter value  event name        event idx  event note
         =============  ==========        =========  ==========
-          649,973,325  cycle             fixed      e
-          277,788,076  l1i_cache         0x14       g0,icache
-            7,415,699  l1i_cache_refill  0x01       g0,icache
+            7,408,075  cycle             fixed      e
+            2,271,166  l1i_cache         0x14       g0,icache
+              126,875  l1i_cache_refill  0x01       g0,icache
                     0  l2i_cache         0x27       g0,icache
                     0  l2i_cache_refill  0x28       g0,icache
-          813,129,394  inst_retired      0x08       g0,icache
-          649,973,325  cpu_cycles        0x11       e
+            6,247,674  inst_retired      0x08       g0,icache
+            7,408,075  cpu_cycles        0x11       e
+
+               2.281 seconds time elapsed
 ```
 Example use cases are provided in the WindowsPerf [documentation](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/blob/main/wperf/README.md#counting-model).

From eb77df8e4f3d904c90ee4ff06cc8b02871b4c379 Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Tue, 7 Nov 2023 11:21:58 +0000
Subject: [PATCH 10/17] wperf: add 'Obtain information about wperf
 configuration' chapter

---
 .../windowsperf/windowsperf.md                | 49 ++++++++++++++++++-
 1 file changed, 48 insertions(+), 1 deletion(-)

diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
index e6c16162f..cc22e2091 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
@@ -46,6 +46,47 @@ List of supported metrics (to be used in -m)
 ...
 ```
 
+## Obtain information about wperf configuration
+
+Command line option `test` prints on screen various `wperf` configuration settings:
+
+```command
+wperf test
+```
+
+```console
+        Test Name                                           Result
+        =========                                           ======
+        request.ioctl_events [EVT_CORE]                     False
+        request.ioctl_events [EVT_DSU]                      False
+        request.ioctl_events [EVT_DMC_CLK/EVT_DMC_CLKDIV2]  False
+        pmu_device.vendor_name                              Arm Limited
+        pmu_device.product_name                             neoverse-n1
+        pmu_device.product_name(extended)                   Neoverse N1 (neoverse-n1), armv8.1, pmu_v3
+        pmu_device.product []                               armv8-a,armv9-a,neoverse-n1,neoverse-n2,neoverse-n2-r0p0,neoverse-n2-r0p1,neoverse-n2-r0p3,neoverse-v1
+        pmu_device.m_product_alias                          (neoverse-n2-r0p0:neoverse-n2),(neoverse-n2-r0p1:neoverse-n2)
+        pmu_device.events_query(events) [EVT_CORE]          110
+        pmu_device.events_query(events) [EVT_DSU]           9
+        pmu_device.events_query(events) [EVT_DMC_CLK]       3
+        pmu_device.events_query(events) [EVT_DMC_CLKDIV2]   26
+        PMU_CTL_QUERY_HW_CFG [arch_id]                      0x000f
+        PMU_CTL_QUERY_HW_CFG [core_num]                     0x0050
+        PMU_CTL_QUERY_HW_CFG [fpc_num]                      0x0001
+        PMU_CTL_QUERY_HW_CFG [gpc_num]                      0x0006
+        PMU_CTL_QUERY_HW_CFG [total_gpc_num]                0x0006
+        PMU_CTL_QUERY_HW_CFG [part_id]                      0x0d0c
+        PMU_CTL_QUERY_HW_CFG [pmu_ver]                      0x0004
+        PMU_CTL_QUERY_HW_CFG [rev_id]                       0x0001
+        PMU_CTL_QUERY_HW_CFG [variant_id]                   0x0003
+        PMU_CTL_QUERY_HW_CFG [vendor_id]                    0x0041
+        PMU_CTL_QUERY_HW_CFG [midr_value]                   0x000000000000413fd0c1
+...
+```
+
+{{% notice  Note%}}
+You can output `wperf test` command in JSON format. Use `--json` command line option to enable JSON output.
+{{% /notice %}}
+
 ## Generate sample profile
 
 Specify the `event` to profile with `-e`. Groups of events, known as `metrics` can be specified with `-m`.
@@ -55,7 +96,7 @@ For example, generate a report for CPU core 0 (`-c 0`) for two seconds (`sleep 2
 wperf stat -e cpu_cycles -m icache -c 0 sleep 2
 ```
 This will output a report similar to:
-```output
+```console
 counting ... done
 
 Performance counter stats for core 0, no multiplexing, kernel mode excluded, on Arm Limited core implementation:
@@ -73,4 +114,10 @@ note: 'e' - normal event, 'gN' - grouped event with group number N, metric name
 
                2.281 seconds time elapsed
 ```
+
+{{% notice  Note%}}
+You can output `wperf stat` command in JSON format. Use `--json` command line option to enable JSON output.
+{{% /notice %}}
+
+
 Example use cases are provided in the WindowsPerf [documentation](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/blob/main/wperf/README.md#counting-model).

From 7a60d6df0e4b6b94daa8668dfafcafca3530605d Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Tue, 7 Nov 2023 11:24:07 +0000
Subject: [PATCH 11/17] wperf: add note to list command

---
 .../laptops-and-desktops/windowsperf/windowsperf.md           | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
index cc22e2091..0aad95a1c 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
@@ -46,6 +46,10 @@ List of supported metrics (to be used in -m)
 ...
 ```
 
+{{% notice  Note%}}
+You can extend `wperf list` command output with additional information like event and metrics description with `-v` command line option.
+{{% /notice %}}
+
 ## Obtain information about wperf configuration
 
 Command line option `test` prints on screen various `wperf` configuration settings:

From b92025a05d8c9077c2c5d783b2c94b0a70c65bdc Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Tue, 7 Nov 2023 11:30:00 +0000
Subject: [PATCH 12/17] wperf: add JSON format review question.

---
 .../laptops-and-desktops/windowsperf/_review.md       | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/_review.md b/content/learning-paths/laptops-and-desktops/windowsperf/_review.md
index 520f5349f..0c7053c5b 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/_review.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/_review.md
@@ -31,6 +31,17 @@ review:
         explanation: >
             Use `-c` to specify the processor(s) in the system you wish to profile.
 
+    - questions:
+        question: >
+            WindowsPerf can output data in JSON format with `--json` command line option.
+        answers:
+            - "True"
+            - "False"
+        correct_answer: 1
+        explanation: >
+            Some `wperf` commands such as `list`, `test` or `stat` (and few more!) can output data in JSON format.
+
+
 # ================================================================================
 #       FIXED, DO NOT MODIFY
 # ================================================================================

From b129a5ed459d4993b2a0112590b0ab6d0d5bda08 Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Wed, 8 Nov 2023 10:43:36 +0000
Subject: [PATCH 13/17] Revert "wperf: s/output/console/ to avoid extra empty
 new lines in console text"

This reverts commit d6ceacddbe817201cc4ffc39b4a69a3e8b42dab0.
---
 .../laptops-and-desktops/windowsperf/windowsperf.md             | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
index 0aad95a1c..cb90c3369 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
@@ -27,7 +27,7 @@ wperf list
 
 The output should be similar to:
 
-```console
+```output
 List of pre-defined events (to be used in -e)
 
         Alias Name              Raw Index  Event Type

From 2997d9b72f423a8c1eb575a37704e9bc3519843e Mon Sep 17 00:00:00 2001
From: Przemyslaw Wirkus <przemyslaw.wirkus@linaro.org>
Date: Wed, 8 Nov 2023 10:47:48 +0000
Subject: [PATCH 14/17] wperf: revert to using ouptput block

---
 .../laptops-and-desktops/windowsperf/windowsperf.md           | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
index cb90c3369..62c25554c 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
@@ -58,7 +58,7 @@ Command line option `test` prints on screen various `wperf` configuration settin
 wperf test
 ```
 
-```console
+```output
         Test Name                                           Result
         =========                                           ======
         request.ioctl_events [EVT_CORE]                     False
@@ -100,7 +100,7 @@ For example, generate a report for CPU core 0 (`-c 0`) for two seconds (`sleep 2
 wperf stat -e cpu_cycles -m icache -c 0 sleep 2
 ```
 This will output a report similar to:
-```console
+```output
 counting ... done
 
 Performance counter stats for core 0, no multiplexing, kernel mode excluded, on Arm Limited core implementation:

From 8bcb237bc81d44a168c09a99a45475366bcbdb58 Mon Sep 17 00:00:00 2001
From: pareenaverma <pareena.verma@arm.com>
Date: Wed, 8 Nov 2023 09:00:38 -0500
Subject: [PATCH 15/17] Update windowsperf.md

---
 .../laptops-and-desktops/windowsperf/windowsperf.md           | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
index c4f7a427f..15b754568 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
@@ -6,14 +6,14 @@ weight: 2
 
 # Overview
 
-[WindowsPerf](https://gitlab.com/Linaro/WindowsPerf/windowsperf) is (Linux [perf]([perf](https://perf.wiki.kernel.org)) inspired) Windows on Arm performance profiling tool. Profiling is based on ARM64 PMU and its hardware counters. WindowsPerf already supports the counting model for obtaining aggregate counts of occurrences of special events, and sampling model for determining the frequencies of event occurrences produced by program locations at the function, basic block, and/or instruction levels.
+[WindowsPerf](https://gitlab.com/Linaro/WindowsPerf/windowsperf) is (Linux [perf]([perf](https://perf.wiki.kernel.org)) inspired) Windows on Arm performance profiling tool. Profiling is based on ARM64 PMU and its hardware counters. WindowsPerf supports the counting model for obtaining aggregate counts of occurrences of special events, and sampling model for determining the frequencies of event occurrences produced by program locations at the function, basic block, and/or instruction levels.
 
 Learn more in this [blog](https://community.arm.com/arm-community-blogs/b/infrastructure-solutions-blog/posts/announcing-windowsperf) announcing the first release.
 
 ## WindowsPerf architecture
 
 `WindowsPerf` is composed of two main components:
-- [wperf](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/main/wperf) a command line interface (CLI) sometimes refereed as "user-space app" and
+- [wperf](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/main/wperf) a command line interface (CLI) sometimes referred as "user-space app" and
 - [wperf-driver](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/main/wperf-driver). `wperf-driver` is a (signed) Kernel-Mode Driver Framework (KMDF) driver.
 
 ## WindowsPerf releases

From b09dcdb9ec41627c915facb92a1dc296305bafc8 Mon Sep 17 00:00:00 2001
From: pareenaverma <pareena.verma@arm.com>
Date: Wed, 8 Nov 2023 09:06:28 -0500
Subject: [PATCH 16/17] Update _review.md

---
 .../learning-paths/laptops-and-desktops/windowsperf/_review.md  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/_review.md b/content/learning-paths/laptops-and-desktops/windowsperf/_review.md
index 0c7053c5b..1e2c8e867 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/_review.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/_review.md
@@ -39,7 +39,7 @@ review:
             - "False"
         correct_answer: 1
         explanation: >
-            Some `wperf` commands such as `list`, `test` or `stat` (and few more!) can output data in JSON format.
+            Some `wperf` commands such as `list`, `test` or `stat` can output data in JSON format.
 
 
 # ================================================================================

From 5545e4552f10c31929e83135aea4f733cc68ccca Mon Sep 17 00:00:00 2001
From: pareenaverma <pareena.verma@arm.com>
Date: Wed, 8 Nov 2023 14:38:18 +0000
Subject: [PATCH 17/17] Moved restrict LP to be cross-platform in the
 appropriate categories

---
 .wordlist.txt                                              | 5 ++++-
 .../restrict-keyword-c99/_index.md                         | 7 ++++++-
 .../restrict-keyword-c99/_next-steps.md                    | 4 ++--
 .../restrict-keyword-c99/_review.md                        | 0
 .../restrict-keyword-c99/restrict-example-sve2.md          | 0
 .../restrict-keyword-c99/what-is-restrict.md               | 0
 .../restrict-keyword-c99/when-to-use-restrict.md           | 0
 .../laptops-and-desktops/windowsperf/windowsperf.md        | 2 +-
 8 files changed, 13 insertions(+), 5 deletions(-)
 rename content/learning-paths/{embedded-systems => cross-platform}/restrict-keyword-c99/_index.md (89%)
 rename content/learning-paths/{embedded-systems => cross-platform}/restrict-keyword-c99/_next-steps.md (80%)
 rename content/learning-paths/{embedded-systems => cross-platform}/restrict-keyword-c99/_review.md (100%)
 rename content/learning-paths/{embedded-systems => cross-platform}/restrict-keyword-c99/restrict-example-sve2.md (100%)
 rename content/learning-paths/{embedded-systems => cross-platform}/restrict-keyword-c99/what-is-restrict.md (100%)
 rename content/learning-paths/{embedded-systems => cross-platform}/restrict-keyword-c99/when-to-use-restrict.md (100%)

diff --git a/.wordlist.txt b/.wordlist.txt
index e0aa9c790..5eea79e6d 100644
--- a/.wordlist.txt
+++ b/.wordlist.txt
@@ -1648,4 +1648,7 @@ prepend
 initialise
 ptr
 LLSoftSecBook
-nodeSelector
\ No newline at end of file
+nodeSelector
+KMDF
+DevCon
+
diff --git a/content/learning-paths/embedded-systems/restrict-keyword-c99/_index.md b/content/learning-paths/cross-platform/restrict-keyword-c99/_index.md
similarity index 89%
rename from content/learning-paths/embedded-systems/restrict-keyword-c99/_index.md
rename to content/learning-paths/cross-platform/restrict-keyword-c99/_index.md
index e52d14a9d..438f61ded 100644
--- a/content/learning-paths/embedded-systems/restrict-keyword-c99/_index.md
+++ b/content/learning-paths/cross-platform/restrict-keyword-c99/_index.md
@@ -27,7 +27,12 @@ tools_software_languages:
     - Coding
 operatingsystems:
     - Linux
-
+shared_path: true
+shared_between:
+    - laptops-and-desktops
+    - servers-and-cloud-computing
+    - smartphones-and-mobile
+   
 
 ### FIXED, DO NOT MODIFY
 # ================================================================================
diff --git a/content/learning-paths/embedded-systems/restrict-keyword-c99/_next-steps.md b/content/learning-paths/cross-platform/restrict-keyword-c99/_next-steps.md
similarity index 80%
rename from content/learning-paths/embedded-systems/restrict-keyword-c99/_next-steps.md
rename to content/learning-paths/cross-platform/restrict-keyword-c99/_next-steps.md
index 16c3acfb4..365ebaedf 100644
--- a/content/learning-paths/embedded-systems/restrict-keyword-c99/_next-steps.md
+++ b/content/learning-paths/cross-platform/restrict-keyword-c99/_next-steps.md
@@ -1,7 +1,7 @@
 ---
-next_step_guidance: You should now be able to test the `restrict` keyword in your own code. Why not explore these other embedded software learning paths.
+next_step_guidance: You should now be able to test the `restrict` keyword in your own code. We recommend exploring the learning path on porting your code to Arm Scalable Vector Extensions as a next step.
 
-recommended_path: /learning-paths/embedded-systems/
+recommended_path: /learning-paths/servers-and-cloud-computing/sve/
 
 further_reading:
     - resource:
diff --git a/content/learning-paths/embedded-systems/restrict-keyword-c99/_review.md b/content/learning-paths/cross-platform/restrict-keyword-c99/_review.md
similarity index 100%
rename from content/learning-paths/embedded-systems/restrict-keyword-c99/_review.md
rename to content/learning-paths/cross-platform/restrict-keyword-c99/_review.md
diff --git a/content/learning-paths/embedded-systems/restrict-keyword-c99/restrict-example-sve2.md b/content/learning-paths/cross-platform/restrict-keyword-c99/restrict-example-sve2.md
similarity index 100%
rename from content/learning-paths/embedded-systems/restrict-keyword-c99/restrict-example-sve2.md
rename to content/learning-paths/cross-platform/restrict-keyword-c99/restrict-example-sve2.md
diff --git a/content/learning-paths/embedded-systems/restrict-keyword-c99/what-is-restrict.md b/content/learning-paths/cross-platform/restrict-keyword-c99/what-is-restrict.md
similarity index 100%
rename from content/learning-paths/embedded-systems/restrict-keyword-c99/what-is-restrict.md
rename to content/learning-paths/cross-platform/restrict-keyword-c99/what-is-restrict.md
diff --git a/content/learning-paths/embedded-systems/restrict-keyword-c99/when-to-use-restrict.md b/content/learning-paths/cross-platform/restrict-keyword-c99/when-to-use-restrict.md
similarity index 100%
rename from content/learning-paths/embedded-systems/restrict-keyword-c99/when-to-use-restrict.md
rename to content/learning-paths/cross-platform/restrict-keyword-c99/when-to-use-restrict.md
diff --git a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
index 240087ec5..f1aafd09a 100644
--- a/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
+++ b/content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md
@@ -14,7 +14,7 @@ Learn more in this [blog](https://community.arm.com/arm-community-blogs/b/infras
 
 `WindowsPerf` is composed of two main components:
 - [wperf](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/main/wperf) a command line interface (CLI) sometimes referred as "user-space app" and
-- [wperf-driver](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/main/wperf-driver). `wperf-driver` is a (signed) Kernel-Mode Driver Framework (KMDF) driver.
+- [wperf-driver](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/main/wperf-driver) a (signed) Kernel-Mode Driver Framework (KMDF) driver.
 
 ## WindowsPerf releases