IB/rdmavt: Correct issues with read-mostly and send size cache lines
The s_ahgpsn was incorrectly placed in the read-mostly section of the QP and the s_curr_size and s_hdrwords are oversized. The misplaced s_ahgpsn will cause the read-mostly cachelines to thrash. Place s_ahgpsn in the send side cache lines and correctly size and s_hdrwords and s_cur_size to keep the send side cachelines at the same size. Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Sebastian Sanchez <sebastian.sanchez@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
Родитель
a917374e8a
Коммит
7ebfc93edc
|
@ -8739,7 +8739,7 @@ static int set_physical_link_state(struct hfi1_devdata *dd, u64 state)
|
|||
return do_8051_command(dd, HCMD_CHANGE_PHY_STATE, state, NULL);
|
||||
}
|
||||
|
||||
int _load_8051_config(struct hfi1_devdata *dd, u8 field_id,
|
||||
static int _load_8051_config(struct hfi1_devdata *dd, u8 field_id,
|
||||
u8 lane_id, u32 config_data)
|
||||
{
|
||||
u64 data;
|
||||
|
|
|
@ -282,7 +282,6 @@ struct rvt_qp {
|
|||
u32 remote_qpn;
|
||||
u32 qkey; /* QKEY for this QP (for UD or RD) */
|
||||
u32 s_size; /* send work queue size */
|
||||
u32 s_ahgpsn; /* set to the psn in the copy of the header */
|
||||
|
||||
u16 pmtu; /* decoded from path_mtu */
|
||||
u8 log_pmtu; /* shift for pmtu */
|
||||
|
@ -344,7 +343,6 @@ struct rvt_qp {
|
|||
struct rvt_swqe *s_wqe;
|
||||
struct rvt_sge_state s_sge; /* current send request data */
|
||||
struct rvt_mregion *s_rdma_mr;
|
||||
u32 s_cur_size; /* size of send packet in bytes */
|
||||
u32 s_len; /* total length of s_sge */
|
||||
u32 s_rdma_read_len; /* total length of s_rdma_read_sge */
|
||||
u32 s_last_psn; /* last response PSN processed */
|
||||
|
@ -358,8 +356,10 @@ struct rvt_qp {
|
|||
u32 s_acked; /* last un-ACK'ed entry */
|
||||
u32 s_last; /* last completed entry */
|
||||
u32 s_lsn; /* limit sequence number (credit) */
|
||||
u16 s_hdrwords; /* size of s_hdr in 32 bit words */
|
||||
u32 s_ahgpsn; /* set to the psn in the copy of the header */
|
||||
u16 s_cur_size; /* size of send packet in bytes */
|
||||
u16 s_rdma_ack_cnt;
|
||||
u8 s_hdrwords; /* size of s_hdr in 32 bit words */
|
||||
s8 s_ahgidx;
|
||||
u8 s_state; /* opcode of last packet sent */
|
||||
u8 s_ack_state; /* opcode of packet to ACK */
|
||||
|
|
Загрузка…
Ссылка в новой задаче