diff options
| author | Miquel Raynal <miquel.raynal@bootlin.com> | 2022-05-20 13:58:54 +0200 | 
|---|---|---|
| committer | Miquel Raynal <miquel.raynal@bootlin.com> | 2022-05-20 13:58:54 +0200 | 
| commit | e6828be5edcfea25cd70a2d1de41085c67ef9fa5 (patch) | |
| tree | 489ae4cdb47a4d83940e2472f49a3c601806b70e /tools/perf/bench/futex-lock-pi.c | |
| parent | 1fefc8ecb834c88edfc27e712d683872d0c541dd (diff) | |
| parent | c47452194641b5d27c20e557c84a46c85fd7ce37 (diff) | |
Merge tag 'spi-nor/for-5.19' into mtd/next
SPI NOR core changes:
- Read back written SR value to make sure the write was done correctly.
- Introduce a common function for Read ID that manufacturer drivers can
  use to verify the Octal DTR switch worked correctly.
- Add helpers for read/write any register commands so manufacturer
  drivers don't open code it every time.
- Clarify rdsr dummy cycles documentation.
- Add debugfs entry to expose internal flash parameters and state.
SPI NOR manufacturer drivers changes:
- Add support for Winbond W25Q512NW-IM, and Eon EN25QH256A.
- Move spi_nor_write_ear() to Winbond module since only Winbond flashes
  use it.
- Rework Micron and Cypress Octal DTR enable methods to improve
  readability.
- Use the common Read ID function to verify switch to Octal DTR mode for
  Micron and Cypress flashes.
- Skip polling status on volatile register writes for Micron and Cypress
  flashes since the operation is instant.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Diffstat (limited to 'tools/perf/bench/futex-lock-pi.c')
| -rw-r--r-- | tools/perf/bench/futex-lock-pi.c | 21 | 
1 files changed, 16 insertions, 5 deletions
diff --git a/tools/perf/bench/futex-lock-pi.c b/tools/perf/bench/futex-lock-pi.c index 6fc9a3d55c1f..0abb3f7ee24f 100644 --- a/tools/perf/bench/futex-lock-pi.c +++ b/tools/perf/bench/futex-lock-pi.c @@ -120,11 +120,17 @@ static void *workerfn(void *arg)  static void create_threads(struct worker *w, pthread_attr_t thread_attr,  			   struct perf_cpu_map *cpu)  { -	cpu_set_t cpuset; +	cpu_set_t *cpuset;  	unsigned int i; +	int nrcpus =  perf_cpu_map__nr(cpu); +	size_t size;  	threads_starting = params.nthreads; +	cpuset = CPU_ALLOC(nrcpus); +	BUG_ON(!cpuset); +	size = CPU_ALLOC_SIZE(nrcpus); +  	for (i = 0; i < params.nthreads; i++) {  		worker[i].tid = i; @@ -135,15 +141,20 @@ static void create_threads(struct worker *w, pthread_attr_t thread_attr,  		} else  			worker[i].futex = &global_futex; -		CPU_ZERO(&cpuset); -		CPU_SET(perf_cpu_map__cpu(cpu, i % perf_cpu_map__nr(cpu)).cpu, &cpuset); +		CPU_ZERO_S(size, cpuset); +		CPU_SET_S(perf_cpu_map__cpu(cpu, i % perf_cpu_map__nr(cpu)).cpu, size, cpuset); -		if (pthread_attr_setaffinity_np(&thread_attr, sizeof(cpu_set_t), &cpuset)) +		if (pthread_attr_setaffinity_np(&thread_attr, size, cpuset)) { +			CPU_FREE(cpuset);  			err(EXIT_FAILURE, "pthread_attr_setaffinity_np"); +		} -		if (pthread_create(&w[i].thread, &thread_attr, workerfn, &worker[i])) +		if (pthread_create(&w[i].thread, &thread_attr, workerfn, &worker[i])) { +			CPU_FREE(cpuset);  			err(EXIT_FAILURE, "pthread_create"); +		}  	} +	CPU_FREE(cpuset);  }  int bench_futex_lock_pi(int argc, const char **argv)  | 
