From: Manoj Kumar <manoj@linux.vnet.ibm.com>
To: Brian King <brking@linux.vnet.ibm.com>,
"Matthew R. Ochs" <mrochs@linux.vnet.ibm.com>,
linux-scsi@vger.kernel.org,
James.Bottomley@HansenPartnership.com, nab@linux-iscsi.org,
hch@infradead.org
Cc: mikey@neuling.org, imunsie@au1.ibm.com
Subject: Re: [PATCH v5] cxlflash: Base support for IBM CXL Flash Adapter
Date: Mon, 08 Jun 2015 18:24:39 -0500 [thread overview]
Message-ID: <55762437.6060607@linux.vnet.ibm.com> (raw)
In-Reply-To: <55761DAF.9030203@linux.vnet.ibm.com>
Brian:
Thanks for the quick review. Comments below.
- Manoj
On 6/8/2015 5:56 PM, Brian King wrote:
>> +retry:
>> + newval = atomic64_dec_if_positive(&afu->room);
>> + if (!newval) {
>> + do {
>> + room = readq_be(&afu->host_map->cmd_room);
>> + atomic64_set(&afu->room, room);
>> + if (room)
>> + goto write_ioarrin;
>> + } while (nretry++ < MC_ROOM_RETRY_CNT);
>
> It looks like you removed the udelay here. Was that intentional?
Pulled out going to sleep in the queuecommand path.
>> +
>> + pr_err("%s: no cmd_room to send 0x%X\n",
>> + __func__, cmd->rcb.cdb[0]);
>> + rc = SCSI_MLQUEUE_HOST_BUSY;
>
> If you actually get here, how do you get out of this state? Since now afu->room is
> zero and anyone that comes through here will go to the else if leg.
This was the optimization to avoid the MMIO for both threads. The other
thread that raced should do the atomic set of afu->room to a positive value.
>> + goto out;
>> + } else if (unlikely(newval < 0)) {
>> + /* This should be rare. i.e. Only if two threads race and
>> + * decrement before the MMIO read is done. In this case
>> + * just benefit from the other thread having updated
>> + * afu->room.
>> + */
>> + if (nretry++ < MC_ROOM_RETRY_CNT)
>
> I'm guessing you'd want the udelay here as well.
Same reason as the queuecommand issue above.
next prev parent reply other threads:[~2015-06-08 23:24 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-08 22:30 [PATCH v5] cxlflash: Base support for IBM CXL Flash Adapter Matthew R. Ochs
2015-06-08 22:56 ` Brian King
2015-06-08 23:24 ` Manoj Kumar [this message]
2015-06-09 11:29 ` Brian King
2015-06-09 14:37 ` Manoj Kumar
2015-06-09 16:01 ` Matthew R. Ochs
2015-06-09 18:30 ` Brian King
2015-06-09 18:52 ` Matthew R. Ochs
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55762437.6060607@linux.vnet.ibm.com \
--to=manoj@linux.vnet.ibm.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=brking@linux.vnet.ibm.com \
--cc=hch@infradead.org \
--cc=imunsie@au1.ibm.com \
--cc=linux-scsi@vger.kernel.org \
--cc=mikey@neuling.org \
--cc=mrochs@linux.vnet.ibm.com \
--cc=nab@linux-iscsi.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox