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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox