mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 10:49:33 +00:00
megaraid_sas : Use writeq for 64bit pci write to avoid spinlock overhead
Resending the patch. Addressed the review comments from Tomas Henzl. Reduce the assingment for u64 req_data variable. Use writeq() for 64bit PCI write instead of writel() to avoid additional lock overhead. Signed-off-by: Sumit Saxena <sumit.saxena@avagotech.com> Signed-off-by: Kashyap Desai <kashyap.desai@avagotech.com> Reviewed-by: Tomas Henzl <thenzl@redhat.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
07e38d94ef
commit
0756040952
1 changed files with 6 additions and 0 deletions
|
@ -1065,6 +1065,11 @@ megasas_fire_cmd_fusion(struct megasas_instance *instance,
|
|||
u32 req_desc_hi,
|
||||
struct megasas_register_set __iomem *regs)
|
||||
{
|
||||
#if defined(writeq) && defined(CONFIG_64BIT)
|
||||
u64 req_data = (((u64)req_desc_hi << 32) | (u32)req_desc_lo);
|
||||
|
||||
writeq(le64_to_cpu(req_data), &(regs)->inbound_low_queue_port);
|
||||
#else
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&instance->hba_lock, flags);
|
||||
|
@ -1072,6 +1077,7 @@ megasas_fire_cmd_fusion(struct megasas_instance *instance,
|
|||
writel(le32_to_cpu(req_desc_lo), &(regs)->inbound_low_queue_port);
|
||||
writel(le32_to_cpu(req_desc_hi), &(regs)->inbound_high_queue_port);
|
||||
spin_unlock_irqrestore(&instance->hba_lock, flags);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue