[PASEMI] Nemo board doesn't recognize any ATA disks with the pci-v5.16 updates
Christian Zigotzky
chzigotzky at xenosoft.de
Sat Nov 13 01:15:18 AEDT 2021
On 12 November 2021 at 02:41 pm, Marc Zyngier wrote:
> On Fri, 12 Nov 2021 09:40:30 +0000,
> Christian Zigotzky <chzigotzky at xenosoft.de> wrote:
>> On 11 November 2021 at 06:39 pm, Marc Zyngier wrote:
>>> On Wed, 10 Nov 2021 18:07:24 +0000,
>>> Christian Zigotzky <chzigotzky at xenosoft.de> wrote:
>>>> On 09 November 2021 at 03:45 pm, Christian Zigotzky wrote:
>>>>> Hello,
>>>>>
>>>>> The Nemo board [1] doesn't recognize any ATA disks with the
>>>> pci-v5.16 updates [2].
>>>>> Error messages:
>>>>>
>>>>> ata4.00: gc timeout cmd 0xec
>>>>> ata4.00: failed to IDENTIFY (I/O error, error_mask=0x4)
>>>>> ata1.00: gc timeout cmd 0xec
>>>>> ata1.00: failed to IDENTIFY (I/O error, error_mask=0x4)
>>>>> ata3.00: gc timeout cmd 0xec
>>>>> ata3.00: failed to IDENTIFY (I/O error, error_mask=0x4)
>>>>>
>>>>> I was able to revert the new pci-v5.16 updates [2]. After a new
>>>> compiling, the kernel recognize all ATA disks correctly.
>>>>> Could you please check the pci-v5.16 updates [2]?
>>>>>
>>>>> Please find attached the kernel config.
>>>>>
>>>>> Thanks,
>>>>> Christian
>>>>>
>>>>> [1] https://en.wikipedia.org/wiki/AmigaOne_X1000
>>>>> [2]
>>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0c5c62ddf88c34bc83b66e4ac9beb2bb0e1887d4
>>>>
>>>> Hi All,
>>>>
>>>> Many thanks for your nice responses.
>>>>
>>>> I bisected today [1]. 0412841812265734c306ba5ef8088bcb64d5d3bd
>>>> (of/irq: Allow matching of an interrupt-map local to an interrupt
>>>> controller) [2] is the first bad commit.
>>> Can you please give the following hack a go and post the result
>>> (including the full dmesg)?
>>>
>>> Thanks,
>>>
>>> M.
>>> diff --git a/drivers/of/irq.c b/drivers/of/irq.c
>>> index 32be5a03951f..8cf0cc9b7caf 100644
>>> --- a/drivers/of/irq.c
>>> +++ b/drivers/of/irq.c
>>> @@ -156,14 +156,15 @@ int of_irq_parse_raw(const __be32 *addr, struct of_phandle_args *out_irq)
>>> /* Now start the actual "proper" walk of the interrupt tree */
>>> while (ipar != NULL) {
>>> + bool intc = of_property_read_bool(ipar, "interrupt-controller");
>>> +
>>> /*
>>> * Now check if cursor is an interrupt-controller and
>>> * if it is then we are done, unless there is an
>>> * interrupt-map which takes precedence.
>>> */
>>> imap = of_get_property(ipar, "interrupt-map", &imaplen);
>>> - if (imap == NULL &&
>>> - of_property_read_bool(ipar, "interrupt-controller")) {
>>> + if (imap == NULL && intc) {
>>> pr_debug(" -> got it !\n");
>>> return 0;
>>> }
>>> @@ -244,8 +245,14 @@ int of_irq_parse_raw(const __be32 *addr, struct of_phandle_args *out_irq)
>>> pr_debug(" -> imaplen=%d\n", imaplen);
>>> }
>>> - if (!match)
>>> + if (!match) {
>>> + if (intc) {
>>> + pr_info("%pOF interrupt-map failed, using interrupt-controller\n", ipar);
>>> + return 0;
>>> + }
>>> +
>>> goto fail;
>>> + }
>>> /*
>>> * Successfully parsed an interrrupt-map translation; copy new
>>>
>> The detecting of the ATA disks works with this patch! Well done!
>> Thanks a lot!
> Thanks for testing it. I'll turn that into a proper patch.
>
> M.
>
Could you please explain your patch? I am not a developer. I work for
the A-EON Linux FLS.
- Christian
More information about the Linuxppc-dev
mailing list