On 12 November 2021 at 11:11 am, Christian Zigotzky wrote:
On 12 November 2021 at 10:40 am, Christian Zigotzky wrote:
On 11 November 2021 at 06:39 pm, Marc Zyngier wrote:
On Wed, 10 Nov 2021 18:07:24 +0000,
Christian Zigotzky <chzigotzky@xxxxxxxxxxx> 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!
Sorry, I have read the patch more carefully and I have seen that it is
an analyse patch. It's not a fix. I was too quick with my joy.
- Christian
OK, perhaps a fix after all.
if (imap == NULL && intc) // If the return value isn't NULL then there
isn't an interrupt-map. That means, this part was successfully (&&) and
"intc" will evaluated (Testing of interrupt-controller). OK, perhaps it
is a fix after all.
Output:
[ 0.072659] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.072682] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.072701] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.072720] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.072741] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.072762] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.072784] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.072805] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.072824] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.072843] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.072861] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.072929] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073167] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073191] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073211] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073232] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073252] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073272] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073292] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073319] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073339] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073371] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073392] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073412] OF: /pxp@0,e0000000 interrupt-map failed, using
interrupt-controller
[ 0.073426] PCI: Probing PCI hardware done