Unverified Commit c6251549 authored by Pu Lehui's avatar Pu Lehui Committed by Palmer Dabbelt
Browse files

drivers/perf: riscv: Align errno for unsupported perf event



RISC-V perf driver does not yet support PERF_TYPE_BREAKPOINT. It would
be more appropriate to return -EOPNOTSUPP or -ENOENT for this type in
pmu_sbi_event_map. Considering that other implementations return -ENOENT
for unsupported perf types, let's synchronize this behavior. Due to this
reason, a riscv bpf testcases perf_skip fail. Meanwhile, align that
behavior to the rest of proper place.

Signed-off-by: default avatarPu Lehui <pulehui@huawei.com>
Reviewed-by: default avatarAtish Patra <atishp@rivosinc.com>
Fixes: 9b3e150e ("RISC-V: Add a simple platform driver for RISC-V legacy perf")
Fixes: 16d3b1af ("perf: RISC-V: Check standard event availability")
Fixes: e9991434 ("RISC-V: Add perf platform driver based on SBI PMU extension")
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20240831071520.1630360-1-pulehui@huaweicloud.com


Signed-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
parent 9852d85e
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -22,13 +22,13 @@ static int pmu_legacy_ctr_get_idx(struct perf_event *event)
	struct perf_event_attr *attr = &event->attr;

	if (event->attr.type != PERF_TYPE_HARDWARE)
		return -EOPNOTSUPP;
		return -ENOENT;
	if (attr->config == PERF_COUNT_HW_CPU_CYCLES)
		return RISCV_PMU_LEGACY_CYCLE;
	else if (attr->config == PERF_COUNT_HW_INSTRUCTIONS)
		return RISCV_PMU_LEGACY_INSTRET;
	else
		return -EOPNOTSUPP;
		return -ENOENT;
}

/* For legacy config & counter index are same */
+2 −2
Original line number Diff line number Diff line
@@ -309,7 +309,7 @@ static void pmu_sbi_check_event(struct sbi_pmu_event_data *edata)
			  ret.value, 0x1, SBI_PMU_STOP_FLAG_RESET, 0, 0, 0);
	} else if (ret.error == SBI_ERR_NOT_SUPPORTED) {
		/* This event cannot be monitored by any counter */
		edata->event_idx = -EINVAL;
		edata->event_idx = -ENOENT;
	}
}

@@ -556,7 +556,7 @@ static int pmu_sbi_event_map(struct perf_event *event, u64 *econfig)
		}
		break;
	default:
		ret = -EINVAL;
		ret = -ENOENT;
		break;
	}