Re: [PASEMI] Nemo board doesn't recognize any ATA disks with the pci-v5.16 updates

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12 November 2021 at 02:41 pm, Marc Zyngier wrote:
On Fri, 12 Nov 2021 09:40:30 +0000,
Christian Zigotzky <chzigotzky@xxxxxxxxxxx> 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!
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



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux