Defined in 1 files as a function:

Referenced in 2 files:

Smatch caller information:

drivers/scsi/pm8001/pm8001_hwi.c pm8001_mpi_msg_consume() -> pm8001_read_32()

Type Parameter Key Value
PARAM_VALUE 0 virt_addr 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &circularQ->oq_lock
HALF_LOCKED2 &pm8001_ha->lock
HALF_LOCKED2 circularQ->lock_flags
HALF_LOCKED2 flags

drivers/scsi/pm8001/pm8001_hwi.c pm8001_mpi_msg_consume() -> pm8001_read_32()

Type Parameter Key Value
PARAM_VALUE 0 virt_addr 1-u64max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &circularQ->oq_lock
HALF_LOCKED2 &pm8001_ha->lock
HALF_LOCKED2 circularQ->lock_flags
HALF_LOCKED2 flags

drivers/scsi/pm8001/pm8001_hwi.c pm8001_mpi_msg_free_get() -> pm8001_read_32()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &circularQ->iq_lock
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 &pm8001_ha->lock
HALF_LOCKED2 flags
TYPE_LOCK (struct inbound_queue_table)->iq_lock

drivers/scsi/pm8001/pm8001_hwi.c pm8001_mpi_msg_free_set() -> pm8001_read_32()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &circularQ->oq_lock
HALF_LOCKED2 &pm8001_ha->lock
HALF_LOCKED2 circularQ->lock_flags
HALF_LOCKED2 flags

drivers/scsi/pm8001/pm8001_hwi.c pm8001_mpi_msg_free_set() -> pm8001_read_32()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &circularQ->oq_lock
HALF_LOCKED2 &pm8001_ha->lock
HALF_LOCKED2 circularQ->lock_flags
HALF_LOCKED2 flags

drivers/scsi/pm8001/pm8001_hwi.c process_oq() -> pm8001_read_32()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &pm8001_ha->lock
LOCK2 flags
TYPE_LOCK (struct pm8001_hba_info)->lock

drivers/scsi/pm8001/pm80xx_hwi.c process_oq() -> pm8001_read_32()

Type Parameter Key Value
PARAM_VALUE 0 virt_addr 1-u64max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &circularQ->oq_lock
LOCK2 circularQ->lock_flags
TYPE_LOCK (struct outbound_queue_table)->oq_lock