From: Murali Karicheri <m-karicheri2@ti.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: "linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"Strashko, Grygorii" <grygorii.strashko@ti.com>,
Mohit Kumar <mohit.kumar@st.com>,
Jingoo Han <jg1.han@samsung.com>,
"Shilimkar, Santosh" <santosh.shilimkar@ti.com>,
Bjorn Helgaas <bhelgaas@google.com>
Subject: Re: [PATCH v1 5/5] pci: keystone: add pcie driver based on designware core driver
Date: Thu, 29 May 2014 11:34:49 -0400 [thread overview]
Message-ID: <53875399.2020700@ti.com> (raw)
In-Reply-To: <6048322.x3M3sdDEWO@wuerfel>
On 5/15/2014 12:23 PM, Arnd Bergmann wrote:
> On Thursday 15 May 2014 12:01:32 Murali Karicheri wrote:
>
>> +static int
>> +keystone_pcie_fault(unsigned long addr, unsigned int fsr,
>> + struct pt_regs *regs)
>> +{
>> + unsigned long instr = *(unsigned long *) instruction_pointer(regs);
>> +
>> + if ((instr & 0x0e100090) == 0x00100090) {
>> + int reg = (instr >> 12) & 15;
>> +
>> + regs->uregs[reg] = -1;
>> + regs->ARM_pc += 4;
>> + }
>> +
>> + return 0;
>> +}
> This needs to check in the PCI host registers what happened and do
> some appropriate action. If the fault was not caused by PCIe, it
> should not be ignored here but get passed on to the next handler.
>
>
Arnd,
The PCI controller is not able to detect the abort error from the EP and
this gets
reported to ARM as an Asynchronous external abort. PCI fault handler
needs to
consume this fault, otherwise it can't work on the Keystone h/w.
For example pci-imx6.c has
/* Added for PCI abort handling */
static int imx6q_pcie_abort_handler(unsigned long addr,
unsigned int fsr, struct pt_regs *regs)
{
return 0;
}
Other examples are
1) arch/arm/mach-cns3xxx/pci.c
static int cns3xxx_pcie_abort_handler(unsigned long addr, unsigned int fsr,
struct pt_regs *regs)
{
if (fsr & (1 << 10))
regs->ARM_pc += 4;
return 0;
}
2) arch/.arm/plat-iop/pci.c
/*
* When a PCI device does not exist during config cycles, the 80200 gets a
* bus error instead of returning 0xffffffff. This handler simply returns.
*/
static int
iop3xx_pci_abort(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
{
DBG("PCI abort: address = 0x%08lx fsr = 0x%03x PC = 0x%08lx LR
= 0x%08lx\n",
addr, fsr, regs->ARM_pc, regs->ARM_lr);
/*
* If it was an imprecise abort, then we need to correct the
* return address to be _after_ the instruction.
*/
if (fsr & (1 << 10))
regs->ARM_pc += 4;
return 0;
}
I suggest we document this as done in plat-iop. Let me know as I need to
post my
v2 of the patch this week that incorporates all the comments so far on v1.
Murali
next prev parent reply other threads:[~2014-05-29 15:35 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-15 16:01 [PATCH v1 0/5] Add Keystone PCIe controller driver Murali Karicheri
2014-05-15 16:01 ` [PATCH v1 1/5] ARM: keystone: add pcie related options Murali Karicheri
2014-05-16 0:27 ` Jingoo Han
2014-05-16 14:36 ` Karicheri, Muralidharan
2014-05-15 16:01 ` [PATCH v1 2/5] pci: designware: enhancements to support keystone pcie Murali Karicheri
2014-05-16 2:40 ` Jingoo Han
2014-05-16 20:46 ` Karicheri, Muralidharan
2014-05-16 22:15 ` Kumar Gala
2014-05-16 22:49 ` Murali Karicheri
2014-05-15 16:01 ` [PATCH v1 3/5] phy: pci serdes phy driver for keystone Murali Karicheri
2014-05-15 16:14 ` Arnd Bergmann
2014-05-23 17:14 ` Murali Karicheri
2014-05-23 19:23 ` Arnd Bergmann
2014-05-27 16:46 ` Murali Karicheri
2014-05-27 18:36 ` Arnd Bergmann
2014-06-02 6:16 ` Kishon Vijay Abraham I
2014-06-02 6:45 ` Jingoo Han
2014-06-02 14:28 ` Murali Karicheri
2014-05-15 16:01 ` [PATCH v1 4/5] pci: dw: add common functions to support old hw based pci driver Murali Karicheri
2014-05-16 20:47 ` Karicheri, Muralidharan
2014-05-15 16:01 ` [PATCH v1 5/5] pci: keystone: add pcie driver based on designware core driver Murali Karicheri
2014-05-15 16:23 ` Arnd Bergmann
2014-05-15 17:45 ` Murali Karicheri
2014-05-15 18:20 ` Arnd Bergmann
2014-05-15 18:39 ` Jason Gunthorpe
2014-05-15 20:04 ` Murali Karicheri
2014-05-15 20:52 ` Jason Gunthorpe
2014-05-16 20:29 ` Karicheri, Muralidharan
2014-05-20 17:02 ` Jason Gunthorpe
2014-05-20 17:22 ` Bjorn Helgaas
2014-05-20 17:42 ` Jason Gunthorpe
2014-05-21 23:32 ` Murali Karicheri
2014-05-22 0:55 ` Jason Gunthorpe
[not found] ` <537E7823.5060609@ti.com>
2014-05-26 23:31 ` Jason Gunthorpe
2014-05-16 20:26 ` Murali Karicheri
2014-05-19 12:06 ` Arnd Bergmann
2014-05-19 21:10 ` Murali Karicheri
2014-05-20 7:55 ` Arnd Bergmann
2014-05-20 17:17 ` Bjorn Helgaas
2014-05-29 15:34 ` Murali Karicheri [this message]
2014-05-15 16:28 ` Arnd Bergmann
2014-05-16 22:44 ` Murali Karicheri
2014-05-19 12:12 ` Arnd Bergmann
2014-05-16 20:47 ` Karicheri, Muralidharan
2014-05-16 0:48 ` [PATCH v1 0/5] Add Keystone PCIe controller driver Jingoo Han
2014-05-16 20:40 ` Karicheri, Muralidharan
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=53875399.2020700@ti.com \
--to=m-karicheri2@ti.com \
--cc=arnd@arndb.de \
--cc=bhelgaas@google.com \
--cc=grygorii.strashko@ti.com \
--cc=jg1.han@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mohit.kumar@st.com \
--cc=santosh.shilimkar@ti.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).