bool is_cpu = !strcmp(pmu->name, "cpu");
 
                        if (event_glob != NULL &&
-                           !(strglobmatch(name, event_glob) ||
-                             (!is_cpu && strglobmatch(alias->name,
+                           !(strglobmatch_nocase(name, event_glob) ||
+                             (!is_cpu && strglobmatch_nocase(alias->name,
                                                       event_glob))))
                                continue;
 
 
 }
 
 /* Glob/lazy pattern matching */
-static bool __match_glob(const char *str, const char *pat, bool ignore_space)
+static bool __match_glob(const char *str, const char *pat, bool ignore_space,
+                       bool case_ins)
 {
        while (*str && *pat && *pat != '*') {
                if (ignore_space) {
                                return false;
                else if (*pat == '\\') /* Escaped char match as normal char */
                        pat++;
-               if (*str++ != *pat++)
+               if (case_ins) {
+                       if (tolower(*str) != tolower(*pat))
+                               return false;
+               } else if (*str != *pat)
                        return false;
+               str++;
+               pat++;
        }
        /* Check wild card */
        if (*pat == '*') {
                if (!*pat)      /* Tail wild card matches all */
                        return true;
                while (*str)
-                       if (__match_glob(str++, pat, ignore_space))
+                       if (__match_glob(str++, pat, ignore_space, case_ins))
                                return true;
        }
        return !*str && !*pat;
  */
 bool strglobmatch(const char *str, const char *pat)
 {
-       return __match_glob(str, pat, false);
+       return __match_glob(str, pat, false, false);
+}
+
+bool strglobmatch_nocase(const char *str, const char *pat)
+{
+       return __match_glob(str, pat, false, true);
 }
 
 /**
  */
 bool strlazymatch(const char *str, const char *pat)
 {
-       return __match_glob(str, pat, true);
+       return __match_glob(str, pat, true, false);
 }
 
 /**
 
 char **argv_split(const char *str, int *argcp);
 void argv_free(char **argv);
 bool strglobmatch(const char *str, const char *pat);
+bool strglobmatch_nocase(const char *str, const char *pat);
 bool strlazymatch(const char *str, const char *pat);
 static inline bool strisglob(const char *str)
 {