Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1341596 > unrolled thread
| Started by | Kishon Vijay Abraham I <kishon@ti.com> |
|---|---|
| First post | 2016-02-24 07:20 +0100 |
| Last post | 2016-03-01 22:40 +0100 |
| Articles | 6 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH 0/5] Modularize PCI_DW related drivers. Kishon Vijay Abraham I <kishon@ti.com> - 2016-02-24 07:20 +0100
Re: [PATCH 0/5] Modularize PCI_DW related drivers. Arnd Bergmann <arnd@arndb.de> - 2016-02-24 10:10 +0100
Re: [PATCH 0/5] Modularize PCI_DW related drivers. Kishon Vijay Abraham I <kishon@ti.com> - 2016-02-25 09:20 +0100
Re: [PATCH 0/5] Modularize PCI_DW related drivers. Arnd Bergmann <arnd@arndb.de> - 2016-02-25 09:40 +0100
Re: [PATCH 0/5] Modularize PCI_DW related drivers. Kishon Vijay Abraham I <kishon@ti.com> - 2016-02-29 10:40 +0100
Re: [PATCH 0/5] Modularize PCI_DW related drivers. Arnd Bergmann <arnd@arndb.de> - 2016-03-01 22:40 +0100
| From | Kishon Vijay Abraham I <kishon@ti.com> |
|---|---|
| Date | 2016-02-24 07:20 +0100 |
| Subject | Re: [PATCH 0/5] Modularize PCI_DW related drivers. |
| Message-ID | <r5AXL-od-7@gated-at.bofh.it> |
Hi, On Monday 08 February 2016 05:30 AM, Paul Gortmaker wrote: > In a recent patch series that aimed to remove code related to module > unload for PCI support that was simply non modular, the discussion > led to people wanting to keep the code and push towards taking the > steps needed to support moving it towards tristate instead[1]. > > Here, we take step one, which is simply making the Kconfig change > and then dealing with any build fallout or modpost fallout. What > amounts to essentially a sanity build test. To be clear, these > have not been runtime validated; that will need to be done by those > with access to real hardware. However, the changes are not anything > that should disrupt any existing built-in validation, so real world > users should not be impacted by this change. > > We start with a smaller family of drivers; those that actively select > PCI_DW, as a nice self contained group to test the waters and see if > everyone is still good with this approach before investing more time > on a wider scale to other pci/host/ code blocks. > > As such the drivers here share a dependency on having the same group > of functions exported in order to successfully complete modpost. > > In addition, we have to stray outside drivers/pci to add exports > in two places; once for an ARM fault handler, and once for an OF > variable. > > The pci-keystone-dw.c instance was handled separately because it > consists of two source files that need their own group of driver > specific exports above and beyond the "shared" ones. > > Then we convert the Kconfig for all remaining at once; we could have > done it on a per driver basis for ease of revert if anyone really > objects, but since it would be a one line change, that seemed like > not a real concern. > > Build testing was done on the linux-next tree for arm allmodconfig. I took these patches and gave a test with DRA7xx board. As expected there was no issues when the driver was built-in. However when I tried to rmmod/modprobe I got this error [2]. Thanks Kishon [2] -> http://pastebin.ubuntu.com/15185894/ > > [1] https://lkml.kernel.org/r/20160108203102.GH5354@localhost >
[toc] | [next] | [standalone]
| From | Arnd Bergmann <arnd@arndb.de> |
|---|---|
| Date | 2016-02-24 10:10 +0100 |
| Message-ID | <r5DCh-2ih-9@gated-at.bofh.it> |
| In reply to | #1341596 |
On Wednesday 24 February 2016 11:39:26 Kishon Vijay Abraham I wrote: > Hi, > > On Monday 08 February 2016 05:30 AM, Paul Gortmaker wrote: > > In a recent patch series that aimed to remove code related to module > > unload for PCI support that was simply non modular, the discussion > > led to people wanting to keep the code and push towards taking the > > steps needed to support moving it towards tristate instead[1]. > > > > Here, we take step one, which is simply making the Kconfig change > > and then dealing with any build fallout or modpost fallout. What > > amounts to essentially a sanity build test. To be clear, these > > have not been runtime validated; that will need to be done by those > > with access to real hardware. However, the changes are not anything > > that should disrupt any existing built-in validation, so real world > > users should not be impacted by this change. > > > > We start with a smaller family of drivers; those that actively select > > PCI_DW, as a nice self contained group to test the waters and see if > > everyone is still good with this approach before investing more time > > on a wider scale to other pci/host/ code blocks. > > > > As such the drivers here share a dependency on having the same group > > of functions exported in order to successfully complete modpost. > > > > In addition, we have to stray outside drivers/pci to add exports > > in two places; once for an ARM fault handler, and once for an OF > > variable. > > > > The pci-keystone-dw.c instance was handled separately because it > > consists of two source files that need their own group of driver > > specific exports above and beyond the "shared" ones. > > > > Then we convert the Kconfig for all remaining at once; we could have > > done it on a per driver basis for ease of revert if anyone really > > objects, but since it would be a one line change, that seemed like > > not a real concern. > > > > Build testing was done on the linux-next tree for arm allmodconfig. > > I took these patches and gave a test with DRA7xx board. As expected there was > no issues when the driver was built-in. However when I tried to rmmod/modprobe > I got this error [2]. Thanks for testing this! > [2] -> http://pastebin.ubuntu.com/15185894/ It looks like you are hitting the BUG_ON() in ioremap_pte_range() that checks if a virtual address already has a page table entry, which in turn is probably a result of dw_pcie_host_init() calling pci_remap_iospace() again for the same memory area it has called the last time, and no cleanup done inbetween. Could you try adding a pci_unmap_iospace() and calling that in the device remove function? Let me know if you need help implementing it. Arnd
[toc] | [prev] | [next] | [standalone]
| From | Kishon Vijay Abraham I <kishon@ti.com> |
|---|---|
| Date | 2016-02-25 09:20 +0100 |
| Message-ID | <r5Zjs-XU-13@gated-at.bofh.it> |
| In reply to | #1341678 |
Hi Arnd, On Wednesday 24 February 2016 02:34 PM, Arnd Bergmann wrote: > On Wednesday 24 February 2016 11:39:26 Kishon Vijay Abraham I wrote: >> Hi, >> >> On Monday 08 February 2016 05:30 AM, Paul Gortmaker wrote: >>> In a recent patch series that aimed to remove code related to module >>> unload for PCI support that was simply non modular, the discussion >>> led to people wanting to keep the code and push towards taking the >>> steps needed to support moving it towards tristate instead[1]. >>> >>> Here, we take step one, which is simply making the Kconfig change >>> and then dealing with any build fallout or modpost fallout. What >>> amounts to essentially a sanity build test. To be clear, these >>> have not been runtime validated; that will need to be done by those >>> with access to real hardware. However, the changes are not anything >>> that should disrupt any existing built-in validation, so real world >>> users should not be impacted by this change. >>> >>> We start with a smaller family of drivers; those that actively select >>> PCI_DW, as a nice self contained group to test the waters and see if >>> everyone is still good with this approach before investing more time >>> on a wider scale to other pci/host/ code blocks. >>> >>> As such the drivers here share a dependency on having the same group >>> of functions exported in order to successfully complete modpost. >>> >>> In addition, we have to stray outside drivers/pci to add exports >>> in two places; once for an ARM fault handler, and once for an OF >>> variable. >>> >>> The pci-keystone-dw.c instance was handled separately because it >>> consists of two source files that need their own group of driver >>> specific exports above and beyond the "shared" ones. >>> >>> Then we convert the Kconfig for all remaining at once; we could have >>> done it on a per driver basis for ease of revert if anyone really >>> objects, but since it would be a one line change, that seemed like >>> not a real concern. >>> >>> Build testing was done on the linux-next tree for arm allmodconfig. >> >> I took these patches and gave a test with DRA7xx board. As expected there was >> no issues when the driver was built-in. However when I tried to rmmod/modprobe >> I got this error [2]. > > Thanks for testing this! > >> [2] -> http://pastebin.ubuntu.com/15185894/ > > It looks like you are hitting the BUG_ON() in ioremap_pte_range() > that checks if a virtual address already has a page table entry, > which in turn is probably a result of dw_pcie_host_init() > calling pci_remap_iospace() again for the same memory area > it has called the last time, and no cleanup done inbetween. > > Could you try adding a pci_unmap_iospace() and calling that > in the device remove function? Let me know if you need help > implementing it. That didn't look straight forward to me :-( I'll try to see this next week. Any help from you will make it simpler for me. Thanks Kishon
[toc] | [prev] | [next] | [standalone]
| From | Arnd Bergmann <arnd@arndb.de> |
|---|---|
| Date | 2016-02-25 09:40 +0100 |
| Message-ID | <r5ZCP-15Z-31@gated-at.bofh.it> |
| In reply to | #1342953 |
On Thursday 25 February 2016 13:43:48 Kishon Vijay Abraham I wrote:
> Hi Arnd,
>
> On Wednesday 24 February 2016 02:34 PM, Arnd Bergmann wrote:
> > On Wednesday 24 February 2016 11:39:26 Kishon Vijay Abraham I wrote:
> >> Hi,
> >>
> >> On Monday 08 February 2016 05:30 AM, Paul Gortmaker wrote:
> >>> In a recent patch series that aimed to remove code related to module
> >>> unload for PCI support that was simply non modular, the discussion
> >>> led to people wanting to keep the code and push towards taking the
> >>> steps needed to support moving it towards tristate instead[1].
> >>>
> >>> Here, we take step one, which is simply making the Kconfig change
> >>> and then dealing with any build fallout or modpost fallout. What
> >>> amounts to essentially a sanity build test. To be clear, these
> >>> have not been runtime validated; that will need to be done by those
> >>> with access to real hardware. However, the changes are not anything
> >>> that should disrupt any existing built-in validation, so real world
> >>> users should not be impacted by this change.
> >>>
> >>> We start with a smaller family of drivers; those that actively select
> >>> PCI_DW, as a nice self contained group to test the waters and see if
> >>> everyone is still good with this approach before investing more time
> >>> on a wider scale to other pci/host/ code blocks.
> >>>
> >>> As such the drivers here share a dependency on having the same group
> >>> of functions exported in order to successfully complete modpost.
> >>>
> >>> In addition, we have to stray outside drivers/pci to add exports
> >>> in two places; once for an ARM fault handler, and once for an OF
> >>> variable.
> >>>
> >>> The pci-keystone-dw.c instance was handled separately because it
> >>> consists of two source files that need their own group of driver
> >>> specific exports above and beyond the "shared" ones.
> >>>
> >>> Then we convert the Kconfig for all remaining at once; we could have
> >>> done it on a per driver basis for ease of revert if anyone really
> >>> objects, but since it would be a one line change, that seemed like
> >>> not a real concern.
> >>>
> >>> Build testing was done on the linux-next tree for arm allmodconfig.
> >>
> >> I took these patches and gave a test with DRA7xx board. As expected there was
> >> no issues when the driver was built-in. However when I tried to rmmod/modprobe
> >> I got this error [2].
> >
> > Thanks for testing this!
> >
> >> [2] -> http://pastebin.ubuntu.com/15185894/
> >
> > It looks like you are hitting the BUG_ON() in ioremap_pte_range()
> > that checks if a virtual address already has a page table entry,
> > which in turn is probably a result of dw_pcie_host_init()
> > calling pci_remap_iospace() again for the same memory area
> > it has called the last time, and no cleanup done inbetween.
> >
> > Could you try adding a pci_unmap_iospace() and calling that
> > in the device remove function? Let me know if you need help
> > implementing it.
>
> That didn't look straight forward to me :-( I'll try to see this next week. Any
> help from you will make it simpler for me.
I tried writing the function now, and I think it's actually quite easy:
void pci_unmap_iospace(const struct resource *res)
{
#if defined(PCI_IOBASE) && defined(CONFIG_MMU)
return iounmap(PCI_IOBASE + res->start);
#endif
}
You just need to pass the same resource in here htat you pass into
pci_remap_iospace().
Arnd
[toc] | [prev] | [next] | [standalone]
| From | Kishon Vijay Abraham I <kishon@ti.com> |
|---|---|
| Date | 2016-02-29 10:40 +0100 |
| Message-ID | <r7st5-1cj-17@gated-at.bofh.it> |
| In reply to | #1342973 |
Hi Arnd,
On Thursday 25 February 2016 02:05 PM, Arnd Bergmann wrote:
> On Thursday 25 February 2016 13:43:48 Kishon Vijay Abraham I wrote:
>> Hi Arnd,
>>
>> On Wednesday 24 February 2016 02:34 PM, Arnd Bergmann wrote:
>>> On Wednesday 24 February 2016 11:39:26 Kishon Vijay Abraham I wrote:
>>>> Hi,
>>>>
>>>> On Monday 08 February 2016 05:30 AM, Paul Gortmaker wrote:
>>>>> In a recent patch series that aimed to remove code related to module
>>>>> unload for PCI support that was simply non modular, the discussion
>>>>> led to people wanting to keep the code and push towards taking the
>>>>> steps needed to support moving it towards tristate instead[1].
>>>>>
>>>>> Here, we take step one, which is simply making the Kconfig change
>>>>> and then dealing with any build fallout or modpost fallout. What
>>>>> amounts to essentially a sanity build test. To be clear, these
>>>>> have not been runtime validated; that will need to be done by those
>>>>> with access to real hardware. However, the changes are not anything
>>>>> that should disrupt any existing built-in validation, so real world
>>>>> users should not be impacted by this change.
>>>>>
>>>>> We start with a smaller family of drivers; those that actively select
>>>>> PCI_DW, as a nice self contained group to test the waters and see if
>>>>> everyone is still good with this approach before investing more time
>>>>> on a wider scale to other pci/host/ code blocks.
>>>>>
>>>>> As such the drivers here share a dependency on having the same group
>>>>> of functions exported in order to successfully complete modpost.
>>>>>
>>>>> In addition, we have to stray outside drivers/pci to add exports
>>>>> in two places; once for an ARM fault handler, and once for an OF
>>>>> variable.
>>>>>
>>>>> The pci-keystone-dw.c instance was handled separately because it
>>>>> consists of two source files that need their own group of driver
>>>>> specific exports above and beyond the "shared" ones.
>>>>>
>>>>> Then we convert the Kconfig for all remaining at once; we could have
>>>>> done it on a per driver basis for ease of revert if anyone really
>>>>> objects, but since it would be a one line change, that seemed like
>>>>> not a real concern.
>>>>>
>>>>> Build testing was done on the linux-next tree for arm allmodconfig.
>>>>
>>>> I took these patches and gave a test with DRA7xx board. As expected there was
>>>> no issues when the driver was built-in. However when I tried to rmmod/modprobe
>>>> I got this error [2].
>>>
>>> Thanks for testing this!
>>>
>>>> [2] -> http://pastebin.ubuntu.com/15185894/
>>>
>>> It looks like you are hitting the BUG_ON() in ioremap_pte_range()
>>> that checks if a virtual address already has a page table entry,
>>> which in turn is probably a result of dw_pcie_host_init()
>>> calling pci_remap_iospace() again for the same memory area
>>> it has called the last time, and no cleanup done inbetween.
>>>
>>> Could you try adding a pci_unmap_iospace() and calling that
>>> in the device remove function? Let me know if you need help
>>> implementing it.
>>
>> That didn't look straight forward to me :-( I'll try to see this next week. Any
>> help from you will make it simpler for me.
>
> I tried writing the function now, and I think it's actually quite easy:
>
> void pci_unmap_iospace(const struct resource *res)
> {
> #if defined(PCI_IOBASE) && defined(CONFIG_MMU)
> return iounmap(PCI_IOBASE + res->start);
> #endif
> }
>
> You just need to pass the same resource in here htat you pass into
> pci_remap_iospace().
I still seem to get the abort in ioremap_page_range().
Here's the patch I used [3] and here's the kernel log [4].
[3] -> http://pastebin.ubuntu.com/15241614/
[4] -> http://pastebin.ubuntu.com/15241637/
Thanks
Kishon
[toc] | [prev] | [next] | [standalone]
| From | Arnd Bergmann <arnd@arndb.de> |
|---|---|
| Date | 2016-03-01 22:40 +0100 |
| Message-ID | <r80bq-6s3-61@gated-at.bofh.it> |
| In reply to | #1345605 |
On Monday 29 February 2016 14:59:35 Kishon Vijay Abraham I wrote: > > } > > > > You just need to pass the same resource in here htat you pass into > > pci_remap_iospace(). > > I still seem to get the abort in ioremap_page_range(). > > Here's the patch I used [3] and here's the kernel log [4]. > > [3] -> http://pastebin.ubuntu.com/15241614/ > [4] -> http://pastebin.ubuntu.com/15241637/ > > Sorry, I'm out of ideas here. The patch looks right to me, but the problem looks unchanged. Arnd
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web