diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-11-13 15:38:26 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-11-13 15:38:26 -0500 |
| commit | 8e9a2dba8686187d8c8179e5b86640e653963889 (patch) | |
| tree | a4ba543649219cbb28d91aab65b785d763f5d069 /drivers/edac | |
| parent | 6098850e7e6978f95a958f79a645a653228d0002 (diff) | |
| parent | 450cbdd0125cfa5d7bbf9e2a6b6961cc48d29730 (diff) | |
Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull core locking updates from Ingo Molnar:
"The main changes in this cycle are:
- Another attempt at enabling cross-release lockdep dependency
tracking (automatically part of CONFIG_PROVE_LOCKING=y), this time
with better performance and fewer false positives. (Byungchul Park)
- Introduce lockdep_assert_irqs_enabled()/disabled() and convert
open-coded equivalents to lockdep variants. (Frederic Weisbecker)
- Add down_read_killable() and use it in the VFS's iterate_dir()
method. (Kirill Tkhai)
- Convert remaining uses of ACCESS_ONCE() to
READ_ONCE()/WRITE_ONCE(). Most of the conversion was Coccinelle
driven. (Mark Rutland, Paul E. McKenney)
- Get rid of lockless_dereference(), by strengthening Alpha atomics,
strengthening READ_ONCE() with smp_read_barrier_depends() and thus
being able to convert users of lockless_dereference() to
READ_ONCE(). (Will Deacon)
- Various micro-optimizations:
- better PV qspinlocks (Waiman Long),
- better x86 barriers (Michael S. Tsirkin)
- better x86 refcounts (Kees Cook)
- ... plus other fixes and enhancements. (Borislav Petkov, Juergen
Gross, Miguel Bernal Marin)"
* 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (70 commits)
locking/x86: Use LOCK ADD for smp_mb() instead of MFENCE
rcu: Use lockdep to assert IRQs are disabled/enabled
netpoll: Use lockdep to assert IRQs are disabled/enabled
timers/posix-cpu-timers: Use lockdep to assert IRQs are disabled/enabled
sched/clock, sched/cputime: Use lockdep to assert IRQs are disabled/enabled
irq_work: Use lockdep to assert IRQs are disabled/enabled
irq/timings: Use lockdep to assert IRQs are disabled/enabled
perf/core: Use lockdep to assert IRQs are disabled/enabled
x86: Use lockdep to assert IRQs are disabled/enabled
smp/core: Use lockdep to assert IRQs are disabled/enabled
timers/hrtimer: Use lockdep to assert IRQs are disabled/enabled
timers/nohz: Use lockdep to assert IRQs are disabled/enabled
workqueue: Use lockdep to assert IRQs are disabled/enabled
irq/softirqs: Use lockdep to assert IRQs are disabled/enabled
locking/lockdep: Add IRQs disabled/enabled assertion APIs: lockdep_assert_irqs_enabled()/disabled()
locking/pvqspinlock: Implement hybrid PV queued/unfair locks
locking/rwlocks: Fix comments
x86/paravirt: Set up the virt_spin_lock_key after static keys get initialized
block, locking/lockdep: Assign a lock_class per gendisk used for wait_for_completion()
workqueue: Remove now redundant lock acquisitions wrt. workqueue flushes
...
Diffstat (limited to 'drivers/edac')
| -rw-r--r-- | drivers/edac/altera_edac.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c index 346c4987b284..11d6419788c2 100644 --- a/drivers/edac/altera_edac.c +++ b/drivers/edac/altera_edac.c | |||
| @@ -175,11 +175,11 @@ static ssize_t altr_sdr_mc_err_inject_write(struct file *file, | |||
| 175 | /* | 175 | /* |
| 176 | * To trigger the error, we need to read the data back | 176 | * To trigger the error, we need to read the data back |
| 177 | * (the data was written with errors above). | 177 | * (the data was written with errors above). |
| 178 | * The ACCESS_ONCE macros and printk are used to prevent the | 178 | * The READ_ONCE macros and printk are used to prevent the |
| 179 | * the compiler optimizing these reads out. | 179 | * the compiler optimizing these reads out. |
| 180 | */ | 180 | */ |
| 181 | reg = ACCESS_ONCE(ptemp[0]); | 181 | reg = READ_ONCE(ptemp[0]); |
| 182 | read_reg = ACCESS_ONCE(ptemp[1]); | 182 | read_reg = READ_ONCE(ptemp[1]); |
| 183 | /* Force Read */ | 183 | /* Force Read */ |
| 184 | rmb(); | 184 | rmb(); |
| 185 | 185 | ||
| @@ -618,7 +618,7 @@ static ssize_t altr_edac_device_trig(struct file *file, | |||
| 618 | for (i = 0; i < (priv->trig_alloc_sz / sizeof(*ptemp)); i++) { | 618 | for (i = 0; i < (priv->trig_alloc_sz / sizeof(*ptemp)); i++) { |
| 619 | /* Read data so we're in the correct state */ | 619 | /* Read data so we're in the correct state */ |
| 620 | rmb(); | 620 | rmb(); |
| 621 | if (ACCESS_ONCE(ptemp[i])) | 621 | if (READ_ONCE(ptemp[i])) |
| 622 | result = -1; | 622 | result = -1; |
| 623 | /* Toggle Error bit (it is latched), leave ECC enabled */ | 623 | /* Toggle Error bit (it is latched), leave ECC enabled */ |
| 624 | writel(error_mask, (drvdata->base + priv->set_err_ofst)); | 624 | writel(error_mask, (drvdata->base + priv->set_err_ofst)); |
| @@ -635,7 +635,7 @@ static ssize_t altr_edac_device_trig(struct file *file, | |||
| 635 | 635 | ||
| 636 | /* Read out written data. ECC error caused here */ | 636 | /* Read out written data. ECC error caused here */ |
| 637 | for (i = 0; i < ALTR_TRIGGER_READ_WRD_CNT; i++) | 637 | for (i = 0; i < ALTR_TRIGGER_READ_WRD_CNT; i++) |
| 638 | if (ACCESS_ONCE(ptemp[i]) != i) | 638 | if (READ_ONCE(ptemp[i]) != i) |
| 639 | edac_printk(KERN_ERR, EDAC_DEVICE, | 639 | edac_printk(KERN_ERR, EDAC_DEVICE, |
| 640 | "Read doesn't match written data\n"); | 640 | "Read doesn't match written data\n"); |
| 641 | 641 | ||
