lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 09 Nov 2017 08:24:53 +0800 From: Ching Huang <ching2048@...ca.com.tw> To: martin.petersen@...cle.com, James.Bottomley@...senPartnership.com, linux-scsi@...r.kernel.org, linux-kernel@...r.kernel.org, jthumshirn@...e.de, hare@...e.de, dan.carpenter@...cle.com, hch@...radead.org Subject: [PATCH 10/13] scsi: arcmsr: fix clear doorbell queue on ACB_ADAPTER_TYPE_B controller From: Ching Huang <ching2048@...ca.com.tw> fix clear doorbell queue on ACB_ADAPTER_TYPE_B controller Signed-off-by: Ching Huang <ching2048@...ca.com.tw> --- diff -uprN a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c --- a/drivers/scsi/arcmsr/arcmsr_hba.c 2017-11-08 18:54:18.000000000 +0800 +++ b/drivers/scsi/arcmsr/arcmsr_hba.c 2017-11-08 18:54:58.000000000 +0800 @@ -4202,10 +4202,19 @@ static void arcmsr_clear_doorbell_queue_ case ACB_ADAPTER_TYPE_B: { struct MessageUnit_B *reg = acb->pmuB; - /*clear interrupt and message state*/ - writel(ARCMSR_MESSAGE_INT_CLEAR_PATTERN, reg->iop2drv_doorbell); + uint32_t outbound_doorbell, i; + writel(ARCMSR_DOORBELL_INT_CLEAR_PATTERN, reg->iop2drv_doorbell); writel(ARCMSR_DRV2IOP_DATA_READ_OK, reg->drv2iop_doorbell); /* let IOP know data has been read */ + for(i=0; i < 200; i++) { + msleep(20); + outbound_doorbell = readl(reg->iop2drv_doorbell); + if( outbound_doorbell & ARCMSR_IOP2DRV_DATA_WRITE_OK) { + writel(ARCMSR_DOORBELL_INT_CLEAR_PATTERN, reg->iop2drv_doorbell); + writel(ARCMSR_DRV2IOP_DATA_READ_OK, reg->drv2iop_doorbell); + } else + break; + } } break; case ACB_ADAPTER_TYPE_C: {
Powered by blists - more mailing lists