From: Gilles.Buloz@kontron.com (Gilles Buloz)
To: linux-arm-kernel@lists.infradead.org
Subject: LS1043A : "synchronous abort" at boot due to PCI config read
Date: Fri, 13 Apr 2018 17:32:06 +0000 [thread overview]
Message-ID: <5AD0E995.3090802@kontron.com> (raw)
Dear developers,
I currently have two functional workarounds for this issue but would like to know which one you would recommend, if any :-)
I'm using a LS1043A CPU (NXP QorIQ Layerscape) and get a "synchronous external abort" when booting because of a PCI config read
during PCI scan.
I'm using a custom hardware (based on LS1043ARDB) having a PEX8112 PCIe-to-PCI bridge connected to the LS1043A to have a PCI slot
for legacy devices. This bridge only supports PCI-Compatible config accesses (offset 0x00-0xFF).
On this PCI slot I connect a PCI module made of a PCI-to-PCIe bridge plus PCIe devices behind.
The problem occurs when the kernel probes the PCIe devices : as they are PCIe devices, the kernel does a PCI config read access at
offset 0x100 to check if "PCIe extended capability registers" are accessible (see drivers/pci/probe.c, function
pci_cfg_space_size_ext()). Unfortunately the PEX8112 PCIe-to-PCI bridge that is in the path reports an error to the CPU for this
access, and it seems there's no way to disable that on this bridge.
The first workaround I found was to patch drivers/pci/host/pci-layerscape.c to have PCIE_ABSERR_SETTING set to 0x9400 instead of
0x9401 (for PCIE_ABSERR register) to disable error reporting. This only impacts an NXP part of the Linux kernel code, but I'm not
sure this is a good idea (however it seems to be like that on Intel platforms where even MEM accesses to a no-device address return
FF without any error).
I've also tried another workaround that works : patch drivers/pci/probe.c to use bus_flags to remember if a bus is behind a bridge
without extended address capability, to avoid PCi config read accesses at offset 0x100 in
pci_cfg_space_size() / pci_cfg_space_size_ext(). But this patch impacts the generic PCI probe method of Linux.
Any Idea to properly handle that issue ?
Best regards
next reply other threads:[~2018-04-13 17:32 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-13 17:32 Gilles Buloz [this message]
2018-04-27 8:43 ` LS1043A : "synchronous abort" at boot due to PCI config read Ard Biesheuvel
2018-04-27 8:43 ` Ard Biesheuvel
2018-04-27 12:29 ` Gilles Buloz
2018-04-27 12:29 ` Gilles Buloz
2018-04-27 16:56 ` Bjorn Helgaas
2018-04-27 16:56 ` Bjorn Helgaas
2018-04-30 8:46 ` Gilles Buloz
2018-04-30 8:46 ` Gilles Buloz
2018-04-30 13:36 ` Gilles Buloz
2018-04-30 13:36 ` Gilles Buloz
2018-04-30 17:04 ` Bjorn Helgaas
2018-04-30 17:04 ` Bjorn Helgaas
2018-04-30 17:53 ` Gilles Buloz
2018-04-30 17:53 ` Gilles Buloz
2018-05-02 12:57 ` Gilles Buloz
2018-05-02 12:57 ` Gilles Buloz
2018-05-02 13:26 ` Bjorn Helgaas
2018-05-02 13:26 ` Bjorn Helgaas
2018-05-02 13:48 ` Gilles Buloz
2018-05-02 13:48 ` Gilles Buloz
2018-05-02 17:23 ` Bjorn Helgaas
2018-05-02 17:23 ` Bjorn Helgaas
2018-05-03 12:40 ` Gilles Buloz
2018-05-03 12:40 ` Gilles Buloz
2018-05-03 22:31 ` [PATCH] PCI: Check whether bridges allow access to extended config space Bjorn Helgaas
2018-05-03 22:31 ` Bjorn Helgaas
2018-05-03 22:31 ` Bjorn Helgaas
2018-05-04 15:45 ` Gilles Buloz
2018-05-04 15:45 ` Gilles Buloz
2018-05-04 15:45 ` Gilles Buloz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5AD0E995.3090802@kontron.com \
--to=gilles.buloz@kontron.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.