Re: IDE/Promise 20276 FastTrack RAID Doesn't work in 2.4.21, patchattached to fix

Steven Dake
2003-07-10T23:43:52Z

Bartlomiej Zolnierkiewicz wrote:

>It shouldn't matter.
>
>Look at the code in setup-pci.c:
>
> ide_pci_enablebit_t *e = &(d->enablebits[port]);
>
>If CONFIG_PDC202XX_FORCE=y d->enablebits will be { 0x00, 0x00, 0x00 }
>for both ports, now look at drivers/ide/setup-pci.c:
>
> /*
> * If this is a Promise FakeRaid controller,
> * the 2nd controller will be marked as
> * disabled while it is actually there and enabled
> * by the bios for raid purposes.
> * Skip the normal "is it enabled" test for those.
> */
> if (((d->vendor == PCI_VENDOR_ID_PROMISE) &&
> ((d->device == PCI_DEVICE_ID_PROMISE_20262) ||
> (d->device == PCI_DEVICE_ID_PROMISE_20265))) &&
> (secondpdc++==1) && (port==1))
> goto controller_ok;
>
> if (e->reg && (pci_read_config_byte(dev, e->reg, &tmp) ||
> (tmp & e->mask) != e->val))
> continue; /* port not enabled */
>
>controller_ok:
>
>So if e = { 0x00, 0x00, 0x00 } test above (for enabled port) should fail,
>no need for your patch.
>
>Can you put printks inside this code to see what are values
>of e->reg, e->mask and e->val?
>
>
Your right, I tried printks of those values, and they are all zero. Now
with fasttrack special feature enabled, my kernel boots without the PDC
patch I sent earlier. After I reconfigured the kernel in my previous
tests, the kernel build system must not have build the source files a new.

Thanks for all the help.

And atleast we got the help in the kernel config straightened out:)
-steve

>On Thu, 10 Jul 2003, Samuel Flory wrote:
>
>
>
>
>>Steven Dake wrote:
>>
>>
>>
>>>Even with special fasttrack feature enabled, my disk devices on the
>>>PDC20276 is not found. There is code in pci-setup.c which blocks
>>>other PDC controllers, why not the 20276? Is that code for some other
>>>purpose, or orthagonal to the force option?
>>>
>>>
>> The comments would seem to indicate that this is only needed if you
>>have a second controller. Which leads me to wonder what if I have 3 or
>>4 pdc controllers.
>>
>> for (port = 0; port <= 1; ++port) {
>> ide_pci_enablebit_t *e = &(d->enablebits[port]);
>>
>> /*
>> * If this is a Promise FakeRaid controller,
>> * the 2nd controller will be marked as
>> * disabled while it is actually there and enabled
>> * by the bios for raid purposes.
>> * Skip the normal "is it enabled" test for those.
>> */
>> if (((d->vendor == PCI_VENDOR_ID_PROMISE) &&
>> ((d->device == PCI_DEVICE_ID_PROMISE_20262) ||
>> (d->device == PCI_DEVICE_ID_PROMISE_20265))) &&
>> (secondpdc++==1) && (port==1))
>> goto controller_ok;
>>
>>
>
>I think this workaround was added before "Special FastTrack Feature"
>option. Andre?
>--
>Bartlomiej
>
>
>
>
>
>