aboutsummaryrefslogtreecommitdiffstats
path: root/fdio.infra.ansible/vpp_device.yaml
AgeCommit message (Collapse)AuthorFilesLines
2021-12-21ansible: add kernel pinning to vpp deviceJuraj Linkeš1-0/+2
Change-Id: Ife26766e5f92ab95b537b39c25202fec6be27db3 Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
2021-08-18Infra: Ansible yaml lint cleanup @media only all and (prefers-color-scheme: dark) { .highlight .hll { background-color: #49483e } .highlight .c { color: #75715e } /* Comment */ .highlight .err { color: #960050; background-color: #1e0010 } /* Error */ .highlight .k { color: #66d9ef } /* Keyword */ .highlight .l { color: #ae81ff } /* Literal */ .highlight .n { color: #f8f8f2 } /* Name */ .highlight .o { color: #f92672 } /* Operator */ .highlight .p { color: #f8f8f2 } /* Punctuation */ .highlight .ch { color: #75715e } /* Comment.Hashbang */ .highlight .cm { color: #75715e } /* Comment.Multiline */ .highlight .cp { color: #75715e } /* Comment.Preproc */ .highlight .cpf { color: #75715e } /* Comment.PreprocFile */ .highlight .c1 { color: #75715e } /* Comment.Single */ .highlight .cs { color: #75715e } /* Comment.Special */ .highlight .gd { color: #f92672 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gi { color: #a6e22e } /* Generic.Inserted */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #75715e } /* Generic.Subheading */ .highlight .kc { color: #66d9ef } /* Keyword.Constant */ .highlight .kd { color: #66d9ef } /* Keyword.Declaration */ .highlight .kn { color: #f92672 } /* Keyword.Namespace */ .highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ .highlight .kr { color: #66d9ef } /* Keyword.Reserved */ .highlight .kt { color: #66d9ef } /* Keyword.Type */ .highlight .ld { color: #e6db74 } /* Literal.Date */ .highlight .m { color: #ae81ff } /* Literal.Number */ .highlight .s { color: #e6db74 } /* Literal.String */ .highlight .na { color: #a6e22e } /* Name.Attribute */ .highlight .nb { color: #f8f8f2 } /* Name.Builtin */ .highlight .nc { color: #a6e22e } /* Name.Class */ .highlight .no { color: #66d9ef } /* Name.Constant */ .highlight .nd { color: #a6e22e } /* Name.Decorator */ .highlight .ni { color: #f8f8f2 } /* Name.Entity */ .highlight .ne { color: #a6e22e } /* Name.Exception */ .highlight .nf { color: #a6e22e } /* Name.Function */ .highlight .nl { color: #f8f8f2 } /* Name.Label */ .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ .highlight .nx { color: #a6e22e } /* Name.Other */ .highlight .py { color: #f8f8f2 } /* Name.Property */ .highlight .nt { color: #f92672 } /* Name.Tag */ .highlight .nv { color: #f8f8f2 } /* Name.Variable */ .highlight .ow { color: #f92672 } /* Operator.Word */ .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ .highlight .mb { color: #ae81ff } /* Literal.Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc00
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
/*
 * mapfile_tool.c - skeleton vpp engine plug-in
 *
 * Copyright (c) 2018 Cisco Systems and/or affiliates
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include <stdio.h>
#include <vppinfra/format.h>
#include <vppinfra/error.h>
#include <vppinfra/unix.h>

typedef struct
{
  u8 *ifile;
  u8 *ofile;
  u8 *mapfile;
  u8 *table;
  FILE *ofp;
} mapfile_tool_main_t;

mapfile_tool_main_t mapfile_tool_main;

static char *top_boilerplate =
  "typedef struct {\n"
  "  u8 model;\n"
  "  u8 stepping;\n"
  "  u8 has_stepping;\n"
  "  char *filename;\n"
  "} file_by_model_and_stepping_t;\n\n"
  "static const file_by_model_and_stepping_t fms_table [] =\n"
  "{\n" " /* model, stepping, stepping valid, file */\n";

static char *bottom_boilerplate = "};\n";

static void
print_chunk (mapfile_tool_main_t * mtm, char *chunk)
{
  fformat (mtm->ofp, "%s", chunk);
}

static int
parse_mapfile (mapfile_tool_main_t * mtm)
{
  u8 *cp = mtm->mapfile;
  int i;
  char model[3];
  u8 *stepping = 0;
  u8 *filename = 0;
  int has_stepping;

  /* Skip header line */
  while (*cp && *cp != '\n')
    cp++;

  if (*cp == 0)
    {
      fformat (stderr, "mapfile broken or empty\n");
      return 1;
    }
  /* skip newline */
  cp++;

  /* GenuineIntel-6-55-[01234],V1.12,/SKX/skylakex_uncore_v1.12.json,uncore */
  /*    skip 15     ^ */

  /* Across payload lines... */
  while (1)
    {
      if (*cp == 0)
	return 0;

      for (i = 0; i < 15; i++)
	{
	  if (*cp == 0)
	    {
	    bad:
	      fformat (stderr, "mapfile broken\n");
	      return 1;
	    }
	  cp++;
	}
      /* should point at model */
      model[0] = *cp++;
      model[1] = *cp++;
      model[2] = 0;
      vec_reset_length (stepping);
      /* Stepping significant? */
      if (*cp == '-')
	{
	  cp += 2;
	  while (*cp != ']')
	    {
	      vec_add1 (stepping, *cp);
	      cp++;
	    }
	  cp++;
	}
      /* Skip dirname */
      while (*cp != '/')
	cp++;
      cp++;
      while (*cp != '/')
	*cp++;
      cp++;
      vec_reset_length (filename);
      while (*cp != ',')
	{
	  vec_add1 (filename, *cp);
	  cp++;
	}

      cp++;
      /* We only want ",core" entries */
      if (memcmp (cp, "core", 4))
	{
	  while (*cp && *cp != '\n')
	    cp++;
	  if (*cp)
	    cp++;
	  continue;
	}

      /* Skip to start of next line */
      while (*cp && *cp != '\n')
	cp++;
      if (*cp)
	cp++;

      has_stepping = 1;

      if (vec_len (stepping) == 0)
	{
	  vec_add1 (stepping, '0');
	  has_stepping = 0;
	}

      for (i = 0; i < vec_len (stepping); i++)
	{
	  mtm->table =
	    format (mtm->table, "  { 0x%s, 0x%c, %d, \"%v\" },\n",
		    model, stepping[i], has_stepping, filename);
	}
    }

  /* NOTREACHED */
  return -11;
}

static int
mapfile_main (unformat_input_t * input, mapfile_tool_main_t * mtm)
{
  u8 *mapfile;
  int rv;
  clib_error_t *error;

  while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
    {
      if (unformat (input, "in %s", &mtm->ifile))
	;
      else if (unformat (input, "out %s", &mtm->ofile))
	;
      else
	{
	  fformat (stderr, "unknown input '%U'\n", format_unformat_error,
		   input);
	usage:
	  fformat (stderr, "usage: mapfile_tool in <ifile> out <ofile>\n");
	  return 1;
	}
    }

  if (mtm->ifile == 0)
    {
      fformat (stderr, "input file not specified\n");
      goto usage;
    }

  if (mtm->ofile == 0)
    mtm->ofile = format (0, "perfmon_version.c%c", 0);

  mtm->ofp = fopen ((char *) mtm->ofile, "w");
  if (mtm->ofp == NULL)
    {
      fformat (stderr, "Couldn't create '%s'\n", mtm->ofile);
      return 1;
    }

  error = unix_proc_file_contents ((char *) mtm->ifile, &mapfile);

  if (error)
    {
      clib_error_free (error);
      fformat (stderr, "Failed to read mapfile from %s", mtm->ifile);
      return 1;
    }

  mtm->mapfile = mapfile;

  rv = parse_mapfile (mtm);
  if (rv)
    return rv;

  print_chunk (mtm, top_boilerplate);
  print_chunk (mtm, (char *) mtm->table);
  print_chunk (mtm, bottom_boilerplate);
  return 0;
}

int
main (int argc, char *argv[])
{
  unformat_input_t input;
  mapfile_tool_main_t *mtm = &mapfile_tool_main;
  int r;

  clib_mem_init (0, 128 << 20);

  unformat_init_command_line (&input, argv);
  r = mapfile_main (&input, mtm);
  unformat_free (&input);
  return r;
}


/*
 * fd.io coding-style-patch-verification: ON
 *
 * Local Variables:
 * eval: (c-set-style "gnu")
 * End:
 */