mbox series

[0/4] Add poll support for hisi_sas v3 hw

Message ID 1678169355-76215-1-git-send-email-chenxiang66@hisilicon.com (mailing list archive)
Headers show
Series Add poll support for hisi_sas v3 hw | expand

Message

chenxiang March 7, 2023, 6:09 a.m. UTC
From: Xiang Chen <chenxiang66@hisilicon.com>

To support IO_URING IOPOLL support for hisi_sas, need to do:
- Add and fill mq_poll interface to poll queue;
- For internal IOs (including internal abort IOs), need to deliver and 
complete them through non-iopoll queue (queue 0);

It only sends internal abort commands to non-poll queue which actually 
requires to send a internal abort command to every queue, so it still has
a risk. Make iopoll support module parameter as "experimental".

I have tested performance on v3 hw with different modes as following, and
it promotes much for 4K READ/WRITE when enabling poll momde:

			4K READ	    4K RANDREAD	    4K WRITE	4K RANDWRITE
interrupt + libaio	1770k	    1316k	    1197k	831k
interrupt + io_uring	1848k	    1390k	    1238k	857k
iopoll + io_uring	2117k	    1364k	    1874k	849k

Xiang Chen (4):
  scsi: hisi_sas: Add function complete_v3_hw()
  scsi: hisi_sas: Add poll support for v3 hw
  scsi: hisi_sas: Sync complete queue for poll queue
  scsi: hisi_sas: Add device attribute experimental_iopoll_q_cnt for v3
    hw

 drivers/scsi/hisi_sas/hisi_sas.h       |   6 +-
 drivers/scsi/hisi_sas/hisi_sas_main.c  |  95 ++++++++++++++++++++++--------
 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 102 +++++++++++++++++++++++++++++----
 3 files changed, 167 insertions(+), 36 deletions(-)

Comments

Martin K. Petersen March 10, 2023, 2:51 a.m. UTC | #1
chenxiang,

> To support IO_URING IOPOLL support for hisi_sas, need to do:
> - Add and fill mq_poll interface to poll queue;
> - For internal IOs (including internal abort IOs), need to deliver and 
> complete them through non-iopoll queue (queue 0);

Applied to 6.4/scsi-staging, thanks!
Martin K. Petersen March 17, 2023, 4:04 a.m. UTC | #2
On Tue, 07 Mar 2023 14:09:11 +0800, chenxiang wrote:

> To support IO_URING IOPOLL support for hisi_sas, need to do:
> - Add and fill mq_poll interface to poll queue;
> - For internal IOs (including internal abort IOs), need to deliver and
> complete them through non-iopoll queue (queue 0);
> 
> It only sends internal abort commands to non-poll queue which actually
> requires to send a internal abort command to every queue, so it still has
> a risk. Make iopoll support module parameter as "experimental".
> 
> [...]

Applied to 6.4/scsi-queue, thanks!

[1/4] scsi: hisi_sas: Add function complete_v3_hw()
      https://git.kernel.org/mkp/scsi/c/538a60468966
[2/4] scsi: hisi_sas: Add poll support for v3 hw
      https://git.kernel.org/mkp/scsi/c/0e47effa7706
[3/4] scsi: hisi_sas: Sync complete queue for poll queue
      https://git.kernel.org/mkp/scsi/c/b711ef5e176b
[4/4] scsi: hisi_sas: Add device attribute experimental_iopoll_q_cnt for v3 hw
      https://git.kernel.org/mkp/scsi/c/0c2fb1701155