All of lore.kernel.org
 help / color / mirror / Atom feed
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);
 

  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.