| /linux/tools/memory-model/Documentation/ |
| H A D | glossary.txt | 1 This document contains brief definitions of LKMM-related terms. Like most 10 Address dependencies are quite common in RCU read-side critical 15 3 do_something(p->a); 18 In this case, because the address of "p->a" on line 3 is computed 21 "p->a". In rare cases, optimizing compilers can destroy address 28 using spin_lock(). With respect to a non-lock shared variable, 35 When an acquire load returns the value stored by a release store 37 from" the release store), the [all...] |
| H A D | recipes.txt | 20 ------------------------------------ 31 2. Compilers are permitted to use the "as-if" rule. That is, a 33 as long as the results of a single-threaded execution appear 41 your full-ordering warranty, as do undersized accesses that load 42 from or store to only part of the variable. 45 use READ_ONCE() and WRITE_ONCE() or stronger to prevent load/store 46 tearing, load/store fusing, and invented loads and stores. 51 holding the update-side lock, reads from that variable 62 ------- 66 locklessly accessing lock-protected shared variables. [all …]
|
| H A D | ordering.txt | 1 This document gives an overview of the categories of memory-ordering 2 operations provided by the Linux-kernel memory model (LKMM). 8 This section lists LKMM's three top-level categories of memory-ordering 38 b. Read-modify-write (RMW) ordering augmentation barriers. 56 -------------------- 58 The Linux-kernel primitives that provide full ordering include: 62 o Value-returning RMW atomic operations whose names do not end in 65 o RCU's grace-period primitives. 74 smp_mb(); // Order store to x before load from y. 77 All CPUs will agree that the store to "x" happened before the load [all …]
|
| H A D | explanation.txt | 1 Explanation of the Linux-Kernel Memory Consistency Model 15 7. THE PROGRAM ORDER RELATION: po AND po-loc 18 10. THE READS-FROM RELATION: rf, rfi, and rfe 20 12. THE FROM-READS RELATION: fr, fri, and fre 22 14. PROPAGATION ORDER RELATION: cumul-fence 28 20. THE HAPPENS-BEFORE RELATION: hb 29 21. THE PROPAGATES-BEFORE RELATION: pb 30 22. RCU RELATIONS: rcu-link, rcu-gp, rcu-rscsi, rcu-order, rcu-fence, and rb 31 23. SRCU READ-SIDE CRITICAL SECTIONS 39 ------------ [all …]
|
| /linux/Documentation/ |
| H A D | memory-barriers.txt | 19 documentation at tools/memory-model/. Nevertheless, even this memory 37 Note also that it is possible that a barrier may be a no-op for an 48 - Device operations. 49 - Guarantees. 53 - Varieties of memory barrier. 54 - What may not be assumed about memory barriers? 55 - Address-dependency barriers (historical). 56 - Control dependencies. 57 - SMP barrier pairing. 58 - Examples of memory barrier sequences. [all …]
|
| /linux/tools/memory-model/litmus-tests/ |
| H A D | README | 6 Test of read-read coherence, that is, whether or not two 10 Test of read-write coherence, that is, whether or not a read 15 Test of write-read coherence, that is, whether or not a write 20 Test of write-write coherence, that is, whether or not two 39 Tests whether the ordering provided by a lock-protected S 45 As below, but with store-release replaced with WRITE_ONCE() 46 and load-acquire replaced with READ_ONCE(). 49 Can a release-acquire chain order a prior store against 54 load-buffering litmus test, where each process reads from one 58 Does a release-acquire pair suffice for the load-buffering [all …]
|
| /linux/Documentation/translations/ko_KR/ |
| H A D | memory-barriers.txt | 2 This is a version of Documentation/memory-barriers.txt translated into Korean. 15 Documentation/memory-barriers.txt 39 일부 이상한 점들은 공식적인 메모리 일관성 모델과 tools/memory-model/ 에 있는 60 해당 배리어의 명시적 사용이 불필요해서 no-op 이 될수도 있음을 알아두시기 76 - 디바이스 오퍼레이션. 77 - 보장사항. 81 - 메모리 배리어의 종류. 82 - 메모리 배리어에 대해 가정해선 안될 것. 83 - 주소 데이터 의존성 배리어 (역사적). 84 - 컨트롤 의존성. [all …]
|
| /linux/Documentation/translations/sp_SP/ |
| H A D | memory-barriers.txt | 2 This is a version of Documentation/memory-barriers.txt translated into 35 consistencia de memoria formal y documentación en tools/memory-model/. Sin 53 Tenga en cuenta también que es posible que una barrera no valga (sea no-op) 63 - Operaciones del dispositivo. 64 - Garantías. 68 - Variedades de barrera de memoria. 69 - ¿Qué no se puede asumir sobre las barreras de memoria? 70 - Barreras de dirección-dependencia (históricas). 71 - Dependencias de control. 72 - Emparejamiento de barreras smp. [all …]
|
| /linux/rust/kernel/sync/atomic/ |
| H A D | ordering.rs | 1 // SPDX-License-Identifier: GPL-2.0 7 //! - [`Acquire`] provides ordering between the load part of the annotated operation and all the 8 //! following memory accesses, and if there is a store part, the store part has the [`Relaxed`] 10 //! - [`Release`] provides ordering between all the preceding memory accesses and the store part of 13 //! - [`Full`] means "fully-ordered", that is: 14 //! - It provides ordering between all the preceding memory accesses and the annotated operation. 15 //! - It provides ordering between the annotated operation and all the following memory accesses. 16 //! - It provides ordering between all the preceding memory accesses and all the following memory 18 //! - All the orderings are the same strength as a full memory barrier (i.e. `smp_mb()`). 19 //! - [`Relaxed`] provides no ordering except the dependency orderings. Dependency orderings are [all …]
|
| /linux/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/ |
| H A D | spec_operation.json | 28 …"PublicDescription": "Counts Load-Exclusive operations that have been speculatively executed. Eg: … 32 …cDescription": "Counts store-exclusive operations that have been speculatively executed and have s… 36 …escription": "Counts store-exclusive operations that have been speculatively executed and have not… 40 … "PublicDescription": "Counts store-exclusive operations that have been speculatively executed." 48 …iption": "Counts speculatively executed store operations including Single Instruction Multiple Dat… 56 …s speculatively executed Advanced SIMD operations excluding load, store and move micro-operations … 80 …udes operations that force a software change of the PC, other than exception-generating operations… 88 …"PublicDescription": "Counts DSB operations that are speculatively issued to Load/Store unit in th… 92 …latively issued to the Load/Store unit in the CPU. This event does not count implied barriers from… 100 …"PublicDescription": "Counts any store release operations that are speculatively executed. Eg: STL…
|
| /linux/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/ |
| H A D | spec_operation.json | 16 …"PublicDescription": "Counts micro-operations speculatively executed. This is the count of the num… 32 …"PublicDescription": "Counts Load-Exclusive operations that have been speculatively executed. Eg: … 36 …cDescription": "Counts store-exclusive operations that have been speculatively executed and have s… 40 …escription": "Counts store-exclusive operations that have been speculatively executed and have not… 44 … "PublicDescription": "Counts store-exclusive operations that have been speculatively executed." 52 …iption": "Counts speculatively executed store operations including Single Instruction Multiple Dat… 60 …s speculatively executed Advanced SIMD operations excluding load, store and move micro-operations … 84 …udes operations that force a software change of the PC, other than exception-generating operations… 92 …"PublicDescription": "Counts DSB operations that are speculatively issued to Load/Store unit in th… 96 …latively issued to the Load/Store unit in the CPU. This event does not count implied barriers from… [all …]
|
| /linux/drivers/edac/ |
| H A D | edac_pci_sysfs.c | 23 static int edac_pci_log_npe = 1; /* log PCI non-parity error errors */ 61 return sprintf(data, "%u\n", atomic_read(&pci->counters.pe_count)); in instance_pe_count_show() 67 return sprintf(data, "%u\n", atomic_read(&pci->counters.npe_count)); in instance_npe_count_show() 73 /* DEVICE instance kobject release() function */ 93 ssize_t(*store) (struct edac_pci_ctl_info *, const char *, size_t); member 103 if (instance_attr->show) in edac_pci_instance_show() 104 return instance_attr->show(pci, buffer); in edac_pci_instance_show() 105 return -EIO; in edac_pci_instance_show() 108 /* Function to 'store' fields into the edac_pci 'instance' structure */ 116 if (instance_attr->store) in edac_pci_instance_store() [all …]
|
| H A D | edac_device_sysfs.c | 28 * Set of edac_device_ctl_info attribute store/show functions 35 return sprintf(data, "%u\n", ctl_info->log_ue); in edac_device_ctl_log_ue_show() 42 /* if parameter is zero, turn off flag, if non-zero turn on flag */ in edac_device_ctl_log_ue_store() 43 ctl_info->log_ue = (simple_strtoul(data, NULL, 0) != 0); in edac_device_ctl_log_ue_store() 52 return sprintf(data, "%u\n", ctl_info->log_ce); in edac_device_ctl_log_ce_show() 59 /* if parameter is zero, turn off flag, if non-zero turn on flag */ in edac_device_ctl_log_ce_store() 60 ctl_info->log_ce = (simple_strtoul(data, NULL, 0) != 0); in edac_device_ctl_log_ce_store() 69 return sprintf(data, "%u\n", ctl_info->panic_on_ue); in edac_device_ctl_panic_on_ue_show() 76 /* if parameter is zero, turn off flag, if non-zero turn on flag */ in edac_device_ctl_panic_on_ue_store() 77 ctl_info->panic_on_ue = (simple_strtoul(data, NULL, 0) != 0); in edac_device_ctl_panic_on_ue_store() [all …]
|
| /linux/arch/arm64/net/ |
| H A D | bpf_jit.h | 1 /* SPDX-License-Identifier: GPL-2.0-only */ 5 * Copyright (C) 2014-2016 Zi Shen Lim <zlim.lnx@gmail.com> 12 /* 5-bit Register Operand */ 55 /* Load/store register (register offset) */ 60 #define A64_STRB(Wt, Xn, Xm) A64_LS_REG(Wt, Xn, Xm, 8, STORE) 63 #define A64_STRH(Wt, Xn, Xm) A64_LS_REG(Wt, Xn, Xm, 16, STORE) 66 #define A64_STR32(Wt, Xn, Xm) A64_LS_REG(Wt, Xn, Xm, 32, STORE) 69 #define A64_STR64(Xt, Xn, Xm) A64_LS_REG(Xt, Xn, Xm, 64, STORE) 72 /* Load/store register (immediate offset) */ 77 #define A64_STRBI(Wt, Xn, imm) A64_LS_IMM(Wt, Xn, imm, 8, STORE) [all …]
|
| /linux/include/linux/ |
| H A D | atomic.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 15 * - Fully ordered: The default implementation, no suffix required. 16 * - Acquire: Provides ACQUIRE semantics, _acquire suffix. 17 * - Release: Provides RELEASE semantics, _release suffix. 18 * - Relaxed: No ordering guarantees, _relaxed suffix. 20 * For compound atomics performing both a load and a store, ACQUIRE 21 * semantics apply only to the load and RELEASE semantics only to the 22 * store portion of the operation. Note that a failed cmpxchg_acquire 23 * does -not- imply any memory ordering constraints. 25 * See Documentation/memory-barriers.txt for ACQUIRE/RELEASE definitions. [all …]
|
| H A D | iscsi_boot_sysfs.h | 1 /* SPDX-License-Identifier: GPL-2.0-only */ 27 /* eth_pci_bdf - this is replaced by link to the device itself. */ 73 * Pointer to store driver specific info. If set this will 74 * be freed for the LLD when the kobj release function is called. 96 * Driver specific release function. 100 void (*release) (void *data); member 113 void (*release) (void *data)); 120 void (*release) (void *data)); 126 void (*release) (void *data)); 133 void (*release)(void *data));
|
| /linux/samples/kobject/ |
| H A D | kset-example.c | 1 // SPDX-License-Identifier: GPL-2.0 5 * Copyright (C) 2004-2007 Greg Kroah-Hartman <greg@kroah.com> 41 ssize_t (*store)(struct foo_obj *foo, const struct foo_attribute *attr, member 63 if (!attribute->show) in foo_attr_show() 64 return -EIO; in foo_attr_show() 66 return attribute->show(foo, attribute, buf); in foo_attr_show() 71 * sysfs "store" is requested (when a value is written to a file.) 83 if (!attribute->store) in foo_attr_store() 84 return -EIO; in foo_attr_store() 86 return attribute->store(foo, attribute, buf, len); in foo_attr_store() [all …]
|
| /linux/arch/powerpc/kernel/ |
| H A D | mce.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 52 mce->error_type = mce_err->error_type; in mce_set_error_info() 53 switch (mce_err->error_type) { in mce_set_error_info() 55 mce->u.ue_error.ue_error_type = mce_err->u.ue_error_type; in mce_set_error_info() 58 mce->u.slb_error.slb_error_type = mce_err->u.slb_error_type; in mce_set_error_info() 61 mce->u.erat_error.erat_error_type = mce_err->u.erat_error_type; in mce_set_error_info() 64 mce->u.tlb_error.tlb_error_type = mce_err->u.tlb_error_type; in mce_set_error_info() 67 mce->u.user_error.user_error_type = mce_err->u.user_error_type; in mce_set_error_info() 70 mce->u.ra_error.ra_error_type = mce_err->u.ra_error_type; in mce_set_error_info() 73 mce->u.link_error.link_error_type = mce_err->u.link_error_type; in mce_set_error_info() [all …]
|
| /linux/drivers/s390/char/ |
| H A D | sclp_sd.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * SCLP Store Data support and sysfs interface 53 * struct sclp_sd_data - Result of a Store Data request 56 * @data: Pointer to data - must be released using vfree() 65 * struct sclp_sd_listener - Listener for asynchronous Store Data response 69 * @evbuf: Contains the resulting Store Data response after completion 79 * struct sclp_sd_file - Sysfs representation of a Store Data entity 102 * sclp_sd_listener_add() - Add listener for Store Data responses 108 list_add_tail(&listener->list, &sclp_sd_queue); in sclp_sd_listener_add() 113 * sclp_sd_listener_remove() - Remove listener for Store Data responses [all …]
|
| /linux/drivers/powercap/ |
| H A D | powercap_sys.c | 1 // SPDX-License-Identifier: GPL-2.0-only 25 ssize_t len = -EINVAL; \ 28 if (power_zone->ops->get_##_attr) { \ 29 if (!power_zone->ops->get_##_attr(power_zone, &value)) \ 48 return -EINVAL; \ 51 if (power_zone->ops->reset_##_attr) { \ 52 if (!power_zone->ops->reset_##_attr(power_zone)) \ 56 return -EINVAL; \ 66 ssize_t len = -ENODATA; \ 71 if (!sscanf(dev_attr->attr.name, "constraint_%d_", &id)) \ [all …]
|
| /linux/fs/xfs/ |
| H A D | xfs_mru_cache.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Copyright (c) 2006-2007 Silicon Graphics, Inc. 10 * The MRU Cache data structure consists of a data store, an array of lists and 29 * inserted at the head of the current most-recently-used list. 37 * to remain in the data store even after they've been inactive for up to 78 * both the data store and to one of the lists. It must also be possible to 81 * a) Walk a list, removing the corresponding data store entry for each item. 82 * b) Look up a data store entry, then access its list entry directly. 88 * likely result in a loop in one of the lists. That's a sure-fire recipe for 92 struct radix_tree_root store; /* Core storage data structure. */ member [all …]
|
| H A D | xfs_sysfs.c | 1 // SPDX-License-Identifier: GPL-2.0 21 ssize_t (*store)(struct kobject *kobject, const char *buf, member 48 return xfs_attr->show ? xfs_attr->show(kobject, buf) : 0; in xfs_sysfs_object_show() 60 return xfs_attr->store ? xfs_attr->store(kobject, buf, count) : 0; in xfs_sysfs_object_store() 65 .store = xfs_sysfs_object_store, 74 .release = xfs_sysfs_release, 100 return -EINVAL; in bug_on_assert_store() 128 return -EINVAL; in log_recovery_delay_store() 158 return -EINVAL; in mount_delay_store() 199 * This has to be a debug-only global (instead of an errortag) because one of [all …]
|
| /linux/arch/powerpc/platforms/pseries/ |
| H A D | vas-sysfs.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * Copyright 2022-23 IBM Corp. 48 err = vas_reconfig_capabilties(caps->win_type, creds); in update_total_credits_store() 51 return -EINVAL; in update_total_credits_store() 61 return sprintf(buf, "%d\n", atomic_read(&caps->_name)); \ 67 ssize_t (*store)(struct vas_cop_feat_caps *, const char *, size_t); member 129 caps = centry->caps; in vas_type_show() 132 if (!entry->show) in vas_type_show() 133 return -EIO; in vas_type_show() 135 return entry->show(caps, buf); in vas_type_show() [all …]
|
| /linux/fs/afs/ |
| H A D | afs_fs.h | 1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 18 FSSTOREDATA = 133, /* AFS Store file data */ 19 FSSTOREACL = 134, /* AFS Store file ACL */ 20 FSSTORESTATUS = 135, /* AFS Store file status */ 35 FSRELEASELOCK = 158, /* AFS Release a file lock */ 39 FSSTOREDATA64 = 65538, /* AFS Store file data */ 45 VRESTARTING = -100, /* Server is restarting */ 51 VOFFLINE = 106, /* volume is currently offline (more info available [VVL-spec]) */ 56 VMOVED = 111, /* volume moved to new server - ask this FS where */
|
| /linux/tools/testing/selftests/rseq/ |
| H A D | rseq-ppc-bits.h | 1 /* SPDX-License-Identifier: LGPL-2.1 OR MIT */ 3 * rseq-ppc-bits.h 5 * (C) Copyright 2016-2018 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com> 6 * (C) Copyright 2016-2018 - Boqun Feng <boqun.feng@gmail.com> 9 #include "rseq-bits-template.h" 40 /* final store */ in RSEQ_TEMPLATE_IDENTIFIER() 46 [current_cpu_id] "m" (rseq_get_abi()->RSEQ_TEMPLATE_CPU_ID_FIELD), in RSEQ_TEMPLATE_IDENTIFIER() 47 [rseq_cs] "m" (rseq_get_abi()->rseq_cs.arch.ptr), in RSEQ_TEMPLATE_IDENTIFIER() 64 return -1; in RSEQ_TEMPLATE_IDENTIFIER() 107 /* store it in @load */ in RSEQ_TEMPLATE_IDENTIFIER() [all …]
|