Driver detects /dev/hde but node ceases to exist

xtknight

Elite Member
Oct 15, 2004
12,974
0
71
Previously I had completely disabled PATA support in my kernel due to a PATA controller causing problems. Now that I've bought another controller, I am trying to re-enable it. I selected my current controller's driver (pata_pdc2027x and its DMA equivalent [pdc202xx_new I think]) along with libata.

Should I use mknod or did I make a mistake in my config?

Pertinent dmesg excerpt:

[ 49.419554] PDC20268: IDE controller at PCI slot 0000:05:00.0
[ 49.419573] ACPI: PCI Interrupt 0000:05:00.0[A] -> GSI 20 (level, low) -> IRQ 20
[ 49.419584] PDC20268: chipset revision 2
[ 49.419587] PDC20268: ROM enabled at 0x80100000
[ 49.429614] PDC20268: PLL input clock is 16683 kHz
[ 49.459592] PDC20268: 100% native mode on irq 20
[ 49.459598] ide2: BM-DMA at 0x9000-0x9007, BIOS settings: hde:pio, hdf:pio
[ 49.459610] ide3: BM-DMA at 0x9008-0x900f, BIOS settings: hdg:pio, hdh:pio
[ 49.459620] Probing IDE interface ide2...
[ 50.131759] hde: TSSTcorpCD/DVDW SH-S182M, ATAPI CD/DVD-ROM drive
[ 50.845986] hdf: HP DVD Writer 420, ATAPI CD/DVD-ROM drive

The only thing is, /dev/hde and /dev/hdf do not exist.

ls: /dev/hd*: No such file or directory

Kernel version: Linux andy-desktop 2.6.20-rc4 #0 SMP Mon Jan 8 16:29:57 EST 2007 x86_64 GNU/Linux

(Edit: disabled emoticons)

Kernel config:
 

drag

Elite Member
Jul 4, 2002
8,708
0
0
Is your Udev stuff working?

If not then the devices won't get made automaticly. I don't remember Debian off the top of my head (using CentOS right now), but you should be able manually make the devices by going:

cd /dev/
./MAKEDEV hde
./MAKEDEV hdf
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
I selected my current controller's driver (pata_pdc2027x and its DMA equivalent [pdc202xx_new I think]) along with libata.

The latter is the old drivers/ide driver and the former is the libata driver, both should support DMA just fine. And it looks like the old drivers/ide driver is what actually started up the card, but in either case it's up to udev to create the devices as drag mentioned.
 

xtknight

Elite Member
Oct 15, 2004
12,974
0
71
Thanks. After a reboot it worked fine.

It was at /dev/.static/dev/hde though, so I mounted that, then suddenly /dev/hde and /dev/hdf appeared. I guess it's working regularly right now. I wonder what happened to my previous hde and hdf nodes. Maybe they just permanently disappeared after disabling IDE.

I suppose I'd like to use the newer module. Is there an easy way to prevent the other one from loading at bootup? I have heard to "blacklist" it and found several module blacklist files in my Ubuntu but I'm not sure whether or not that's the best thing to do. I blacklisted ide_cd due to my previous issues and it still loads anyway.

What improvements exist in libata over the older drivers? Do I even need the IDE section checked to use libata? (Which seems to be in a differently labeled section like "Serial ATA/Parallel ATA drivers (prod)" or similar)
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
The libata modules are the future, at some point in the future the drivers/ide modules will be removed. But some of the libata modules are still pretty immature, especially the PATA ones. And no you don't need anything from drivers/ide for them, libata uses the SCSI transport.
 

xtknight

Elite Member
Oct 15, 2004
12,974
0
71
Well I'm still having an issue.

It still only shows up at /dev/.static/dev/hde. But if I access it at all (e.g. hdparm -d1 -k1 /dev/.static/dev/hde), /dev/hde appears. What's up with that?
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
Not sure, as long as the module gets loaded at startup udev should create the device for it. Accessing /dev/.static/dev/hde probably causes the kernel to load something (ide-disk maybe) which cause udev to notice and create the device node.