From: Felipe W Damasio <felipewd@terra.com.br>
To: Jens Axboe <axboe@suse.de>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] blk API update (and bug fix) to CDU535 cdrom driver
Date: Tue, 09 Sep 2003 17:21:29 -0300 [thread overview]
Message-ID: <3F5E3649.40209@terra.com.br> (raw)
In-Reply-To: <20030909195549.GR4755@suse.de>
[-- Attachment #1: Type: text/plain, Size: 427 bytes --]
Hi,
Jens Axboe wrote:
> That needed changes too, as per my last mail. Please send one complete
> patch with all the fixes in, thanks.
Sure thing, patch attached:
- cli-sti removal
- blk API update
- set_current_state
- Remove 'panic' line.
Please don't forget to remove BROKEN_ON_SMP from
drivers/cdrom/Kconfig on then cdu535 dependecies (I sent you a patch
for that as well).
Thanks for your help Jens,
Felipe
[-- Attachment #2: cdu535.patch --]
[-- Type: text/plain, Size: 2233 bytes --]
--- linux-2.6.0-test5/drivers/cdrom/sonycd535.c Tue Sep 9 17:01:08 2003
+++ linux-2.6.0-test5-fwd/drivers/cdrom/sonycd535.c Tue Sep 9 14:41:30 2003
@@ -36,6 +36,10 @@
* module_init & module_exit.
* Torben Mathiasen <tmm@image.dk>
*
+ * September 2003 - Fix SMP support by removing cli/sti calls.
+ * Using spinlocks with a wait_queue instead.
+ * Felipe Damasio <felipewd@terra.com.br>
+ *
* Things to do:
* - handle errors and status better, put everything into a single word
* - use interrupts (code mostly there, but a big hole still missing)
@@ -340,10 +344,14 @@
if (sony535_irq_used <= 0) { /* poll */
yield();
} else { /* Interrupt driven */
- cli();
+ DEFINE_WAIT(wait);
+
+ spin_lock_irq(&sonycd535_lock);
enable_interrupts();
- interruptible_sleep_on(&cdu535_irq_wait);
- sti();
+ prepare_to_wait(&cdu535_irq_wait, &wait, TASK_INTERRUPTIBLE);
+ spin_unlock_irq(&sonycd535_lock);
+ schedule();
+ finish_wait(&cdu535_irq_wait, &wait);
}
}
@@ -804,14 +812,14 @@
block = req->sector;
nsect = req->nr_sectors;
- if (!(req->flags & REQ_CMD))
- continue; /* FIXME */
+ if (!blk_fs_request(req)) {
+ end_request(req, 0);
+ continue;
+ }
if (rq_data_dir(req) == WRITE) {
end_request(req, 0);
continue;
}
- if (rq_data_dir(req) != READ)
- panic("Unknown SONY CD cmd");
/*
* If the block address is invalid or the request goes beyond
* the end of the media, return an error.
@@ -888,8 +896,10 @@
}
if (readStatus == BAD_STATUS) {
/* Sleep for a while, then retry */
- current->state = TASK_INTERRUPTIBLE;
+ set_current_state(TASK_INTERRUPTIBLE);
+ spin_unlock_irq(&sonycd535_lock);
schedule_timeout(RETRY_FOR_BAD_STATUS*HZ/10);
+ spin_lock_irq(&sonycd535_lock);
}
#if DEBUG > 0
printk(CDU535_MESSAGE_NAME
@@ -1473,7 +1483,7 @@
/* look for the CD-ROM, follows the procedure in the DOS driver */
inb(select_unit_reg);
/* wait for 40 18 Hz ticks (reverse-engineered from DOS driver) */
- current->state = TASK_INTERRUPTIBLE;
+ set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout((HZ+17)*40/18);
inb(result_reg);
next prev parent reply other threads:[~2003-09-09 20:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <3F5DDEA8.6040901@terra.com.br>
[not found] ` <20030909143341.GA18257@suse.de>
[not found] ` <3F5DEA0D.6030701@terra.com.br>
[not found] ` <20030909153536.GH18257@suse.de>
2003-09-09 17:50 ` [PATCH] blk API update (and bug fix) to CDU535 cdrom driver Felipe W Damasio
2003-09-09 19:55 ` Jens Axboe
2003-09-09 20:21 ` Felipe W Damasio [this message]
2003-09-10 19:58 Matthew Wilcox
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=3F5E3649.40209@terra.com.br \
--to=felipewd@terra.com.br \
--cc=axboe@suse.de \
--cc=linux-kernel@vger.kernel.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.