cache = (event >> EVENT_CACHE_SEL_SHIFT)  & EVENT_CACHE_SEL_MASK;
        ebb   = (event >> EVENT_EBB_SHIFT)        & EVENT_EBB_MASK;
 
-       /* Clear the EBB bit in the event, so event checks work below */
-       event &= ~(EVENT_EBB_MASK << EVENT_EBB_SHIFT);
-
        if (pmc) {
+               u64 base_event;
+
                if (pmc > 6)
                        return -1;
 
-               mask  |= CNST_PMC_MASK(pmc);
-               value |= CNST_PMC_VAL(pmc);
+               /* Ignore Linux defined bits when checking event below */
+               base_event = event & ~(EVENT_EBB_MASK << EVENT_EBB_SHIFT);
 
-               if (pmc >= 5 && event != 0x500fa && event != 0x600f4)
+               if (pmc >= 5 && base_event != 0x500fa && base_event != 0x600f4)
                        return -1;
+
+               mask  |= CNST_PMC_MASK(pmc);
+               value |= CNST_PMC_VAL(pmc);
        }
 
        if (pmc <= 4) {