summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2015-12-10 11:19:23 +0100
committerMichael Olbrich <m.olbrich@pengutronix.de>2015-12-10 11:22:02 +0100
commit40edce6ea991d21839d65667860b43e3eafcbe19 (patch)
treea0f67c1bd18b9359aa4deb5dcbe89d860eb6ce94
parentae33756d3909fdc1a17d950289c269f55c3b5b94 (diff)
downloadptxdist-40edce6ea991d21839d65667860b43e3eafcbe19.tar.gz
ptxdist-40edce6ea991d21839d65667860b43e3eafcbe19.tar.xz
cbenchsuite: version bump 1.0 -> 1.1
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
-rw-r--r--patches/cbenchsuite-1.0/0001-module_manager-Fix-directory-detection.patch55
-rw-r--r--patches/cbenchsuite-1.0/0002-module_manager-Ignore-hidden-directories-as-well.patch24
-rw-r--r--patches/cbenchsuite-1.0/0003-use-hackbench-from-rt-tests.patch570
-rw-r--r--patches/cbenchsuite-1.0/series6
-rw-r--r--rules/cbenchsuite.make6
5 files changed, 3 insertions, 658 deletions
diff --git a/patches/cbenchsuite-1.0/0001-module_manager-Fix-directory-detection.patch b/patches/cbenchsuite-1.0/0001-module_manager-Fix-directory-detection.patch
deleted file mode 100644
index 9031399c4..000000000
--- a/patches/cbenchsuite-1.0/0001-module_manager-Fix-directory-detection.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From: Markus Pargmann <mpa@devmp.org>
-Date: Wed, 3 Jun 2015 11:06:02 +0200
-Subject: [PATCH] module_manager: Fix directory detection
-
-d_type may be incorrect. Use fstatat as fallback.
-
-Signed-off-by: Markus Pargmann <mpa@devmp.org>
----
- src/core/module_manager.c | 23 ++++++++++++++++++++++-
- 1 file changed, 22 insertions(+), 1 deletion(-)
-
-diff --git a/src/core/module_manager.c b/src/core/module_manager.c
-index 77931ce97727..3f30042d22f1 100644
---- a/src/core/module_manager.c
-+++ b/src/core/module_manager.c
-@@ -27,6 +27,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <sys/types.h>
-+#include <sys/stat.h>
-
- #include <klib/list.h>
- #include <klib/printk.h>
-@@ -191,10 +192,30 @@ int mod_mgr_init(struct mod_mgr *mm, const char *mod_dir)
- }
-
- while ((de = readdir(md))) {
-- if (de->d_type != DT_DIR) {
-+ struct stat st;
-+ int ret;
-+
-+ if (de->d_type != DT_UNKNOWN && de->d_type != DT_DIR) {
- printk(KERN_DEBUG "%s is no directory, continuing\n",
- de->d_name);
- continue;
-+ } else if (de->d_type == DT_UNKNOWN) {
-+ /*
-+ * d_type may not be available on a filesystem, check
-+ * again with fstatat
-+ */
-+ ret = fstatat(dirfd(md), de->d_name, &st, 0);
-+ if (ret) {
-+ printk(KERN_ERR "Failed to stat %s\n",
-+ de->d_name);
-+ return ret;
-+ }
-+
-+ if (!S_ISDIR(st.st_mode)) {
-+ printk(KERN_DEBUG "%s is no directory, continuing\n",
-+ de->d_name);
-+ continue;
-+ }
- }
- if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, ".."))
- continue;
diff --git a/patches/cbenchsuite-1.0/0002-module_manager-Ignore-hidden-directories-as-well.patch b/patches/cbenchsuite-1.0/0002-module_manager-Ignore-hidden-directories-as-well.patch
deleted file mode 100644
index 6765f8fcd..000000000
--- a/patches/cbenchsuite-1.0/0002-module_manager-Ignore-hidden-directories-as-well.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From: Markus Pargmann <mpa@devmp.org>
-Date: Wed, 3 Jun 2015 11:06:54 +0200
-Subject: [PATCH] module_manager: Ignore hidden directories as well
-
-Signed-off-by: Markus Pargmann <mpa@devmp.org>
----
- src/core/module_manager.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/core/module_manager.c b/src/core/module_manager.c
-index 3f30042d22f1..2ced58c37ed1 100644
---- a/src/core/module_manager.c
-+++ b/src/core/module_manager.c
-@@ -217,7 +217,9 @@ int mod_mgr_init(struct mod_mgr *mm, const char *mod_dir)
- continue;
- }
- }
-- if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, ".."))
-+
-+ /* Ignore fake directories and hidden files */
-+ if (de->d_name[0] == '.')
- continue;
-
- mod = module_create(de->d_name, mod_dir);
diff --git a/patches/cbenchsuite-1.0/0003-use-hackbench-from-rt-tests.patch b/patches/cbenchsuite-1.0/0003-use-hackbench-from-rt-tests.patch
deleted file mode 100644
index b1c675801..000000000
--- a/patches/cbenchsuite-1.0/0003-use-hackbench-from-rt-tests.patch
+++ /dev/null
@@ -1,570 +0,0 @@
-From: Michael Olbrich <m.olbrich@pengutronix.de>
-Date: Wed, 3 Jun 2015 20:11:09 +0200
-Subject: [PATCH] use hackbench from rt-tests
-
-Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
----
- modules/linux_perf/CMakeLists.txt | 6 -
- modules/linux_perf/hackbench.c | 381 ------------------------------------
- modules/linux_perf/perf_hackbench.c | 70 ++++++-
- 3 files changed, 60 insertions(+), 397 deletions(-)
- delete mode 100644 modules/linux_perf/hackbench.c
-
-diff --git a/modules/linux_perf/CMakeLists.txt b/modules/linux_perf/CMakeLists.txt
-index f179527df315..8b50cd51a8e5 100644
---- a/modules/linux_perf/CMakeLists.txt
-+++ b/modules/linux_perf/CMakeLists.txt
-@@ -3,9 +3,3 @@ cbench_module(linux_perf
- perf_hackbench.c
- sched-pipe.c
- )
--
--find_package(Threads)
--add_executable(hackbench hackbench.c)
--target_link_libraries(hackbench ${CMAKE_THREAD_LIBS_INIT})
--
--install(TARGETS hackbench DESTINATION lib/cbenchsuite/linux_perf)
-diff --git a/modules/linux_perf/hackbench.c b/modules/linux_perf/hackbench.c
-deleted file mode 100644
-index 1636999403cd..000000000000
---- a/modules/linux_perf/hackbench.c
-+++ /dev/null
-@@ -1,381 +0,0 @@
--
--/*
-- * This is the latest version of hackbench.c, that tests scheduler and
-- * unix-socket (or pipe) performance.
-- *
-- * Usage: hackbench [-pipe] <num groups> [process|thread] [loops]
-- *
-- * Build it with:
-- * gcc -g -Wall -O2 -o hackbench hackbench.c -lpthread
-- */
--#if 0
--
--Date: Fri, 04 Jan 2008 14:06:26 +0800
--From: "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>
--To: LKML <linux-kernel@vger.kernel.org>
--Subject: Improve hackbench
--Cc: Ingo Molnar <mingo@elte.hu>, Arjan van de Ven <arjan@infradead.org>
--
--hackbench tests the Linux scheduler. The original program is at
--http://devresources.linux-foundation.org/craiger/hackbench/src/hackbench.c
--Based on this multi-process version, a nice person created a multi-thread
--version. Pls. see
--http://www.bullopensource.org/posix/pi-futex/hackbench_pth.c
--
--When I integrated them into my automation testing system, I found
--a couple of issues and did some improvements.
--
--1) Merge hackbench: I integrated hackbench_pth.c into hackbench and added a
--new parameter which can be used to choose process mode or thread mode. The
--default mode is process.
--
--2) It runs too fast and ends in a couple of seconds. Sometimes its too hard to debug
--the issues. On my ia64 Montecito machines, the result looks weird when comparing
--process mode and thread mode.
--I want a stable result and hope the testing could run for a stable longer time, so I
--might use performance tools to debug issues.
--I added another new parameter,`loops`, which can be used to change variable loops,
--so more messages will be passed from writers to receivers. Parameter 'loops' is equal to
--100 by default.
--
--For example on my 8-core x86_64:
--[ymzhang@lkp-st01-x8664 hackbench]$ uname -a
--Linux lkp-st01-x8664 2.6.24-rc6 #1 SMP Fri Dec 21 08:32:31 CST 2007 x86_64 x86_64 x86_64 GNU/Linux
--[ymzhang@lkp-st01-x8664 hackbench]$ ./hackbench
--Usage: hackbench [-pipe] <num groups> [process|thread] [loops]
--[ymzhang@lkp-st01-x8664 hackbench]$ ./hackbench 150 process 1000
--Time: 151.533
--[ymzhang@lkp-st01-x8664 hackbench]$ ./hackbench 150 thread 1000
--Time: 153.666
--
--
--With the same new parameters, I did captured the SLUB issue discussed on LKML recently.
--
--3) hackbench_pth.c will fail on ia64 machine because pthread_attr_setstacksize always
--fails if the stack size is less than 196*1024. I moved this statement within a __ia64__ check.
--
--
--This new program could be compiled with command line:
--#gcc -g -Wall -o hackbench hackbench.c -lpthread
--
--
--Thank Ingo for his great comments!
--
---yanmin
--
-----
--
--* Nathan Lynch <ntl@pobox.com> wrote:
--
--> Here is a fixlet for the hackbench program found at
-->
--> http://people.redhat.com/mingo/cfs-scheduler/tools/hackbench.c
-->
--> When redirecting hackbench output I am seeing multiple copies of the
--> "Running with %d*40 (== %d) tasks" line. Need to flush the buffered
--> output before forking.
--
--#endif
--
--/* Test groups of 20 processes spraying to 20 receivers */
--#include <pthread.h>
--#include <stdio.h>
--#include <stdlib.h>
--#include <string.h>
--#include <errno.h>
--#include <unistd.h>
--#include <sys/types.h>
--#include <sys/socket.h>
--#include <sys/wait.h>
--#include <sys/time.h>
--#include <sys/poll.h>
--#include <limits.h>
--
--#define DATASIZE 100
--static unsigned int loops = 100;
--/*
-- * 0 means thread mode and others mean process (default)
-- */
--static unsigned int process_mode = 1;
--
--static int use_pipes = 0;
--
--struct sender_context {
-- unsigned int num_fds;
-- int ready_out;
-- int wakefd;
-- int out_fds[0];
--};
--
--struct receiver_context {
-- unsigned int num_packets;
-- int in_fds[2];
-- int ready_out;
-- int wakefd;
--};
--
--
--static void barf(const char *msg)
--{
-- fprintf(stderr, "%s (error: %s)\n", msg, strerror(errno));
-- exit(1);
--}
--
--static void print_usage_exit()
--{
-- printf("Usage: hackbench [-pipe] <num groups> [process|thread] [loops]\n");
-- exit(1);
--}
--
--static void fdpair(int fds[2])
--{
-- if (use_pipes) {
-- if (pipe(fds) == 0)
-- return;
-- } else {
-- if (socketpair(AF_UNIX, SOCK_STREAM, 0, fds) == 0)
-- return;
-- }
-- barf("Creating fdpair");
--}
--
--/* Block until we're ready to go */
--static void ready(int ready_out, int wakefd)
--{
-- char dummy;
-- struct pollfd pollfd = { .fd = wakefd, .events = POLLIN };
--
-- /* Tell them we're ready. */
-- if (write(ready_out, &dummy, 1) != 1)
-- barf("CLIENT: ready write");
--
-- /* Wait for "GO" signal */
-- if (poll(&pollfd, 1, -1) != 1)
-- barf("poll");
--}
--
--/* Sender sprays loops messages down each file descriptor */
--static void *sender(struct sender_context *ctx)
--{
-- char data[DATASIZE];
-- unsigned int i, j;
--
-- ready(ctx->ready_out, ctx->wakefd);
--
-- /* Now pump to every receiver. */
-- for (i = 0; i < loops; i++) {
-- for (j = 0; j < ctx->num_fds; j++) {
-- int ret, done = 0;
--
--again:
-- ret = write(ctx->out_fds[j], data + done, sizeof(data)-done);
-- if (ret < 0)
-- barf("SENDER: write");
-- done += ret;
-- if (done < sizeof(data))
-- goto again;
-- }
-- }
--
-- return NULL;
--}
--
--
--/* One receiver per fd */
--static void *receiver(struct receiver_context* ctx)
--{
-- unsigned int i;
--
-- if (process_mode)
-- close(ctx->in_fds[1]);
--
-- /* Wait for start... */
-- ready(ctx->ready_out, ctx->wakefd);
--
-- /* Receive them all */
-- for (i = 0; i < ctx->num_packets; i++) {
-- char data[DATASIZE];
-- int ret, done = 0;
--
--again:
-- ret = read(ctx->in_fds[0], data + done, DATASIZE - done);
-- if (ret < 0)
-- barf("SERVER: read");
-- done += ret;
-- if (done < DATASIZE)
-- goto again;
-- }
--
-- return NULL;
--}
--
--pthread_t create_worker(void *ctx, void *(*func)(void *))
--{
-- pthread_attr_t attr;
-- pthread_t childid;
-- int err;
--
-- if (process_mode) {
-- /* process mode */
-- /* Fork the receiver. */
-- switch (fork()) {
-- case -1: barf("fork()");
-- case 0:
-- (*func) (ctx);
-- exit(0);
-- }
--
-- return (pthread_t) 0;
-- }
--
-- if (pthread_attr_init(&attr) != 0)
-- barf("pthread_attr_init:");
--
--#ifndef __ia64__
-- if (pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN) != 0)
-- barf("pthread_attr_setstacksize");
--#endif
--
-- if ((err=pthread_create(&childid, &attr, func, ctx)) != 0) {
-- fprintf(stderr, "pthread_create failed: %s (%d)\n", strerror(err), err);
-- exit(-1);
-- }
-- return (childid);
--}
--
--void reap_worker(pthread_t id)
--{
-- int status;
--
-- if (process_mode) {
-- /* process mode */
-- wait(&status);
-- if (!WIFEXITED(status))
-- exit(1);
-- } else {
-- void *status;
--
-- pthread_join(id, &status);
-- }
--}
--
--/* One group of senders and receivers */
--static unsigned int group(pthread_t *pth,
-- unsigned int num_fds,
-- int ready_out,
-- int wakefd)
--{
-- unsigned int i;
-- struct sender_context* snd_ctx = malloc (sizeof(struct sender_context)
-- +num_fds*sizeof(int));
--
-- for (i = 0; i < num_fds; i++) {
-- int fds[2];
-- struct receiver_context* ctx = malloc (sizeof(*ctx));
--
-- if (!ctx)
-- barf("malloc()");
--
--
-- /* Create the pipe between client and server */
-- fdpair(fds);
--
-- ctx->num_packets = num_fds*loops;
-- ctx->in_fds[0] = fds[0];
-- ctx->in_fds[1] = fds[1];
-- ctx->ready_out = ready_out;
-- ctx->wakefd = wakefd;
--
-- pth[i] = create_worker(ctx, (void *)(void *)receiver);
--
-- snd_ctx->out_fds[i] = fds[1];
-- if (process_mode)
-- close(fds[0]);
-- }
--
-- /* Now we have all the fds, fork the senders */
-- for (i = 0; i < num_fds; i++) {
-- snd_ctx->ready_out = ready_out;
-- snd_ctx->wakefd = wakefd;
-- snd_ctx->num_fds = num_fds;
--
-- pth[num_fds+i] = create_worker(snd_ctx, (void *)(void *)sender);
-- }
--
-- /* Close the fds we have left */
-- if (process_mode)
-- for (i = 0; i < num_fds; i++)
-- close(snd_ctx->out_fds[i]);
--
-- /* Return number of children to reap */
-- return num_fds * 2;
--}
--
--int main(int argc, char *argv[])
--{
-- unsigned int i, num_groups = 10, total_children;
-- struct timeval start, stop, diff;
-- unsigned int num_fds = 20;
-- int readyfds[2], wakefds[2];
-- char dummy;
-- pthread_t *pth_tab;
--
-- if (argv[1] && strcmp(argv[1], "-pipe") == 0) {
-- use_pipes = 1;
-- argc--;
-- argv++;
-- }
--
-- if (argc >= 2 && (num_groups = atoi(argv[1])) == 0)
-- print_usage_exit();
--
-- fflush(NULL);
--
-- if (argc > 2) {
-- if ( !strcmp(argv[2], "process") )
-- process_mode = 1;
-- else if ( !strcmp(argv[2], "thread") )
-- process_mode = 0;
-- else
-- print_usage_exit();
-- }
--
-- if (argc > 3)
-- loops = atoi(argv[3]);
--
-- pth_tab = malloc(num_fds * 2 * num_groups * sizeof(pthread_t));
--
-- if (!pth_tab)
-- barf("main:malloc()");
--
-- fdpair(readyfds);
-- fdpair(wakefds);
--
-- total_children = 0;
-- for (i = 0; i < num_groups; i++)
-- total_children += group(pth_tab+total_children, num_fds, readyfds[1], wakefds[0]);
--
-- /* Wait for everyone to be ready */
-- for (i = 0; i < total_children; i++)
-- if (read(readyfds[0], &dummy, 1) != 1)
-- barf("Reading for readyfds");
--
-- gettimeofday(&start, NULL);
--
-- /* Kick them off */
-- if (write(wakefds[1], &dummy, 1) != 1)
-- barf("Writing to start them");
--
-- /* Reap them all */
-- for (i = 0; i < total_children; i++)
-- reap_worker(pth_tab[i]);
--
-- gettimeofday(&stop, NULL);
--
-- /* Print time... */
-- timersub(&stop, &start, &diff);
-- printf("%lu.%03lu\n", diff.tv_sec, diff.tv_usec/1000);
-- exit(0);
--}
--
--
-diff --git a/modules/linux_perf/perf_hackbench.c b/modules/linux_perf/perf_hackbench.c
-index e289694c518c..1143caccdd0d 100644
---- a/modules/linux_perf/perf_hackbench.c
-+++ b/modules/linux_perf/perf_hackbench.c
-@@ -3,21 +3,33 @@
-
- #include <cbench/option.h>
- #include <cbench/plugin_id_helper.h>
-+#include <cbench/requirement.h>
- #include <cbench/version.h>
- #include <cbench/exec_helper.h>
-
- struct header plugin_hackbench_defaults[] = {
-- OPTION_BOOL("pipe", NULL, NULL, 0),
-+ OPTION_BOOL("pipe", "Use a pipe instead of Unix domain sockets", NULL, 0),
- OPTION_BOOL("process", "Use processes instead of threads.", NULL, 0),
- OPTION_INT32("groups", "Number of groups used.", NULL, 10),
- OPTION_INT32("loops", "Number of loops executed.", NULL, 10000),
-+ OPTION_INT32("size", "Number of bytes transfered in each message.", NULL, 100),
-+ OPTION_INT32("fds", "Number of file descriptor pair opened.", NULL, 20),
- OPTION_SENTINEL
- };
-
-+static struct requirement hackbench_requirements[] = {
-+ {
-+ .name = "hackbench",
-+ }, {
-+ /* Sentinel */
-+ }
-+};
-+
- static struct version plugin_hackbench_versions[] = {
- {
-- .version = "0.1",
-+ .version = "0.2",
- .default_options = plugin_hackbench_defaults,
-+ .requirements = hackbench_requirements,
- .nr_independent_values = 1,
- }, {
- /* Sentinel */
-@@ -25,36 +37,52 @@ static struct version plugin_hackbench_versions[] = {
- };
-
- static char hackbench_pipe[] = "-pipe";
--static char hackbench_process[] = "process";
--static char hackbench_thread[] = "thread";
-+static char hackbench_process[] = "--process";
-+static char hackbench_thread[] = "--threads";
-+static char hackbench_groups[] = "--groups";
-+static char hackbench_loops[] = "--loops";
-+static char hackbench_size[] = "--datasize";
-+static char hackbench_fds[] = "--fds";
-
- struct hackbench_data {
- char *hb_bin;
-- char loops[32];
- char groups[32];
-- char *args[6];
-+ char loops[32];
-+ char size[32];
-+ char fds[32];
-+ char *args[12];
-
- char *result;
- };
-
-+static int hackbench_init(struct module *mod, const struct plugin_id *plug)
-+{
-+ char *args[] = {"hackbench", "-h", NULL};
-+ int ret;
-+
-+ ret = subproc_call("hackbench", args);
-+ if (WIFEXITED(ret) && WEXITSTATUS(ret) == 1)
-+ hackbench_requirements[0].found = 1;
-+
-+ return 0;
-+}
-+
- static int hackbench_install(struct plugin *plug)
- {
- struct hackbench_data *d = malloc(sizeof(*d));
- const struct header *opts = plugin_get_options(plug);
-- const char *bin_path = plugin_get_bin_path(plug);
- char *hb_bin;
- int argi = 1;
-
- if (!d)
- return -1;
-
-- hb_bin = malloc(strlen(bin_path) + 24);
-+ hb_bin = strdup("/usr/bin/hackbench");
- if (!hb_bin) {
- free(d);
- return -1;
- }
-
-- sprintf(hb_bin, "%s/hackbench", bin_path);
- d->hb_bin = hb_bin;
- d->args[0] = hb_bin;
-
-@@ -63,6 +91,8 @@ static int hackbench_install(struct plugin *plug)
- ++argi;
- }
-
-+ d->args[argi] = hackbench_groups;
-+ ++argi;
- sprintf(d->groups, "%d", option_get_int32(opts, "groups"));
- d->args[argi] = d->groups;
- ++argi;
-@@ -73,10 +103,24 @@ static int hackbench_install(struct plugin *plug)
- d->args[argi] = hackbench_thread;
- ++argi;
-
-+ d->args[argi] = hackbench_loops;
-+ ++argi;
- sprintf(d->loops, "%d", option_get_int32(opts, "loops"));
- d->args[argi] = d->loops;
- ++argi;
-
-+ d->args[argi] = hackbench_size;
-+ ++argi;
-+ sprintf(d->size, "%d", option_get_int32(opts, "size"));
-+ d->args[argi] = d->size;
-+ ++argi;
-+
-+ d->args[argi] = hackbench_fds;
-+ ++argi;
-+ sprintf(d->fds, "%d", option_get_int32(opts, "fds"));
-+ d->args[argi] = d->fds;
-+ ++argi;
-+
- d->args[argi] = NULL;
-
- plugin_set_data(plug, d);
-@@ -107,8 +151,13 @@ static int hackbench_parse_results(struct plugin *plug)
- struct hackbench_data *d = plugin_get_data(plug);
- struct data *data = data_alloc(DATA_TYPE_RESULT, 1);
- double res;
-+ char *c;
-+
-+ c = strrchr(d->result, ':');
-+ if (!c)
-+ return -1;
-
-- res = atof(d->result);
-+ res = atof(c+2);
- data_add_double(data, res);
-
- plugin_add_results(plug, data);
-@@ -150,6 +199,7 @@ static const struct header *hackbench_data_hdr(struct plugin *plug)
- const struct plugin_id plugin_hackbench = {
- .name = "hackbench",
- .description = "Benchmark that spawns a number of groups that internally send/receive packets. Also known within the linux kernel perf tool as sched-messaging.",
-+ .module_init = hackbench_init,
- .install = hackbench_install,
- .uninstall = hackbench_uninstall,
- .parse_results = hackbench_parse_results,
diff --git a/patches/cbenchsuite-1.0/series b/patches/cbenchsuite-1.0/series
deleted file mode 100644
index 68c3cc79c..000000000
--- a/patches/cbenchsuite-1.0/series
+++ /dev/null
@@ -1,6 +0,0 @@
-# generated by git-ptx-patches
-#tag:base --start-number 1
-0001-module_manager-Fix-directory-detection.patch
-0002-module_manager-Ignore-hidden-directories-as-well.patch
-0003-use-hackbench-from-rt-tests.patch
-# 5e6d0b189d0e0b76a94ff73e0956c76b - git-ptx-patches magic
diff --git a/rules/cbenchsuite.make b/rules/cbenchsuite.make
index 8d38a5f2d..1ceb52073 100644
--- a/rules/cbenchsuite.make
+++ b/rules/cbenchsuite.make
@@ -16,14 +16,14 @@ PACKAGES-$(PTXCONF_CBENCHSUITE) += cbenchsuite
#
# Paths and names
#
-CBENCHSUITE_VERSION := 1.0
-CBENCHSUITE_MD5 := d5bddd48495edf7200d11fce03a310ef
+CBENCHSUITE_VERSION := 1.1
+CBENCHSUITE_MD5 := c82d5e453cd38c9c933493845d0f5c2d
CBENCHSUITE := cbenchsuite-$(CBENCHSUITE_VERSION)
CBENCHSUITE_SUFFIX := tar.gz
CBENCHSUITE_URL := https://github.com/scosu/cbenchsuite/archive/v$(CBENCHSUITE_VERSION).$(CBENCHSUITE_SUFFIX)
CBENCHSUITE_SOURCE := $(SRCDIR)/$(CBENCHSUITE).$(CBENCHSUITE_SUFFIX)
CBENCHSUITE_DIR := $(BUILDDIR)/$(CBENCHSUITE)
-CBENCHSUITE_LICENSE := GPL
+CBENCHSUITE_LICENSE := GPL-2.0+
#
# autoconf