[v3,0/7] Add interrupt-only mode to l3fwd-power
mbox series

Message ID cover.1592563994.git.anatoly.burakov@intel.com
Headers show
Series
  • Add interrupt-only mode to l3fwd-power
Related show

Message

Burakov, Anatoly June 19, 2020, 10:53 a.m. UTC
Since 20.05, l3fwd-power has become much more stringent about
whether it allows initialization without initializing the
librte_power library with it. This means that while previously
the app could have been used to test RX interrupts functionality
even if the app itself was in a half-working state, it is now
no longer possible to do so.

To address this use case, we're adding an interrupt-only mode
that does not rely on librte_power or telemetry. This enables
using l3fwd-power in environments where librte_power is not
expected to work (such as inside a VM or on non-IA
architectures). The RX/TX path is basically copy paste from
legacy RX/TX path but with librte_power bits taken out.

There seem to be two opposing schools of thought on whether we
should have more or less examples. This patchset goes in the
"less" direction where we add a new mode to an existing app,
rather than creating a new one like it could be argued it
deserves.

v3:
- Added log messages for autodetect
- Fixed wrong comment in patch 7

v2:
- Add API to probe support for a specific power env
- Add autodetection for the default mode
- Add ability to request legacy mode specifically
- Fix some code style issues

Anatoly Burakov (7):
  l3fwd-power: disable interrupts by default
  l3fwd-power: only allow supported power library envs
  l3fwd-power: code style and flow fixes
  l3fwd-power: add support for requesting legacy mode
  l3fwd-power: add interrupt-only mode
  power: add API to probe support for a specific env
  l3fwd-power: add auto-selection of default mode

 examples/l3fwd-power/main.c             | 292 ++++++++++++++++++++++--
 lib/librte_power/Makefile               |   1 +
 lib/librte_power/guest_channel.c        |  26 +++
 lib/librte_power/guest_channel.h        |  12 +
 lib/librte_power/meson.build            |   3 +-
 lib/librte_power/power_acpi_cpufreq.c   |   7 +
 lib/librte_power/power_acpi_cpufreq.h   |  10 +
 lib/librte_power/power_common.c         |  52 +++++
 lib/librte_power/power_common.h         |   3 +
 lib/librte_power/power_kvm_vm.c         |   5 +
 lib/librte_power/power_kvm_vm.h         |  10 +
 lib/librte_power/power_pstate_cpufreq.c |   7 +
 lib/librte_power/power_pstate_cpufreq.h |  10 +
 lib/librte_power/rte_power.c            |  17 ++
 lib/librte_power/rte_power.h            |  18 ++
 lib/librte_power/rte_power_version.map  |   1 +
 16 files changed, 454 insertions(+), 20 deletions(-)
 create mode 100644 lib/librte_power/power_common.c

Comments

Thomas Monjalon July 11, 2020, 11:35 a.m. UTC | #1
19/06/2020 12:53, Anatoly Burakov:
> Since 20.05, l3fwd-power has become much more stringent about
> whether it allows initialization without initializing the
> librte_power library with it. This means that while previously
> the app could have been used to test RX interrupts functionality
> even if the app itself was in a half-working state, it is now
> no longer possible to do so.
> 
> To address this use case, we're adding an interrupt-only mode
> that does not rely on librte_power or telemetry. This enables
> using l3fwd-power in environments where librte_power is not
> expected to work (such as inside a VM or on non-IA
> architectures). The RX/TX path is basically copy paste from
> legacy RX/TX path but with librte_power bits taken out.
> 
> There seem to be two opposing schools of thought on whether we
> should have more or less examples. This patchset goes in the
> "less" direction where we add a new mode to an existing app,
> rather than creating a new one like it could be argued it
> deserves.
> 
> v3:
> - Added log messages for autodetect
> - Fixed wrong comment in patch 7
> 
> v2:
> - Add API to probe support for a specific power env
> - Add autodetection for the default mode
> - Add ability to request legacy mode specifically
> - Fix some code style issues
> 
> Anatoly Burakov (7):
>   l3fwd-power: disable interrupts by default
>   l3fwd-power: only allow supported power library envs
>   l3fwd-power: code style and flow fixes
>   l3fwd-power: add support for requesting legacy mode
>   l3fwd-power: add interrupt-only mode
>   power: add API to probe support for a specific env
>   l3fwd-power: add auto-selection of default mode

Applied with following titles:
	examples/l3fwd-power: disable interrupts by default
	examples/l3fwd-power: allow only supported environments
	examples/l3fwd-power: fix style and control flow
	examples/l3fwd-power: add legacy mode option
	examples/l3fwd-power: add interrupt-only mode
	power: add environment capability probing
	examples/l3fwd-power: select default mode automatically