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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.