From: Pavel Machek <pavel@ucw.cz>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Martin Dalecki <dalecki@evision-ventures.com>,
Jeff Garzik <jgarzik@mandrakesoft.com>,
Linus Torvalds <torvalds@transmeta.com>,
Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] 2.5.5 IDE cleanup 11
Date: Fri, 22 Feb 2002 16:51:15 +0100 [thread overview]
Message-ID: <20020222155114.GA313@elf.ucw.cz> (raw)
In-Reply-To: <3C75351D.4030200@evision-ventures.com> <E16dxk1-0007kN-00@the-village.bc.nu>
In-Reply-To: <E16dxk1-0007kN-00@the-village.bc.nu>
Hi!
> > > So you didnt test or consider the upcoming things like hotplug.
> >
> > I did plugging and unplugging a CardBus IDE contoller in and out on
> > a hot system.
>
> IDE hotplug is device level (hence you want ->present)
>
> > using the struct device_driver infrastructure and not by reduplicating
> > it's fuctionality inside ide.c. Agreed? Before one could even thing
>
> Not agreed - its a layer lower I'm talking about
I want both "ide controller" *and* "ide disk" to have struct
device. And my patches do exactly that, see:
Pavel
--- linux/drivers/ide/ide-disk.c Mon Feb 11 20:51:47 2002
+++ linux-dm/drivers/ide/ide-disk.c Mon Feb 11 23:35:09 2002
@@ -925,12 +925,16 @@
ide_add_setting(drive, "max_failures", SETTING_RW, -1, -1, TYPE_INT, 0, 65535, 1, 1, &drive->max_failures, NULL);
}
+static struct device_driver idedisk_device_driver = {
+};
+
static void idedisk_setup (ide_drive_t *drive)
{
int i;
struct hd_driveid *id = drive->id;
unsigned long capacity;
+ int myid = -1;
idedisk_add_settings(drive);
@@ -953,11 +957,20 @@
ide_hwif_t *hwif = HWIF(drive);
if (drive != &hwif->drives[i]) continue;
+ myid = i;
hwif->gd->de_arr[i] = drive->de;
if (drive->removable)
hwif->gd->flags[i] |= GENHD_FL_REMOVABLE;
break;
}
+ {
+ ide_hwif_t *hwif = HWIF(drive);
+ sprintf(drive->device.bus_id, "%d", myid);
+ sprintf(drive->device.name, "ide-disk");
+ drive->device.driver = &idedisk_device_driver;
+ drive->device.parent = &hwif->device;
+ device_register(&drive->device);
+ }
/* Extract geometry if we did not already have one for the drive */
if (!drive->cyl || !drive->head || !drive->sect) {
@@ -1033,6 +1046,7 @@
static int idedisk_cleanup (ide_drive_t *drive)
{
+ put_device(&drive->device);
if ((drive->id->cfs_enable_2 & 0x3000) && drive->wcache)
if (do_idedisk_flushcache(drive))
printk (KERN_INFO "%s: Write Cache FAILED Flushing!\n",
--- linux/drivers/ide/ide-pnp.c Thu Oct 25 13:25:37 2001
+++ linux-dm/drivers/ide/ide-pnp.c Thu Feb 14 22:45:13 2002
@@ -57,6 +57,7 @@
static int __init pnpide_generic_init(struct pci_dev *dev, int enable)
{
hw_regs_t hw;
+ ide_hwif_t *hwif;
int index;
if (!enable)
@@ -69,9 +70,10 @@
generic_ide_offsets, (ide_ioreg_t) DEV_IO(dev, 1),
0, NULL, DEV_IRQ(dev, 0));
- index = ide_register_hw(&hw, NULL);
+ index = ide_register_hw(&hw, &hwif);
if (index != -1) {
+ hwif->pci_dev = dev;
printk("ide%d: %s IDE interface\n", index, DEV_NAME(dev));
return 0;
}
--- linux/drivers/ide/ide-probe.c Thu Jan 31 23:39:35 2002
+++ linux-dm/drivers/ide/ide-probe.c Thu Feb 14 22:50:53 2002
@@ -46,6 +46,7 @@
#include <linux/delay.h>
#include <linux/ide.h>
#include <linux/spinlock.h>
+#include <linux/pci.h>
#include <asm/byteorder.h>
#include <asm/irq.h>
@@ -469,6 +470,14 @@
static void hwif_register (ide_hwif_t *hwif)
{
+ sprintf(hwif->device.bus_id, "%04x", hwif->io_ports[IDE_DATA_OFFSET]);
+ sprintf(hwif->device.name, "ide");
+ hwif->device.driver_data = hwif;
+ if (hwif->pci_dev)
+ hwif->device.parent = &hwif->pci_dev->dev;
+ else
+ hwif->device.parent = NULL; /* Would like to do = &device_legacy */
+ device_register(&hwif->device);
if (((unsigned long)hwif->io_ports[IDE_DATA_OFFSET] | 7) ==
((unsigned long)hwif->io_ports[IDE_STATUS_OFFSET])) {
ide_request_region(hwif->io_ports[IDE_DATA_OFFSET], 8, hwif->name);
--- linux/drivers/ide/ide.c Mon Feb 11 20:51:47 2002
+++ linux-dm/drivers/ide/ide.c Mon Feb 11 23:35:09 2002
@@ -143,9 +143,7 @@
#include <linux/genhd.h>
#include <linux/blkpg.h>
#include <linux/slab.h>
-#ifndef MODULE
#include <linux/init.h>
-#endif /* MODULE */
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/ide.h>
@@ -153,6 +151,8 @@
#include <linux/completion.h>
#include <linux/reboot.h>
#include <linux/cdrom.h>
+#include <linux/device.h>
+#include <linux/kmod.h>
#include <asm/byteorder.h>
#include <asm/irq.h>
@@ -162,9 +162,6 @@
#include "ide_modes.h"
-#ifdef CONFIG_KMOD
-#include <linux/kmod.h>
-#endif /* CONFIG_KMOD */
/* default maximum number of failures */
#define IDE_DEFAULT_MAX_FAILURES 1
@@ -2027,6 +2024,7 @@
hwif = &ide_hwifs[index];
if (!hwif->present)
goto abort;
+ put_device(&hwif->device);
for (unit = 0; unit < MAX_DRIVES; ++unit) {
drive = &hwif->drives[unit];
if (!drive->present)
--- linux/include/linux/ide.h Mon Feb 11 21:15:04 2002
+++ linux-dm/include/linux/ide.h Thu Feb 14 22:47:23 2002
@@ -14,6 +14,7 @@
#include <linux/blkdev.h>
#include <linux/proc_fs.h>
#include <linux/devfs_fs_kernel.h>
+#include <linux/device.h>
#include <asm/hdreg.h>
/*
@@ -424,12 +425,12 @@
unsigned long capacity; /* total number of sectors */
unsigned long long capacity48; /* total number of sectors */
unsigned int drive_data; /* for use by tuneproc/selectproc as needed */
- void *hwif; /* actually (ide_hwif_t *) */
+ struct hwif_s *hwif; /* actually (ide_hwif_t *) */
wait_queue_head_t wqueue; /* used to wait for drive in open() */
struct hd_driveid *id; /* drive model identification info */
struct hd_struct *part; /* drive partition table */
char name[4]; /* drive name, such as "hda" */
- void *driver; /* (ide_driver_t *) */
+ struct ide_driver_s *driver; /* (ide_driver_t *) */
void *driver_data; /* extra driver data */
devfs_handle_t de; /* directory for device */
struct proc_dir_entry *proc; /* /proc/ide/ directory entry */
@@ -448,6 +449,7 @@
byte acoustic; /* acoustic management */
unsigned int failures; /* current failure count */
unsigned int max_failures; /* maximum allowed failure count */
+ struct device device;
} ide_drive_t;
/*
@@ -529,7 +531,7 @@
typedef struct hwif_s {
struct hwif_s *next; /* for linked-list in ide_hwgroup_t */
- void *hwgroup; /* actually (ide_hwgroup_t *) */
+ struct hwgroup_s *hwgroup; /* actually (ide_hwgroup_t *) */
ide_ioreg_t io_ports[IDE_NR_PORTS]; /* task file registers */
hw_regs_t hw; /* Hardware info */
ide_drive_t drives[MAX_DRIVES]; /* drive info */
@@ -580,6 +582,7 @@
void *hwif_data; /* extra hwif data */
ide_busproc_t *busproc; /* driver soft-power interface */
byte bus_state; /* power state of the IDE bus */
+ struct device device;
} ide_hwif_t;
/*
--
(about SSSCA) "I don't say this lightly. However, I really think that the U.S.
no longer is classifiable as a democracy, but rather as a plutocracy." --hpa
next prev parent reply other threads:[~2002-02-22 15:54 UTC|newest]
Thread overview: 217+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-02-13 22:38 linux-2.5.5-pre1 Linus Torvalds
2002-02-13 23:16 ` linux-2.5.5-pre1 Matthias Andree
2002-02-14 2:30 ` linux-2.5.5-pre1 Jeff Garzik
2002-02-14 1:17 ` linux-2.5.5-pre1 Daniel Phillips
2002-02-14 1:35 ` linux-2.5.5-pre1 -= M.J. Prinsen =-
2002-02-14 9:22 ` linux-2.5.5-pre1 Allan Sandfeld
2002-02-14 5:31 ` linux-2.5.5-pre1 Linus Torvalds
2002-02-14 8:04 ` linux-2.5.5-pre1 bert hubert
2002-02-14 16:23 ` linux-2.5.5-pre1 Linus Torvalds
2002-02-14 16:53 ` linux-2.5.5-pre1 Thomas Capricelli
2002-02-14 14:08 ` [PATCH} 2.5.5-pre1 VESA fb Martin Dalecki
2002-02-14 15:16 ` Alan Cox
2002-02-14 15:32 ` Martin Dalecki
2002-02-14 20:49 ` Compile error with linux-2.5.5-pre1 & advansys scsi Gerold J. Wucherpfennig
2002-02-19 11:37 ` [PATCH] 2.5.5-pre1 IDE cleanup Martin Dalecki
2002-02-19 11:46 ` [PATCH] 2.5.5-pre1 IDE cleanup 9 Martin Dalecki
2002-02-22 10:07 ` Gerd Knorr
2002-02-22 13:50 ` Martin Dalecki
2002-02-22 10:42 ` Gadi Oxman
2002-02-22 13:45 ` Martin Dalecki
2002-02-22 14:03 ` Vojtech Pavlik
2002-02-22 14:12 ` Jeff Garzik
2002-02-22 14:20 ` Martin Dalecki
2002-02-22 14:16 ` Martin Dalecki
2002-02-22 14:38 ` Vojtech Pavlik
2002-02-22 14:46 ` Jeff Garzik
2002-02-22 14:47 ` Martin Dalecki
2002-02-22 14:58 ` Jeff Garzik
2002-02-22 15:01 ` Jeff Garzik
2002-02-22 15:12 ` Martin Dalecki
2002-02-23 8:05 ` Keith Owens
2002-02-23 14:55 ` Martin Dalecki
2002-02-22 14:16 ` Arjan van de Ven
2002-02-22 14:40 ` Vojtech Pavlik
2002-02-21 20:31 ` Gérard Roudier
2002-02-22 19:56 ` Jeff Garzik
2002-02-21 21:14 ` Gérard Roudier
2002-02-22 22:35 ` Jeff Garzik
2002-02-22 21:34 ` Vojtech Pavlik
2002-02-22 21:45 ` Greg KH
2002-02-22 21:56 ` Jeff Garzik
2002-02-22 21:59 ` Vojtech Pavlik
2002-02-22 23:06 ` Martin Dalecki
2002-02-22 14:45 ` Jeff Garzik
2002-02-21 20:39 ` Gérard Roudier
2002-02-22 19:47 ` Jeff Garzik
2002-02-21 21:01 ` Gérard Roudier
2002-02-22 20:07 ` Greg KH
2002-02-21 21:24 ` Gérard Roudier
2002-02-22 20:41 ` Greg KH
2002-02-22 21:30 ` Erik Andersen
2002-02-22 21:42 ` Greg KH
2002-02-22 21:54 ` Erik Andersen
2002-02-22 21:22 ` Erik Andersen
2002-02-21 23:17 ` Gérard Roudier
2002-02-22 22:23 ` Erik Andersen
2002-02-22 23:27 ` Rik van Riel
2002-02-22 20:09 ` Andre Hedrick
2002-02-22 20:29 ` Greg KH
2002-02-22 20:34 ` Andre Hedrick
2002-02-22 23:46 ` Vojtech Pavlik
2002-02-22 20:32 ` arjan
2002-02-22 23:44 ` Vojtech Pavlik
2002-02-23 15:35 ` [PATCH] 2.5.5 IDE cleanup 12 Martin Dalecki
2002-02-22 23:59 ` [PATCH] 2.5.5-pre1 IDE cleanup 9 Jeff Garzik
2002-02-22 19:46 ` Andre Hedrick
2002-02-22 20:06 ` Jeff Garzik
2002-02-22 20:19 ` Andre Hedrick
2002-02-22 21:47 ` Vojtech Pavlik
2002-02-22 23:02 ` Martin Dalecki
2002-02-22 23:46 ` Jeff Garzik
2002-02-23 14:53 ` Martin Dalecki
2002-02-22 21:40 ` Vojtech Pavlik
2002-02-22 21:36 ` Vojtech Pavlik
2002-02-20 10:49 ` [PATCH] 2.5.5-pre1 IDE cleanup 10 Martin Dalecki
2002-02-21 9:39 ` [PATCH] 2.5.5 IDE cleanup 11 Martin Dalecki
2002-02-21 10:53 ` Jeff Garzik
2002-02-21 11:06 ` Andre Hedrick
2002-02-21 17:27 ` Martin Dalecki
2002-02-21 17:52 ` Alan Cox
2002-02-21 17:57 ` Martin Dalecki
2002-02-21 18:14 ` Alan Cox
2002-02-21 18:44 ` Martin Dalecki
2002-02-22 15:51 ` Pavel Machek [this message]
2002-02-21 13:59 ` Alan Cox
2002-02-21 17:32 ` Martin Dalecki
2002-02-21 17:50 ` Alan Cox
2002-02-21 18:17 ` Martin Dalecki
2002-02-21 21:24 ` Andre Hedrick
2002-02-21 21:30 ` Andre Hedrick
2002-02-22 9:25 ` Flash Back -- kernel 2.1.111 Andre Hedrick
2002-02-22 10:08 ` Rik van Riel
2002-02-22 10:09 ` Jens Axboe
2002-02-22 17:06 ` Linus Torvalds
2002-02-22 18:58 ` Andre Hedrick
2002-02-23 17:56 ` Linus Torvalds
2002-02-24 4:42 ` Andre Hedrick
2002-02-24 5:38 ` Andre Hedrick
2002-02-24 6:01 ` Linus Torvalds
2002-02-24 7:30 ` Troy Benjegerdes
2002-02-24 12:18 ` Martin Dalecki
2002-02-24 20:29 ` Troy Benjegerdes
2002-02-24 20:32 ` Martin Dalecki
2002-02-24 21:15 ` Alan Cox
2002-02-24 21:11 ` Martin Dalecki
2002-02-24 21:31 ` Alan Cox
2002-02-24 21:19 ` Martin Dalecki
2002-02-24 21:25 ` nick
2002-02-24 21:32 ` Rik van Riel
2002-02-24 21:42 ` Vojtech Pavlik
2002-02-24 21:47 ` nick
2002-02-24 21:41 ` Vojtech Pavlik
2002-02-24 21:47 ` Rik van Riel
2002-02-24 21:31 ` Jeff Garzik
2002-02-24 21:40 ` Vojtech Pavlik
2002-02-24 21:46 ` Jeff Garzik
2002-02-24 21:50 ` Vojtech Pavlik
2002-02-24 22:18 ` David S. Miller
2002-02-24 20:54 ` Vojtech Pavlik
2002-02-24 21:19 ` Troy Benjegerdes
2002-02-24 21:37 ` Vojtech Pavlik
2002-02-24 22:03 ` Paul Mackerras
2002-02-24 22:08 ` Vojtech Pavlik
2002-02-24 22:23 ` Paul Mackerras
2002-02-24 22:37 ` Troy Benjegerdes
2002-02-24 23:08 ` Chris Wedgwood
2002-02-24 22:01 ` Paul Mackerras
2002-02-24 22:10 ` Vojtech Pavlik
2002-02-24 22:25 ` Paul Mackerras
2002-02-24 22:27 ` Andre Hedrick
2002-02-24 22:48 ` Vojtech Pavlik
2002-02-25 8:49 ` Martin Dalecki
2002-02-24 22:39 ` Vojtech Pavlik
2002-02-24 22:44 ` David S. Miller
2002-02-24 22:51 ` Vojtech Pavlik
2002-02-24 22:59 ` Troy Benjegerdes
2002-02-24 23:02 ` Vojtech Pavlik
2002-02-24 23:26 ` Paul Mackerras
2002-02-27 15:59 ` Remco Post
2002-02-24 23:12 ` Chris Wedgwood
2002-02-24 23:10 ` Chris Wedgwood
2002-02-24 23:01 ` Alan Cox
2002-02-24 20:52 ` Vojtech Pavlik
2002-02-24 23:04 ` Chris Wedgwood
2002-02-24 9:27 ` Andre Hedrick
2002-02-24 12:28 ` [PATCH] IDE clean 12 3rd attempt Martin Dalecki
2002-02-24 16:14 ` Greg KH
2002-03-08 15:46 ` [PATCH] 2.5.6 IDE 18 Martin Dalecki
2002-03-08 16:42 ` Richard Gooch
2002-03-09 12:56 ` Martin Dalecki
2002-02-24 10:23 ` Flash Back -- kernel 2.1.111 Vojtech Pavlik
2002-02-24 12:14 ` Martin Dalecki
2002-03-11 12:40 ` [PATCH] 2.5.6 IDE 19 Martin Dalecki
2002-03-11 15:19 ` Alan Cox
2002-03-11 16:23 ` Martin Dalecki
2002-03-11 16:58 ` Alan Cox
2002-03-11 17:03 ` Martin Dalecki
2002-03-11 17:10 ` Charles Cazabon
2002-03-11 17:30 ` Alan Cox
2002-03-11 18:23 ` Martin Dalecki
2002-03-11 19:41 ` Alan Cox
2002-03-11 18:00 ` Andre Hedrick
2002-03-11 19:03 ` [PATCH] 2.5.6 IDE 19, return of taskfile Gunther Mayer
2002-03-11 19:14 ` Andre Hedrick
2002-03-11 19:22 ` Gunther Mayer
2002-03-11 19:23 ` Martin Dalecki
2002-03-12 9:52 ` Zwane Mwaikambo
2002-03-11 19:47 ` Alan Cox
2002-03-11 19:38 ` Alexander Viro
2002-03-11 19:42 ` Andre Hedrick
2002-03-11 19:55 ` Alexander Viro
2002-03-11 20:02 ` Alan Cox
2002-03-13 12:55 ` Pavel Machek
2002-03-15 17:49 ` john slee
2002-03-16 2:26 ` Erik Andersen
2002-03-11 19:39 ` Andre Hedrick
2002-03-12 1:48 ` [PATCH] 2.5.6 IDE 19 Pavel Machek
2002-03-11 21:50 ` Barry K. Nathan
2002-03-12 1:44 ` Pavel Machek
2002-03-11 17:42 ` Andre Hedrick
2002-03-11 18:08 ` Alan Cox
2002-03-11 18:05 ` Anton Altaparmakov
2002-03-11 19:39 ` Alan Cox
2002-03-11 22:02 ` Vojtech Pavlik
2002-03-11 22:01 ` Vojtech Pavlik
2002-03-12 8:58 ` Joachim Breuer
2002-03-11 22:06 ` Anton Altaparmakov
2002-03-11 22:10 ` Anton Altaparmakov
2002-03-11 18:06 ` Wayne Whitney
2002-03-11 18:27 ` Andre Hedrick
2002-03-11 18:51 ` Martin Dalecki
2002-03-11 19:02 ` Andre Hedrick
2002-03-11 19:12 ` Martin Dalecki
2002-03-11 19:24 ` Andre Hedrick
2002-03-11 19:30 ` Martin Dalecki
2002-03-11 19:35 ` Andre Hedrick
2002-03-11 19:51 ` Davide Libenzi
2002-03-11 19:51 ` Andre Hedrick
2002-03-11 21:19 ` Rik van Riel
2002-03-11 22:44 ` Davide Libenzi
2002-03-13 19:19 ` David Ford
2002-03-12 0:00 ` Jos Hulzink
2002-03-12 5:17 ` Andre Hedrick
2002-03-11 19:27 ` Russell King
2002-03-11 17:53 ` Arjan van de Ven
2002-03-11 19:04 ` Martin Dalecki
2002-03-11 21:02 ` Rik van Riel
2002-03-11 22:44 ` Alan Cox
2002-03-12 0:47 ` Bill Davidsen
2002-03-12 0:28 ` Pavel Machek
2002-03-13 14:14 ` [PATCH] IDE 21 Martin Dalecki
2002-03-13 17:42 ` Vojtech Pavlik
2002-02-22 10:12 ` Flash Back -- kernel 2.1.111 Pedro M. Rodrigues
2002-02-22 19:03 ` Andre Hedrick
2002-02-22 19:56 ` Alan Cox
2002-02-22 19:38 ` Andre Hedrick
2002-02-22 10:37 ` David S. Miller
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=20020222155114.GA313@elf.ucw.cz \
--to=pavel@ucw.cz \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=dalecki@evision-ventures.com \
--cc=jgarzik@mandrakesoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@transmeta.com \
/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.