[LTP] [PATCH v4] rfim: add new test for verifying RFIM sysfs interface
Andrea Cervesato
andrea.cervesato@suse.com
Tue Jun 30 11:40:16 CEST 2026
Hi Piotr,
> +#include "tst_test.h"
> +
> +#define RFIM_ROOT "/sys/bus/pci/devices/0000:00:04.0"
> +
> +static bool have_dvfs, have_fivr, have_dlvr;
> +
> +static const char * const fivr_nodes[] = {
> + RFIM_ROOT "/fivr/vco_ref_code_lo",
> + RFIM_ROOT "/fivr/vco_ref_code_hi",
> + RFIM_ROOT "/fivr/spread_spectrum_pct",
> + RFIM_ROOT "/fivr/spread_spectrum_clk_enable",
> + RFIM_ROOT "/fivr/rfi_vco_ref_code",
> + RFIM_ROOT "/fivr/fivr_fffc_rev",
> + NULL
> +};
> +
> +static const char * const ro_dvfs_nodes[] = {
> + RFIM_ROOT "/dvfs/ddr_data_rate_point_0",
> + RFIM_ROOT "/dvfs/ddr_data_rate_point_1",
> + RFIM_ROOT "/dvfs/ddr_data_rate_point_2",
> + RFIM_ROOT "/dvfs/ddr_data_rate_point_3",
> + RFIM_ROOT "/dvfs/ddr_data_rate",
> + NULL
> +};
> +
> +static const char * const ro_dlvr_nodes[] = {
> + RFIM_ROOT "/dlvr/dlvr_hardware_rev",
> + RFIM_ROOT "/dlvr/dlvr_freq_mhz",
> + RFIM_ROOT "/dlvr/dlvr_pll_busy",
> + NULL
> +};
> +
> +static const char * const rw_dlvr_nodes[] = {
> + RFIM_ROOT "/dlvr/dlvr_freq_select",
> + RFIM_ROOT "/dlvr/dlvr_rfim_enable",
> + RFIM_ROOT "/dlvr/dlvr_spread_spectrum_pct",
> + RFIM_ROOT "/dlvr/dlvr_control_mode",
> + RFIM_ROOT "/dlvr/dlvr_control_lock",
> + NULL
> +};
> +
> +static const char * const rw_dvfs_nodes[] = {
> + RFIM_ROOT "/dvfs/rfi_restriction_run_busy",
> + RFIM_ROOT "/dvfs/rfi_restriction_err_code",
> + RFIM_ROOT "/dvfs/rfi_restriction_data_rate_base",
> + RFIM_ROOT "/dvfs/rfi_restriction_data_rate",
> + RFIM_ROOT "/dvfs/rfi_restriction",
> + RFIM_ROOT "/dvfs/rfi_disable",
> + NULL
> +};
I was thinking that we can make it easier now. Instead of verifying
RW on different functions, we can simply create a .tcase structure
where we assign to each sysfs patch a specific read or write flag.
And according to that, we simply make a check inside the run()
function.
static struct tcase {
const char *path;
int read;
int write;
} tcases[] = {
...
};
static run(unsigned int i)
{
static struct *tc = &tcases[i];
if (tc->read && !tc->write) {
/* open with read -> pass */
/* open with write -> fail */
} else if (!tc->read && tc->write) {
/* open with read -> fail */
/* open with write -> pass */
} else if (tc->read && tc->write) {
/* open with read/write -> pass */
} else {
/* TBROK */
}
}
Something like this. Feel free to optimize it, it's just a draft.
Regards,
--
Andrea Cervesato
SUSE QE Automation Engineer Linux
andrea.cervesato@suse.com
More information about the ltp
mailing list