mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 13:41:51 +00:00
RISC-V Fixes for 6.11-rc8
* Two fixes for smp_processor_id() calls in preemptible sections: one if the perf driver, and one in the fence.i prctl. -----BEGIN PGP SIGNATURE----- iQJHBAABCAAxFiEEKzw3R0RoQ7JKlDp6LhMZ81+7GIkFAmbjDTkTHHBhbG1lckBk YWJiZWx0LmNvbQAKCRAuExnzX7sYiRsKD/428yAcDT6JKjG+jzYnMARDxl+OS0hJ KKwfeglvpPXWqZoZlyhPgJMJ/fNalrH/dVwl01a3Aobjy8/JV6W6L2Cc/lwRBNXv O+nfCzzJoZs+v7D0MR2Ad101vfToafDaiZ9Q6jH4/9yi/m5zAaIHdEnjYQQW5rLc FMnfGDHXo40WkrnjEjefeh7n88d5dtyD3szwS8khSnJulGFRHHWW0XL54wVeY3wE NvLKdD5PDR7kzOE6BvofPQ1tIJxpWnE+jqSgHmS1eYKlwwzb1kvtGXiktUl/gcwb /+jFgK49gqWMpx1ji+utw4R357uIZY0DPIiMvY7K5PjeY+TXtltTBgfyvjklpLWm YrZ1snpMiMl/VTxFYVFMCvowK/DvylvSQ737zwMaxTq/DGwvr8GPuRO1Pnwc/3QZ wCLy3rsK56LE46+9IrYeauYNiOl1bd6znuASzrPhr8Ecexm2DW+JZqRRZCMl3UTK p9hrr3CxUT4hi0bksjkSOBks7cLNp3Rqa/fEBtM6YKKzSU6NlEoNpuiH7sjh7ETE Zk4qUjRPiRcje0XL2NTKfpKSGuxK/xP4188aYA5jZ1QxO/zditk8BrS5WRfgEoPr gjNapO25nrnJbgi9PaClMdeYNV//Fi/0vjpDjw6pYfJaZSE0sWMqp5/bWt5Bsy2A e/OyJ+U4TPY4vQ== =pEDD -----END PGP SIGNATURE----- Merge tag 'riscv-for-linus-6.11-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux Pull RISC-V fixes from Palmer Dabbelt: - Two fixes for smp_processor_id() calls in preemptible sections: one if the perf driver, and one in the fence.i prctl. * tag 'riscv-for-linus-6.11-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: riscv: Disable preemption while handling PR_RISCV_CTX_SW_FENCEI_OFF drivers: perf: Fix smp_processor_id() use in preemptible code
This commit is contained in:
commit
8581ae1ea0
@ -158,6 +158,7 @@ void __init riscv_init_cbo_blocksizes(void)
|
||||
#ifdef CONFIG_SMP
|
||||
static void set_icache_stale_mask(void)
|
||||
{
|
||||
int cpu = get_cpu();
|
||||
cpumask_t *mask;
|
||||
bool stale_cpu;
|
||||
|
||||
@ -168,10 +169,11 @@ static void set_icache_stale_mask(void)
|
||||
* concurrently on different harts.
|
||||
*/
|
||||
mask = ¤t->mm->context.icache_stale_mask;
|
||||
stale_cpu = cpumask_test_cpu(smp_processor_id(), mask);
|
||||
stale_cpu = cpumask_test_cpu(cpu, mask);
|
||||
|
||||
cpumask_setall(mask);
|
||||
cpumask_assign_cpu(smp_processor_id(), mask, stale_cpu);
|
||||
cpumask_assign_cpu(cpu, mask, stale_cpu);
|
||||
put_cpu();
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -239,14 +241,12 @@ int riscv_set_icache_flush_ctx(unsigned long ctx, unsigned long scope)
|
||||
case PR_RISCV_CTX_SW_FENCEI_OFF:
|
||||
switch (scope) {
|
||||
case PR_RISCV_SCOPE_PER_PROCESS:
|
||||
current->mm->context.force_icache_flush = false;
|
||||
|
||||
set_icache_stale_mask();
|
||||
current->mm->context.force_icache_flush = false;
|
||||
break;
|
||||
case PR_RISCV_SCOPE_PER_THREAD:
|
||||
current->thread.force_icache_flush = false;
|
||||
|
||||
set_icache_stale_mask();
|
||||
current->thread.force_icache_flush = false;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
@ -1373,11 +1373,15 @@ static int pmu_sbi_device_probe(struct platform_device *pdev)
|
||||
|
||||
/* SBI PMU Snapsphot is only available in SBI v2.0 */
|
||||
if (sbi_v2_available) {
|
||||
int cpu;
|
||||
|
||||
ret = pmu_sbi_snapshot_alloc(pmu);
|
||||
if (ret)
|
||||
goto out_unregister;
|
||||
|
||||
ret = pmu_sbi_snapshot_setup(pmu, smp_processor_id());
|
||||
cpu = get_cpu();
|
||||
|
||||
ret = pmu_sbi_snapshot_setup(pmu, cpu);
|
||||
if (ret) {
|
||||
/* Snapshot is an optional feature. Continue if not available */
|
||||
pmu_sbi_snapshot_free(pmu);
|
||||
@ -1391,6 +1395,7 @@ static int pmu_sbi_device_probe(struct platform_device *pdev)
|
||||
*/
|
||||
static_branch_enable(&sbi_pmu_snapshot_available);
|
||||
}
|
||||
put_cpu();
|
||||
}
|
||||
|
||||
register_sysctl("kernel", sbi_pmu_sysctl_table);
|
||||
|
Loading…
Reference in New Issue
Block a user