How do I configure PCI IDE controller card?
I have an 8 year old TYAN P3 motherboard which is working nicely with it's
current application, however I want to install a larger IDE hard drive and the BIOS has a 30 GB limit on the hard drive size. I have upgraded to the latest BIOS I can find but it still doesn't help. Anything larger than 30 GB and the BIOS simply hangs on boot. The 80 GB WD drive I want to use has a jumper setting to reduce the size but that reduces it to 2 GB which is kind of pointless. So I thought I would try adding a newer PCI IDE controller card that can handle larger drives. The PCI IDE controller I am trying to use has the VIA VT6410 chip. I compiled a new Kernel for this box with VIA IDE support and when I boot the system, it seems to find the controller, however it does not see the drive attached to it. I am getting the following messages during boot.. > kernel: VP_IDE: IDE controller at PCI slot 0000:00:11.0 > kernel: VP_IDE: chipset revision 6 > kernel: VP_IDE: VIA vt6410 (rev 06) IDE UDMA133 controller on pci0000:00:11.0 > kernel: VP_IDE: 100%% native mode on irq 9 > kernel: ide2: BM-DMA at 0xef90-0xef97, BIOS settings: hde:pio, hdf:pio > kernel: ide3: BM-DMA at 0xef98-0xef9f, BIOS settings: hdg:pio, hdh:pio This all looks encouraging.. but that's about it. There should be an 80 GB hard drive reported on "hde" which it is not seeing. I did create a set of /dev/hde devices. I was reading through the Kernel Documentation/ide.txt file where it says.. > For special cases, interfaces may be specified using kernel "command line" > options. For example, > > ide3=0x168,0x36e,10 /* ioports 0x168-0x16f,0x36e, irq 10 */ > . . . > The standard port, and irq values are these: > > ide0=0x1f0,0x3f6,14 > ide1=0x170,0x376,15 > ide2=0x1e8,0x3ee,11 > ide3=0x168,0x36e,10 > > Note that the first parameter reserves 8 contiguous ioports, whereas the > second value denotes a single ioport. If in doubt, do a 'cat /proc/ioports'. Which all makes sense, with my card reporting the 8 contiguous addresses (as shown above 0xef90-0xef97) however the "single ioport" is not reported.. or at least I can't find it. Anyone out there familiar with adding IDE controllers? ..and have some idea what I might be missing? This is actually a RAID/IDE controller however I am only interested in simple non-RAID single drive IDE operation. I have been going under the assumption that these RAID/IDE controllers do not have to be used with RAID. The Kernel I am testing with does not have any RAID support.. which I don't think I need. The system is currently running an antique Slackware 8.1 from hda which I plan to upgrade to Slackware 12.0 as soon as I get this new larger hard drive working. I have a special boot configuration that is using a 2.6.21.5 Kernel to test the new IDE controller.. which is what all of the info above is based on. |
"This all looks encouraging.. but that's about it. There should be an 80 GB hard drive reported on "hde" which it is not seeing. I did create a set of /dev/hde devices."
During BIOS initialization your motherboard BIOS should link to a secondary BIOS present in the VIA VT6410 chip on the PCI card. The secondary BIOS will search all four of its addresses and report the presence of any devices attached to the PCI card. You did not mention the secondary BIOS report in your description of the boot process so the problem may be that the motherboard is not linking to the secondary BIOS. Without the secondary BIOS initialization the kernel will not detect the drive on hde at boot. The first thing to check is your motherboard BIOS. Can you tell your motherboard BIOS that you have a secondary IDE installed? Anouther thing to check is to see if your motherboard BIOS can flip IDE addresses. Some of the BIOS of the era that your motherboard belongs to had a feature where you could flip IDE chipsets. If your BIOS has this feature then you can change the motherboard IDE chipset adresses to IDE2 and IDE3. You can change the PCI IDE chipset addresses to IDE0 and IDE1. "the BIOS has a 30 GB limit on the hard drive size. I have upgraded to the latest BIOS I can find but it still doesn't help. Anything larger than 30 GB and the BIOS simply hangs on boot." One possible solution is to put the drive on IDE0. Then make a small (500M) /boot partition at the beginning of the drive so that /boot is within the BIOS range. Linux does not use BIOS addressing for hard drives except at boot so /boot is all that needs to be within the BIOS range. ------------------ Steve Stites |
Thanks..
Since my original post.. I also tried adding : append="hde=16383,16,63" to the kernel image section in my lilo.conf and the VIA driver then appeared to try to look for the drive (it paused for a while) but then finally reported : > kernel: hde: non-IDE drive, CHS=16383/16/63 and then it continued on.. Yes.. the BIOS. I was going to mention that but didn't want my original post to get too long. During boot the BIOS makes no mention of the new IDE this card. I did not see anything under the settings that implied something that should be changed. I was not sure IF the BIOS should recognize it. I was thinking that the Kernel would know what to do once the VIA driver was started. Before I tried using a Kernel with the VIA driver, the Kernel also did not see the new card, however the initial PCI probing did detect the card in the slot.. but that was about it. I did try turning off the on-board secondary IDE controller (not using it) and all that did was move the new card to be ide1 and ide2 and the new drives to be hdc/hdd and hde/hdf as would be expected.. but nothing else changed. The BIOS did not see it. > kernel: PIIX4: IDE controller at PCI slot 0000:00:07.1 > kernel: PIIX4: chipset revision 1 > kernel: PIIX4: not 100%% native mode: will probe irqs later > kernel: ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:pio > kernel: VP_IDE: IDE controller at PCI slot 0000:00:11.0 > kernel: VP_IDE: chipset revision 6 > kernel: VP_IDE: VIA vt6410 (rev 06) IDE UDMA133 controller on pci0000:00:11.0 > kernel: VP_IDE: 100%% native mode on irq 9 > kernel: ide1: BM-DMA at 0xef90-0xef97, BIOS settings: hdc:pio, hdd:pio > kernel: ide2: BM-DMA at 0xef98-0xef9f, BIOS settings: hde:pio, hdf:pio I suppose I could try turning off the on-board primary IDE controller but then I would have to move my existing hda to the new controller, and of course if it still can't be found, then the boot will stop very quickly .. with nothing to boot from. This idea about starting the initial boot with the BIOS thinking that it is a small drive and then later having Linux use the whole drive sounds interesting. Once concern that keeps surfacing is I hope the actual hardware on the motherboard can handle the large drive. It is a Pentium 3 MB with the old Intel BX chip set. The board is perfect for what I am using it for. I just want to use a larger disk. I hate to have to scrap it just because of that. I suppose I could use 2 smaller drives but new small (<30 GB) IDE drives are hard to find these days.. and I would need several of them. Generally not a practical solution. |
Correction to my previous post..
The BIOS does see the new IDE card as being in the PCI slot.. "PCI Slot 2 RAID, IRQ9" But that is all that is reported. It does not report any attached disks. Could the fact that I only have one IDE drive connected to the card be a factor? I am not interested in running RAID. I am only using the extra PCI IDE card to be able to access larger disks. For fun, I turned of both primary and secondary on-board IDE controllers and the BIOS reported "HD boot failure" and stopped.. offering only the option to "press F1 to enter SETUP" ... --- |
More info.. I thought I was on to something..
I discovered there *are* BIOS parameters related to using an OffBoard PCI IDE card. > OffBoard PCI IDE Card [ ] The choices for the settings are: AUTO, Slot1, Slot2, Slot3, Slot4 It also permits Slot5 and Slot6 yet the board only has 4 PCI slots. (???) There 2 other parameters.. > OffBoard IDE Primary IRQ [ ] and > OffBoard IDE Secondary IRQ [ ] For these the choices are: Disabled, INTA, INTB, INTC, INTD, and hardwired. As usual, the motherboard manual does not go into any detail of what these different values mean. I tried various combinations with the on-board Secondary disabled and again with both the on-board Primary and Secondary disabled. None really seemed to do much good but there was one combination that caused a Kernel panic when the VIA driver went to look for drives. I forget offhand what those setting were. Unfortunately most of the Kernel panic info scrolls off the screen and is lost. All of this leads one to think that with the on-board IDE disabled and the IDE Card enabled that the BIOS might report the drives it found.. but it reports nothing.. just "RAID Slot 2, IRQ n" The interrupt will move around depending on what else is enabled or I can force it to something with the "Slot 2 IRQ" BIOS parameter. The new IDE card has no documentation for it. All it came with was a mini CD with some Windows drivers. Nothing on it was of any use for a Linux user. It does not even tell you which IDE connector on the board is the primary vs. secondary. This must be a fairly new card though. The files on the CD had creation dates in the spring of 2007. I am wondering if this IDE card is "too new" for the BIOS to handle. I have more combinations to try. I also want to connect a second hard drive to the controller on the other connector just in case it is looking on the wrong one. One thing that bothers me is how this motherboard documentation is not 100% accurate. It says if OffBoard PCI IDE controller card is specified (or found ?)then the internal controller is disabled. This is not the case, since Linux will see both. I hate documentation that lies :) |
Quote:
The motherboard BIOS does not examine the PCI IDE for devices. There is a secondary BIOS on the PCI card that the motherboard must link to. The secondary BIOS finds what devices it has attached and then returns to the motherboard BIOS. I think that one of your problems is that the motherboard is not recognizing the existance of the secondary BIOS. Quote:
Anyway, I think your problem is miscommunication between the motherboard BIOS and the PCI BIOS. Perhaps the difference between a RAID secondary PCI controller and an ordinary RAID PCI controller is causing the motherboard to mishandle the secondary BIOS. ------------------- Steve Stites |
Yesterday I tried this PCI IDE controller in a different motherboard.
One that is much newer. I have no need or intentions of using the card with this M-board but I wanted to see if it behaved any different.. maybe provide some clues. It behaved basically the same way. The BIOS recognized the card being present but did not report any drives attached to it. One thing that was different was it appeared to find the PCI card *before* it found the on-board controller since Linux assigned ide0 and ide1 to the PCI card controller and ide2 and ide3 to the on-board controller. BUT.. the the important issue is the PCI card still did not report any drives attached to it. And.. I even attached another drive to the secondary connector to increase the chances that it might see one. As an additional sanity check, I moved the new drive I want to use to the on-board secondary controller and it saw it right away.. So no problem with the drive. I understand what *should* be happening. The BIOS should recognize the PCI IDE controller card and report the drives attached but it just ain't happening.. now seen on 2 motherboards. I am running out of things to try.. |
All times are GMT -5. The time now is 10:36 PM. |