From: Tomas Henzl <thenzl@redhat.com>
To: Kashyap Desai <kashyap.desai@avagotech.com>, linux-scsi@vger.kernel.org
Cc: Sumit Saxena <sumit.saxena@avagotech.com>,
Uday Lingala <uday.lingala@avagotech.com>
Subject: Re: megaraid_sas: add an i/o barrier
Date: Mon, 1 Feb 2016 13:53:25 +0100 [thread overview]
Message-ID: <56AF5545.3050707@redhat.com> (raw)
In-Reply-To: <5955d77ec60a460d09e5480cf7928177@mail.gmail.com>
On 1.2.2016 05:45, Kashyap Desai wrote:
>> -----Original Message-----
>> From: Tomas Henzl [mailto:thenzl@redhat.com]
>> Sent: Friday, January 29, 2016 11:05 PM
>> To: 'linux-scsi@vger.kernel.org'
>> Cc: Sumit.Saxena@avagotech.com; Desai, Kashyap; Uday Lingala
>> Subject: megaraid_sas: add an i/o barrier
>>
>> A barrier should be added to ensure proper ordering of memory mapped
>> writes.
>>
>> Signed-off-by: Tomas Henzl <thenzl@redhat.com>
>> ---
>> drivers/scsi/megaraid/megaraid_sas_fusion.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c
>> b/drivers/scsi/megaraid/megaraid_sas_fusion.c
>> index d9d0029fb1..98a848bdfd 100644
>> --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
>> +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
>> @@ -204,6 +204,7 @@ megasas_fire_cmd_fusion(struct
>> megasas_instance *instance,
>> &instance->reg_set->inbound_low_queue_port);
>> writel(le32_to_cpu(req_desc->u.high),
>> &instance->reg_set->inbound_high_queue_port);
>> + mmiowb();
>> spin_unlock_irqrestore(&instance->hba_lock, flags); #endif }
> Tomas-
>
> We may need similar changes around below Functions as well, because there is
> no associated readX or mmiowb() call.
> megasas_fire_cmd_xscale()
> megasas_fire_cmd_ppc()
> megasas_fire_cmd_skinny()
> megasas_fire_cmd_gen2()
>
> Also, wrireq() routine in same function megasas_fire_cmd_fusion() need i/o
> barrier.
I don't think so (with the exception of megasas_fire_cmd_skinny - I missed this one).
When two threads try to use a fire_cmd there is no protection of certain ordering,
that had to be done in a caller of fire_cmd (for example in megasas_build_and_issue_cmd_fusion)
and it seems to me that there is nothing like that. Likely is, that this - a strict ordering
of commands - is not needed.
The protection which I'm adding is needed when a command consist of a sequence of more
than one write, see memory-barriers.txt.
(It looks to me that
megasas_fire_cmd_ -xscale -ppc -skiny -gen2 do not need the hba_lock unless there is another
i/o sequence protected with the same lock (note also that there is
no such lock in megasas_fire_cmd_fusion).)
I'll add the mmiowb to megasas_fire_cmd_skinny and send a new patch - agreed?
--tms
>
>> --
>> 2.4.3
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-02-01 12:53 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-29 17:35 megaraid_sas: add an i/o barrier Tomas Henzl
2016-02-01 4:45 ` Kashyap Desai
2016-02-01 12:53 ` Tomas Henzl [this message]
2016-02-01 13:24 ` Kashyap Desai
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=56AF5545.3050707@redhat.com \
--to=thenzl@redhat.com \
--cc=kashyap.desai@avagotech.com \
--cc=linux-scsi@vger.kernel.org \
--cc=sumit.saxena@avagotech.com \
--cc=uday.lingala@avagotech.com \
/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;
as well as URLs for NNTP newsgroup(s).