All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: peter.maydell@linaro.org
Cc: "Alexandre Iooss" <erdnaxe@crans.org>,
	"Mahmoud Mandour" <ma.mandourr@gmail.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	qemu-devel@nongnu.org
Subject: [PULL v5 41/44] plugins/cache: Enable cache parameterization
Date: Wed, 14 Jul 2021 16:00:33 +0100	[thread overview]
Message-ID: <20210714150036.21060-42-alex.bennee@linaro.org> (raw)
In-Reply-To: <20210714150036.21060-1-alex.bennee@linaro.org>

From: Mahmoud Mandour <ma.mandourr@gmail.com>

Enabled configuring both icache and dcache parameters using plugin
parameters.

Signed-off-by: Mahmoud Mandour <ma.mandourr@gmail.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20210623125458.450462-3-ma.mandourr@gmail.com>
Message-Id: <20210709143005.1554-38-alex.bennee@linaro.org>

diff --git a/contrib/plugins/cache.c b/contrib/plugins/cache.c
index e9955cdc3a..b550ef31b0 100644
--- a/contrib/plugins/cache.c
+++ b/contrib/plugins/cache.c
@@ -99,8 +99,28 @@ static inline uint64_t extract_set(Cache *cache, uint64_t addr)
     return (addr & cache->set_mask) >> cache->blksize_shift;
 }
 
+static const char *cache_config_error(int blksize, int assoc, int cachesize)
+{
+    if (cachesize % blksize != 0) {
+        return "cache size must be divisible by block size";
+    } else if (cachesize % (blksize * assoc) != 0) {
+        return "cache size must be divisible by set size (assoc * block size)";
+    } else {
+        return NULL;
+    }
+}
+
+static bool bad_cache_params(int blksize, int assoc, int cachesize)
+{
+    return (cachesize % blksize) != 0 || (cachesize % (blksize * assoc) != 0);
+}
+
 static Cache *cache_init(int blksize, int assoc, int cachesize)
 {
+    if (bad_cache_params(blksize, assoc, cachesize)) {
+        return NULL;
+    }
+
     Cache *cache;
     int i;
     uint64_t blk_mask;
@@ -397,7 +417,19 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
 
     for (i = 0; i < argc; i++) {
         char *opt = argv[i];
-        if (g_str_has_prefix(opt, "limit=")) {
+        if (g_str_has_prefix(opt, "iblksize=")) {
+            iblksize = g_ascii_strtoll(opt + 9, NULL, 10);
+        } else if (g_str_has_prefix(opt, "iassoc=")) {
+            iassoc = g_ascii_strtoll(opt + 7, NULL, 10);
+        } else if (g_str_has_prefix(opt, "icachesize=")) {
+            icachesize = g_ascii_strtoll(opt + 11, NULL, 10);
+        } else if (g_str_has_prefix(opt, "dblksize=")) {
+            dblksize = g_ascii_strtoll(opt + 9, NULL, 10);
+        } else if (g_str_has_prefix(opt, "dassoc=")) {
+            dassoc = g_ascii_strtoll(opt + 7, NULL, 10);
+        } else if (g_str_has_prefix(opt, "dcachesize=")) {
+            dcachesize = g_ascii_strtoll(opt + 11, NULL, 10);
+        } else if (g_str_has_prefix(opt, "limit=")) {
             limit = g_ascii_strtoll(opt + 6, NULL, 10);
         } else {
             fprintf(stderr, "option parsing failed: %s\n", opt);
@@ -406,7 +438,20 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
     }
 
     dcache = cache_init(dblksize, dassoc, dcachesize);
+    if (!dcache) {
+        const char *err = cache_config_error(dblksize, dassoc, dcachesize);
+        fprintf(stderr, "dcache cannot be constructed from given parameters\n");
+        fprintf(stderr, "%s\n", err);
+        return -1;
+    }
+
     icache = cache_init(iblksize, iassoc, icachesize);
+    if (!icache) {
+        const char *err = cache_config_error(iblksize, iassoc, icachesize);
+        fprintf(stderr, "icache cannot be constructed from given parameters\n");
+        fprintf(stderr, "%s\n", err);
+        return -1;
+    }
 
     rng = g_rand_new();
 
-- 
2.20.1



  parent reply	other threads:[~2021-07-14 15:22 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-14 14:59 [PULL v5 00/44] testing, build and plugin updates Alex Bennée
2021-07-14 14:59 ` [PULL v5 01/44] Jobs based on custom runners: documentation and configuration placeholder Alex Bennée
2021-07-14 14:59 ` [PULL v5 02/44] Jobs based on custom runners: build environment docs and playbook Alex Bennée
2021-07-14 14:59 ` [PULL v5 03/44] Jobs based on custom runners: docs and gitlab-runner setup playbook Alex Bennée
2021-07-14 14:59 ` [PULL v5 04/44] Jobs based on custom runners: add job definitions for QEMU's machines Alex Bennée
2021-07-14 14:59 ` [PULL v5 05/44] tests/tcg: also disable the signals test for plugins Alex Bennée
2021-07-14 14:59 ` [PULL v5 06/44] meson: fix condition for io_uring stubs Alex Bennée
2021-07-14 14:59 ` [PULL v5 07/44] disable modular TCG on Darwin Alex Bennée
2021-07-14 15:00 ` [PULL v5 08/44] build: validate that system capstone works before using it Alex Bennée
2021-07-14 15:00 ` [PULL v5 09/44] gitlab: support for FreeBSD 12, 13 and macOS 11 via cirrus-run Alex Bennée
2021-07-14 15:00 ` [PULL v5 10/44] cirrus: delete FreeBSD and macOS jobs Alex Bennée
2021-07-14 15:00 ` [PULL v5 11/44] hw/usb/ccid: remove references to NSS Alex Bennée
2021-07-14 15:00 ` [PULL v5 12/44] tests/docker: don't use BUILDKIT in GitLab either Alex Bennée
2021-07-14 15:00 ` [PULL v5 13/44] tests/docker: use project specific container registries Alex Bennée
2021-07-14 15:00 ` [PULL v5 14/44] tests/docker: use explicit docker.io registry Alex Bennée
2021-07-14 15:00 ` [PULL v5 15/44] tests/docker: remove FEATURES env var from templates Alex Bennée
2021-07-14 15:00 ` [PULL v5 16/44] tests/docker: fix sorting in package lists Alex Bennée
2021-07-14 15:00 ` [PULL v5 17/44] tests/docker: fix mistakes in centos " Alex Bennée
2021-07-14 15:00 ` [PULL v5 18/44] tests/docker: fix mistakes in fedora package list Alex Bennée
2021-07-14 15:00 ` [PULL v5 19/44] tests/docker: fix mistakes in ubuntu package lists Alex Bennée
2021-07-14 15:00 ` [PULL v5 20/44] tests/docker: remove mingw packages from Fedora Alex Bennée
2021-07-14 15:00 ` [PULL v5 21/44] tests/docker: expand centos8 package list Alex Bennée
2021-07-14 15:00 ` [PULL v5 22/44] tests/docker: expand fedora " Alex Bennée
2021-07-14 15:00 ` [PULL v5 23/44] tests/docker: expand ubuntu1804 " Alex Bennée
2021-07-14 15:00 ` [PULL v5 24/44] tests/docker: expand ubuntu2004 " Alex Bennée
2021-07-14 15:00 ` [PULL v5 25/44] tests/docker: expand opensuse-leap " Alex Bennée
2021-07-14 15:00 ` [PULL v5 26/44] tests/vm: update NetBSD to 9.2 Alex Bennée
2021-07-14 15:00 ` [PULL v5 27/44] tests/vm: update openbsd to release 6.9 Alex Bennée
2021-07-14 15:00 ` [PULL v5 28/44] tests/tcg: make test-mmap a little less aggressive Alex Bennée
2021-07-14 15:00 ` [PULL v5 29/44] plugins: fix-up handling of internal hostaddr for 32 bit Alex Bennée
2021-07-14 15:00 ` [PULL v5 30/44] meson.build: move TCG plugin summary output Alex Bennée
2021-07-14 15:00 ` [PULL v5 31/44] meson.build: relax the libdl test to one for the function dlopen Alex Bennée
2021-07-14 15:00 ` [PULL v5 32/44] tcg/plugins: remove some stale entries from the symbol list Alex Bennée
2021-07-14 15:00 ` [PULL v5 33/44] configure: don't allow plugins to be enabled for a non-TCG build Alex Bennée
2021-07-14 15:00 ` [PULL v5 34/44] configure: add an explicit static and plugins check Alex Bennée
2021-07-14 15:00 ` [PULL v5 35/44] configure: stop user enabling plugins on Windows for now Alex Bennée
2021-07-14 15:00 ` [PULL v5 36/44] tcg/plugins: enable by default for most TCG builds Alex Bennée
2021-07-14 15:00 ` [PULL v5 37/44] contrib/plugins: enable -Wall for building plugins Alex Bennée
2021-07-14 15:00 ` [PULL v5 38/44] contrib/plugins: add execlog to log instruction execution and memory access Alex Bennée
2021-07-14 15:00 ` [PULL v5 39/44] docs/devel: tcg-plugins: add execlog plugin description Alex Bennée
2021-07-14 15:00 ` [PULL v5 40/44] plugins: Added a new cache modelling plugin Alex Bennée
2021-07-14 15:00 ` Alex Bennée [this message]
2021-07-14 15:00 ` [PULL v5 42/44] plugins/cache: Added FIFO and LRU eviction policies Alex Bennée
2021-07-14 15:00 ` [PULL v5 43/44] docs/devel: Added cache plugin to the plugins docs Alex Bennée
2021-07-14 15:00 ` [PULL v5 44/44] MAINTAINERS: Added myself as a reviewer for TCG Plugins Alex Bennée
2021-07-15 18:05 ` [PULL v5 00/44] testing, build and plugin updates Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210714150036.21060-42-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=erdnaxe@crans.org \
    --cc=ma.mandourr@gmail.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.