From: Ravikiran G Thirumalai <kiran@scalex86.org>
To: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
"Shai Fultheim (Shai@scalex86.org)" <shai@scalex86.org>,
Alok Kataria <alokk@calsoftinc.com>
Subject: [patch 3/4] ide: Break ide_lock -- change controller drivers
Date: Tue, 6 Sep 2005 16:42:20 -0700 [thread overview]
Message-ID: <20050906234220.GD3642@localhost.localdomain> (raw)
In-Reply-To: <20050906233322.GA3642@localhost.localdomain>
Patch to make ide-host controllers use hwgroup lock where serialization with
hwgroup->lock is necessary
Signed-off-by: Vaibhav V. Nivargi <vaibhav.nivargi@gmail.com>
Signed-off-by: Alok N. Kataria <alokk@calsoftinc.com>
Signed-off-by: Ravikiran Thirumalai <kiran@scalex86.org>
Index: linux-2.6.13/drivers/ide/legacy/ht6560b.c
===================================================================
--- linux-2.6.13.orig/drivers/ide/legacy/ht6560b.c 2005-08-28 19:41:01.000000000 -0400
+++ linux-2.6.13/drivers/ide/legacy/ht6560b.c 2005-09-06 15:57:46.113541000 -0400
@@ -256,9 +256,11 @@
{
unsigned long flags;
int t = HT_PREFETCH_MODE << 8;
-
- spin_lock_irqsave(&ide_lock, flags);
-
+ ide_hwgroup_t *hwgroup = HWGROUP(drive);
+
+ spin_lock_irqsave(&hwgroup->lock, flags);
+ spin_lock(&ide_lock);
+
/*
* Prefetch mode and unmask irq seems to conflict
*/
@@ -270,9 +272,10 @@
drive->drive_data &= ~t; /* disable prefetch mode */
drive->no_unmask = 0;
}
-
- spin_unlock_irqrestore(&ide_lock, flags);
-
+
+ spin_unlock(&ide_lock);
+ spin_unlock_irqrestore(&hwgroup->lock, flags);
+
#ifdef DEBUG
printk("ht6560b: drive %s prefetch mode %sabled\n", drive->name, (state ? "en" : "dis"));
#endif
@@ -282,6 +285,7 @@
{
unsigned long flags;
u8 timing;
+ ide_hwgroup_t *hwgroup = HWGROUP(drive);
switch (pio) {
case 8: /* set prefetch off */
@@ -291,14 +295,15 @@
}
timing = ht_pio2timings(drive, pio);
-
- spin_lock_irqsave(&ide_lock, flags);
+
+ spin_lock_irqsave(&hwgroup->lock, flags);
+ spin_lock(&ide_lock);
drive->drive_data &= 0xff00;
drive->drive_data |= timing;
- spin_unlock_irqrestore(&ide_lock, flags);
-
+ spin_unlock(&ide_lock);
+ spin_unlock_irqrestore(&hwgroup->lock, flags);
#ifdef DEBUG
printk("ht6560b: drive %s tuned to pio mode %#x timing=%#x\n", drive->name, pio, timing);
#endif
Index: linux-2.6.13/drivers/ide/pci/cmd640.c
===================================================================
--- linux-2.6.13.orig/drivers/ide/pci/cmd640.c 2005-08-28 19:41:01.000000000 -0400
+++ linux-2.6.13/drivers/ide/pci/cmd640.c 2005-09-06 15:50:35.330618750 -0400
@@ -442,11 +442,14 @@
static void set_prefetch_mode (unsigned int index, int mode)
{
ide_drive_t *drive = cmd_drives[index];
+ ide_hwgroup_t *hwgroup = HWGROUP(drive);
int reg = prefetch_regs[index];
u8 b;
unsigned long flags;
- spin_lock_irqsave(&ide_lock, flags);
+ spin_lock_irqsave(&hwgroup->lock, flags);
+ spin_lock(&ide_lock);
+
b = __get_cmd640_reg(reg);
if (mode) { /* want prefetch on? */
#if CMD640_PREFETCH_MASKS
@@ -462,7 +465,9 @@
b |= prefetch_masks[index]; /* disable prefetch */
}
__put_cmd640_reg(reg, b);
- spin_unlock_irqrestore(&ide_lock, flags);
+
+ spin_unlock(&ide_lock);
+ spin_unlock_irqrestore(&hwgroup->lock, flags);
}
/*
Index: linux-2.6.13/drivers/ide/pci/piix.c
===================================================================
--- linux-2.6.13.orig/drivers/ide/pci/piix.c 2005-09-06 15:49:48.271677750 -0400
+++ linux-2.6.13/drivers/ide/pci/piix.c 2005-09-06 15:56:55.982408000 -0400
@@ -215,6 +215,7 @@
{
ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev;
+ ide_hwgroup_t *hwgroup = HWGROUP(drive);
int is_slave = (&hwif->drives[1] == drive);
int master_port = hwif->channel ? 0x42 : 0x40;
int slave_port = 0x44;
@@ -229,7 +230,8 @@
{ 2, 3 }, };
pio = ide_get_best_pio_mode(drive, pio, 5, NULL);
- spin_lock_irqsave(&ide_lock, flags);
+ spin_lock_irqsave(&hwgroup->lock, flags);
+ spin_lock(&ide_lock);
pci_read_config_word(dev, master_port, &master_data);
if (is_slave) {
master_data = master_data | 0x4000;
@@ -249,7 +251,8 @@
pci_write_config_word(dev, master_port, master_data);
if (is_slave)
pci_write_config_byte(dev, slave_port, slave_data);
- spin_unlock_irqrestore(&ide_lock, flags);
+ spin_unlock(&ide_lock);
+ spin_unlock_irqrestore(&hwgroup->lock, flags);
}
/**
next prev parent reply other threads:[~2005-09-06 23:42 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-06 23:33 [patch 0/4] ide: Break ide_lock to per-hwgroup lock Ravikiran G Thirumalai
2005-09-06 23:37 ` [patch 1/4] ide: Break ide_lock -- Move hwif tuning code after hwif_init Ravikiran G Thirumalai
2005-09-06 23:40 ` [patch 2/4] ide: Break ide_lock -- replace ide_lock with hwgroup->lock in core ide Ravikiran G Thirumalai
2005-09-07 6:33 ` Ravikiran G Thirumalai
2005-09-06 23:42 ` Ravikiran G Thirumalai [this message]
2005-09-06 23:44 ` [patch 4/4] ide: Break ide_lock -- remove ide_lock from piix driver Ravikiran G Thirumalai
2005-09-07 17:06 ` Alan Cox
2005-09-07 17:50 ` Ravikiran G Thirumalai
2005-09-07 18:24 ` Alan Cox
2005-09-07 9:19 ` [patch 0/4] ide: Break ide_lock to per-hwgroup lock Jens Axboe
2005-09-07 19:27 ` Ravikiran G Thirumalai
2005-09-07 19:34 ` Jens Axboe
2005-09-27 13:36 ` Bartlomiej Zolnierkiewicz
2005-09-27 15:20 ` Ravikiran G Thirumalai
2005-09-27 15:26 ` Jens Axboe
2005-09-27 15:42 ` Ravikiran G Thirumalai
2005-09-27 15:58 ` Jens Axboe
2005-09-07 17:09 ` Alan Cox
2005-09-07 18:16 ` Ravikiran G Thirumalai
2005-09-07 19:06 ` Alan Cox
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=20050906234220.GD3642@localhost.localdomain \
--to=kiran@scalex86.org \
--cc=alokk@calsoftinc.com \
--cc=bzolnier@gmail.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=shai@scalex86.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;
as well as URLs for NNTP newsgroup(s).