/linux/tools/memory-model/ |
H A D | linux-kernel.def | 14 smp_load_acquire(X) __load{acquire}(*X) 34 xchg_acquire(X,V) __xchg{acquire}(X,V) 37 cmpxchg_acquire(X,V,W) __cmpxchg{acquire}(X,V,W) 73 atomic_add_return_acquire(V,X) __atomic_op_return{acquire}(X,+,V) 77 atomic_fetch_add_acquire(V,X) __atomic_fetch_op{acquire}(X,+,V) 82 atomic_inc_return_acquire(X) __atomic_op_return{acquire}(X,+,1) 86 atomic_fetch_inc_acquire(X) __atomic_fetch_op{acquire}(X,+,1) 91 atomic_sub_return_acquire(V,X) __atomic_op_return{acquire}(X,-,V) 95 atomic_fetch_sub_acquire(V,X) __atomic_fetch_op{acquire}(X,-,V) 100 atomic_dec_return_acquire(X) __atomic_op_return{acquire}(X,-,1) [all …]
|
H A D | linux-kernel.bell | 18 'acquire (*smp_load_acquire*) || 20 instructions R[{'once,'acquire,'noreturn}] 22 instructions RMW[{'once,'acquire,'release}]
|
/linux/tools/memory-model/litmus-tests/ |
H A D | ISA2+pooncerelease+poacquirerelease+poacquireonce.litmus | 6 * This litmus test demonstrates that a release-acquire chain suffices 8 * that the release-acquire chain suffices is because in all but one 11 * (AKA non-rf) link, so release-acquire is all that is needed.
|
H A D | README | 46 and load-acquire replaced with READ_ONCE(). 49 Can a release-acquire chain order a prior store against 58 Does a release-acquire pair suffice for the load-buffering 64 and load-acquire replaced with READ_ONCE(). 75 in one process, and use an acquire load followed by a pair of 80 acquire load followed by a pair of spin_is_locked() calls 91 As below, but with a release-acquire chain. 134 As below, but without the smp_wmb() and acquire load. 137 Can a smp_wmb(), instead of a release, and an acquire order 157 Is the ordering provided by a release-acquire chain sufficient [all …]
|
H A D | S+fencewmbonceonce+poacquireonce.litmus | 6 * Can a smp_wmb(), instead of a release, and an acquire order a prior
|
H A D | LB+poacquireonce+pooncerelease.litmus | 6 * Does a release-acquire pair suffice for the load-buffering litmus
|
/linux/Documentation/litmus-tests/atomic/ |
H A D | cmpxchg-fail-unordered-2.litmus | 7 * an acquire release operation. (In contrast, a successful cmpxchg() 8 * does act as both an acquire and a release operation.)
|
H A D | Atomic-RMW+mb__after_atomic-is-stronger-than-acquire.litmus | 1 C Atomic-RMW+mb__after_atomic-is-stronger-than-acquire 7 * stronger than a normal acquire: both the read and write parts of
|
H A D | cmpxchg-fail-ordered-2.litmus | 7 * operation have acquire ordering.
|
/linux/Documentation/locking/ |
H A D | futex-requeue-pi.rst | 91 to be able to acquire the rt_mutex before returning to user space. 93 acquire the rt_mutex as it would open a race window between the 99 allow the requeue code to acquire an uncontended rt_mutex on behalf 115 requeueing, futex_requeue() attempts to acquire the requeue target 127 tasks as it can acquire the lock for, which in the majority of cases 129 either pthread_cond_broadcast() or pthread_cond_signal() acquire the
|
H A D | ww-mutex-design.rst | 64 trying to acquire locks doesn't grab a new reservation id, but keeps the one it 66 acquire context. Furthermore the acquire context keeps track of debugging state 67 to catch w/w mutex interface abuse. An acquire context is representing a 71 w/w mutexes, since it is required to initialize the acquire context. The lock 74 Furthermore there are three different class of w/w lock acquire functions: 99 * Functions to only acquire a single w/w mutex, which results in the exact same 103 Again this is not strictly required. But often you only want to acquire a 104 single lock in which case it's pointless to set up an acquire context (and so 119 Three different ways to acquire locks within the same w/w class. Common 344 (1) Waiters with an acquire context are sorted by stamp order; waiters [all …]
|
H A D | mutex-design.rst | 40 (i) fastpath: tries to atomically acquire the lock by cmpxchg()ing the owner with 54 to acquire the lock spinning on a local variable. It avoids expensive 97 - Point-of-acquire tracking, symbolic lookup of function names, 115 acquire the mutex and assume that the mutex_unlock() context is not using
|
/linux/Documentation/litmus-tests/ |
H A D | README | 15 Atomic-RMW+mb__after_atomic-is-stronger-than-acquire.litmus 17 stronger than a normal acquire: both the read and write parts of 29 Demonstrate that a failing cmpxchg() operation acts as an acquire 38 acquire operation.
|
/linux/drivers/net/ethernet/broadcom/bnx2x/ |
H A D | bnx2x_vfpf.c | 226 struct vfpf_acquire_tlv *req = &bp->vf2pf_mbox->req.acquire; in bnx2x_vfpf_acquire() 1365 struct vfpf_acquire_tlv *acquire) in bnx2x_vf_mbx_is_windows_vm() argument 1372 if (!acquire->bulletin_addr || in bnx2x_vf_mbx_is_windows_vm() 1373 acquire->resc_request.num_mc_filters == 32 || in bnx2x_vf_mbx_is_windows_vm() 1374 ((acquire->vfdev_info.vf_os & VF_OS_MASK) == in bnx2x_vf_mbx_is_windows_vm() 1393 if (bnx2x_vf_mbx_is_windows_vm(bp, &mbx->msg->req.acquire)) in bnx2x_vf_mbx_acquire_chk_dorq() 1403 struct vfpf_acquire_tlv *acquire = &mbx->msg->req.acquire; in bnx2x_vf_mbx_acquire() local 1408 vf->abs_vfid, acquire->vfdev_info.vf_id, acquire->vfdev_info.vf_os, in bnx2x_vf_mbx_acquire() 1409 acquire->resc_request.num_rxqs, acquire->resc_request.num_txqs, in bnx2x_vf_mbx_acquire() 1410 acquire->resc_request.num_sbs, acquire->resc_request.num_mac_filters, in bnx2x_vf_mbx_acquire() [all …]
|
/linux/drivers/net/ethernet/intel/igc/ |
H A D | igc_i225.c | 201 status = hw->nvm.ops.acquire(hw); in igc_read_nvm_srrd_i225() 299 status = hw->nvm.ops.acquire(hw); in igc_write_nvm_srwr_i225() 325 status = hw->nvm.ops.acquire(hw); in igc_validate_nvm_checksum_i225() 420 ret_val = hw->nvm.ops.acquire(hw); in igc_update_nvm_checksum_i225() 479 nvm->ops.acquire = igc_acquire_nvm_i225; in igc_init_nvm_params_i225()
|
/linux/tools/memory-model/Documentation/ |
H A D | herd-representation.txt | 34 | smp_load_acquire | R[acquire] | 82 | atomic_add_return_acquire | R*[acquire] ->rmw W*[once] | 104 | atomic_cmpxchg_acquire | On success: R*[acquire] ->rmw W*[once] |
|
H A D | glossary.txt | 31 An example special acquire operation is smp_load_acquire(), 33 acquire loads. 35 When an acquire load returns the value stored by a release store 36 to that same variable, (in other words, the acquire load "reads 38 store "happen before" any operations following that load acquire.
|
H A D | recipes.txt | 195 load buffering, release-acquire chains, store buffering. 213 Release and acquire 237 The init_stack_slab() function in lib/stackdepot.c uses release-acquire 405 Release-acquire chains 408 Release-acquire chains are a low-overhead, flexible, and easy-to-use 464 is that in this version, CPU2() is not part of the release-acquire chain. 467 Despite this limitation, release-acquire chains are low-overhead as 559 release-acquire chain suffices. Both the MP and the ISA2 566 locking and in the release-acquire sections.
|
/linux/drivers/net/ethernet/intel/e1000e/ |
H A D | phy.c | 292 ret_val = hw->phy.ops.acquire(hw); in e1000e_read_phy_reg_m88() 317 ret_val = hw->phy.ops.acquire(hw); in e1000e_write_phy_reg_m88() 364 if (!hw->phy.ops.acquire) in __e1000e_read_phy_reg_igp() 367 ret_val = hw->phy.ops.acquire(hw); in __e1000e_read_phy_reg_igp() 431 if (!hw->phy.ops.acquire) in __e1000e_write_phy_reg_igp() 434 ret_val = hw->phy.ops.acquire(hw); in __e1000e_write_phy_reg_igp() 499 if (!hw->phy.ops.acquire) in __e1000_read_kmrn_reg() 502 ret_val = hw->phy.ops.acquire(hw); in __e1000_read_kmrn_reg() 572 if (!hw->phy.ops.acquire) in __e1000_write_kmrn_reg() 575 ret_val = hw->phy.ops.acquire(hw); in __e1000_write_kmrn_reg() [all …]
|
H A D | ich8lan.c | 216 hw->phy.ops.acquire(hw); in e1000_phy_is_accessible_pchlan() 314 ret_val = hw->phy.ops.acquire(hw); in e1000_init_phy_workarounds_pchlan() 861 ret_val = hw->phy.ops.acquire(hw); in e1000_set_eee_pchlan() 947 ret_val = hw->phy.ops.acquire(hw); in e1000_k1_workaround_lpt_lp() 1204 ret_val = hw->phy.ops.acquire(hw); in e1000_enable_ulp_lpt_lp() 1361 ret_val = hw->phy.ops.acquire(hw); in e1000_disable_ulp_lpt_lp() 1515 ret_val = hw->phy.ops.acquire(hw); in e1000_check_for_copper_link_ich8lan() 1556 ret_val = hw->phy.ops.acquire(hw); in e1000_check_for_copper_link_ich8lan() 1581 ret_val = hw->phy.ops.acquire(hw); in e1000_check_for_copper_link_ich8lan() 2213 ret_val = hw->phy.ops.acquire(hw); in e1000_sw_lcd_config_ich8lan() [all …]
|
/linux/drivers/net/ethernet/intel/igb/ |
H A D | e1000_i210.c | 200 if (!(hw->nvm.ops.acquire(hw))) { in igb_read_nvm_srrd_i210() 300 if (!(hw->nvm.ops.acquire(hw))) { in igb_write_nvm_srwr_i210() 544 if (!(hw->nvm.ops.acquire(hw))) { in igb_validate_nvm_checksum_i210() 590 if (!(hw->nvm.ops.acquire(hw))) { in igb_update_nvm_checksum_i210() 798 nvm->ops.acquire = igb_acquire_nvm_i210; in igb_init_nvm_params_i210()
|
/linux/Documentation/networking/ |
H A D | xfrm_sysctl.rst | 11 default 30 - hard timeout in seconds for acquire requests
|
/linux/drivers/media/dvb-frontends/ |
H A D | as102_fe.h | 14 int (*stream_ctrl)(void *priv, int acquire, uint32_t elna_cfg);
|
/linux/drivers/gpu/drm/nouveau/include/nvkm/core/ |
H A D | memory.h | 37 void __iomem *(*acquire)(struct nvkm_memory *); member 73 #define nvkm_kmap(o) (o)->func->acquire(o)
|
/linux/Documentation/RCU/ |
H A D | UP.rst | 60 callback function must acquire this same lock. In this case, if 129 like spin_lock_bh() to acquire the lock. Please note that 140 callbacks acquire locks directly. However, a great many RCU 141 callbacks do acquire locks *indirectly*, for example, via
|