* [PATCH 1/2] lib: devres: add a helper function for ioremap_wc
@ 2014-12-11 2:58 Abhilash Kesavan
2014-12-11 2:58 ` [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap Abhilash Kesavan
2015-01-10 3:30 ` [PATCH 1/2] lib: devres: add a helper function for ioremap_wc Abhilash Kesavan
0 siblings, 2 replies; 15+ messages in thread
From: Abhilash Kesavan @ 2014-12-11 2:58 UTC (permalink / raw)
To: catalin.marinas, Will.Deacon, heiko, Li.Xiubo, shc_work, p.zabel,
nicoleotsuka, arnd, gregkh, robh+dt, grant.likely, linux-kernel,
corbet
Cc: padma.v, alsa-devel, shawn.guo, bcousson, tony, kernel, kgene,
kesavan.abhilash, pawel.moll
Implement a resource managed writecombine ioremap function.
Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
---
Documentation/driver-model/devres.txt | 1 +
include/linux/io.h | 2 ++
lib/devres.c | 28 ++++++++++++++++++++++++++++
3 files changed, 31 insertions(+)
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt
index b5ab416..0f80cee 100644
--- a/Documentation/driver-model/devres.txt
+++ b/Documentation/driver-model/devres.txt
@@ -274,6 +274,7 @@ IOMAP
devm_ioport_unmap()
devm_ioremap()
devm_ioremap_nocache()
+ devm_ioremap_wc()
devm_ioremap_resource() : checks resource, requests memory region, ioremaps
devm_iounmap()
pcim_iomap()
diff --git a/include/linux/io.h b/include/linux/io.h
index fa02e55..42b33f0 100644
--- a/include/linux/io.h
+++ b/include/linux/io.h
@@ -64,6 +64,8 @@ void __iomem *devm_ioremap(struct device *dev, resource_size_t offset,
resource_size_t size);
void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset,
resource_size_t size);
+void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset,
+ resource_size_t size);
void devm_iounmap(struct device *dev, void __iomem *addr);
int check_signature(const volatile void __iomem *io_addr,
const unsigned char *signature, int length);
diff --git a/lib/devres.c b/lib/devres.c
index 0f1dd2e..e8e1738 100644
--- a/lib/devres.c
+++ b/lib/devres.c
@@ -72,6 +72,34 @@ void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset,
EXPORT_SYMBOL(devm_ioremap_nocache);
/**
+ * devm_ioremap_wc - Managed ioremap_wc()
+ * @dev: Generic device to remap IO address for
+ * @offset: BUS offset to map
+ * @size: Size of map
+ *
+ * Managed ioremap_wc(). Map is automatically unmapped on driver detach.
+ */
+void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset,
+ resource_size_t size)
+{
+ void __iomem **ptr, *addr;
+
+ ptr = devres_alloc(devm_ioremap_release, sizeof(*ptr), GFP_KERNEL);
+ if (!ptr)
+ return NULL;
+
+ addr = ioremap_wc(offset, size);
+ if (addr) {
+ *ptr = addr;
+ devres_add(dev, ptr);
+ } else
+ devres_free(ptr);
+
+ return addr;
+}
+EXPORT_SYMBOL(devm_ioremap_wc);
+
+/**
* devm_iounmap - Managed iounmap()
* @dev: Generic device to unmap for
* @addr: Address to unmap
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2014-12-11 2:58 [PATCH 1/2] lib: devres: add a helper function for ioremap_wc Abhilash Kesavan
@ 2014-12-11 2:58 ` Abhilash Kesavan
2014-12-11 10:08 ` Philipp Zabel
2015-01-10 3:30 ` [PATCH 1/2] lib: devres: add a helper function for ioremap_wc Abhilash Kesavan
1 sibling, 1 reply; 15+ messages in thread
From: Abhilash Kesavan @ 2014-12-11 2:58 UTC (permalink / raw)
To: catalin.marinas, Will.Deacon, heiko, Li.Xiubo, shc_work, p.zabel,
nicoleotsuka, arnd, gregkh, robh+dt, grant.likely, linux-kernel,
corbet
Cc: padma.v, alsa-devel, shawn.guo, bcousson, tony, kernel, kgene,
kesavan.abhilash, pawel.moll
Currently, the SRAM allocator returns device memory via ioremap.
This causes issues on ARM64 when the internal SoC SRAM allocated by
the generic sram driver is used for audio playback. The destination
buffer address (which is ioremapped SRAM) is not 64-bit aligned for
certain streams (e.g. 44.1k sampling rate). In such cases we get
unhandled alignment faults. Use ioremap_wc in place of ioremap which
gives us normal non-cacheable memory instead of device memory.
Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
---
This is based on the discussion about the crash here:
http://www.spinics.net/lists/arm-kernel/msg384647.html
drivers/misc/sram.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/drivers/misc/sram.c b/drivers/misc/sram.c
index 21181fa..15b4d4e 100644
--- a/drivers/misc/sram.c
+++ b/drivers/misc/sram.c
@@ -69,12 +69,23 @@ static int sram_probe(struct platform_device *pdev)
INIT_LIST_HEAD(&reserve_list);
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- virt_base = devm_ioremap_resource(&pdev->dev, res);
- if (IS_ERR(virt_base))
- return PTR_ERR(virt_base);
+ if (!res) {
+ dev_err(&pdev->dev, "found no memory resource\n");
+ return -EINVAL;
+ }
size = resource_size(res);
+ if (!devm_request_mem_region(&pdev->dev,
+ res->start, size, pdev->name)) {
+ dev_err(&pdev->dev, "could not request region for resource\n");
+ return -EBUSY;
+ }
+
+ virt_base = devm_ioremap_wc(&pdev->dev, res->start, size);
+ if (IS_ERR(virt_base))
+ return PTR_ERR(virt_base);
+
sram = devm_kzalloc(&pdev->dev, sizeof(*sram), GFP_KERNEL);
if (!sram)
return -ENOMEM;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2014-12-11 2:58 ` [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap Abhilash Kesavan
@ 2014-12-11 10:08 ` Philipp Zabel
2014-12-11 10:39 ` Will Deacon
0 siblings, 1 reply; 15+ messages in thread
From: Philipp Zabel @ 2014-12-11 10:08 UTC (permalink / raw)
To: Abhilash Kesavan
Cc: alsa-devel, heiko, padma.v, tony, catalin.marinas, Will.Deacon,
kesavan.abhilash, arnd, shc_work, corbet, kgene, grant.likely,
kernel, pawel.moll, nicoleotsuka, robh+dt, shawn.guo, Li.Xiubo,
linux-kernel, Santosh Shilimkar, bcousson, gregkh
Hi Abhilash,
Am Donnerstag, den 11.12.2014, 08:28 +0530 schrieb Abhilash Kesavan:
> Currently, the SRAM allocator returns device memory via ioremap.
> This causes issues on ARM64 when the internal SoC SRAM allocated by
> the generic sram driver is used for audio playback. The destination
> buffer address (which is ioremapped SRAM) is not 64-bit aligned for
> certain streams (e.g. 44.1k sampling rate). In such cases we get
> unhandled alignment faults. Use ioremap_wc in place of ioremap which
> gives us normal non-cacheable memory instead of device memory.
Could this break the omap_bus_sync() implementation in
arch/arm/mach-omap2/omap4-common.c?
void omap_bus_sync(void)
{
if (dram_sync && sram_sync) {
writel_relaxed(readl_relaxed(dram_sync), dram_sync);
writel_relaxed(readl_relaxed(sram_sync), sram_sync);
isb();
}
}
It is used in wmb() and omap_do_wfi() to drain interconnect write
buffers on omap4/5. If sram_sync is mapped with write-combining, could
the last write to sram_sync stay stuck in the write-combining buffer
until after the function returns?
regards
Philipp
> Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
> ---
> This is based on the discussion about the crash here:
> http://www.spinics.net/lists/arm-kernel/msg384647.html
>
> drivers/misc/sram.c | 17 ++++++++++++++---
> 1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/misc/sram.c b/drivers/misc/sram.c
> index 21181fa..15b4d4e 100644
> --- a/drivers/misc/sram.c
> +++ b/drivers/misc/sram.c
> @@ -69,12 +69,23 @@ static int sram_probe(struct platform_device *pdev)
> INIT_LIST_HEAD(&reserve_list);
>
> res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> - virt_base = devm_ioremap_resource(&pdev->dev, res);
> - if (IS_ERR(virt_base))
> - return PTR_ERR(virt_base);
> + if (!res) {
> + dev_err(&pdev->dev, "found no memory resource\n");
> + return -EINVAL;
> + }
>
> size = resource_size(res);
>
> + if (!devm_request_mem_region(&pdev->dev,
> + res->start, size, pdev->name)) {
> + dev_err(&pdev->dev, "could not request region for resource\n");
> + return -EBUSY;
> + }
> +
> + virt_base = devm_ioremap_wc(&pdev->dev, res->start, size);
> + if (IS_ERR(virt_base))
> + return PTR_ERR(virt_base);
> +
> sram = devm_kzalloc(&pdev->dev, sizeof(*sram), GFP_KERNEL);
> if (!sram)
> return -ENOMEM;
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2014-12-11 10:08 ` Philipp Zabel
@ 2014-12-11 10:39 ` Will Deacon
2014-12-11 11:40 ` Philipp Zabel
0 siblings, 1 reply; 15+ messages in thread
From: Will Deacon @ 2014-12-11 10:39 UTC (permalink / raw)
To: Philipp Zabel
Cc: Abhilash Kesavan, Santosh Shilimkar, Catalin Marinas,
heiko@sntech.de, Li.Xiubo@freescale.com, shc_work@mail.ru,
nicoleotsuka@gmail.com, arnd@arndb.de, gregkh@linuxfoundation.org,
robh+dt@kernel.org, grant.likely@linaro.org,
linux-kernel@vger.kernel.org, corbet@lwn.net, padma.v@samsung.com,
alsa-devel@alsa-project.org, shawn.guo@freescale.com,
bcousson@baylibre.com, tony@atomide.com, kernel@pengutronix.de
On Thu, Dec 11, 2014 at 10:08:33AM +0000, Philipp Zabel wrote:
> Hi Abhilash,
>
> Am Donnerstag, den 11.12.2014, 08:28 +0530 schrieb Abhilash Kesavan:
> > Currently, the SRAM allocator returns device memory via ioremap.
> > This causes issues on ARM64 when the internal SoC SRAM allocated by
> > the generic sram driver is used for audio playback. The destination
> > buffer address (which is ioremapped SRAM) is not 64-bit aligned for
> > certain streams (e.g. 44.1k sampling rate). In such cases we get
> > unhandled alignment faults. Use ioremap_wc in place of ioremap which
> > gives us normal non-cacheable memory instead of device memory.
>
> Could this break the omap_bus_sync() implementation in
> arch/arm/mach-omap2/omap4-common.c?
>
> void omap_bus_sync(void)
> {
> if (dram_sync && sram_sync) {
> writel_relaxed(readl_relaxed(dram_sync), dram_sync);
> writel_relaxed(readl_relaxed(sram_sync), sram_sync);
> isb();
> }
> }
>
> It is used in wmb() and omap_do_wfi() to drain interconnect write
> buffers on omap4/5. If sram_sync is mapped with write-combining, could
> the last write to sram_sync stay stuck in the write-combining buffer
> until after the function returns?
I think you have that issue anyway, since you can get an early write
response even if you use ioremap. Does the write to sram_sync have
side-effects that we need to wait for?
Will
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2014-12-11 10:39 ` Will Deacon
@ 2014-12-11 11:40 ` Philipp Zabel
2014-12-11 14:58 ` Catalin Marinas
0 siblings, 1 reply; 15+ messages in thread
From: Philipp Zabel @ 2014-12-11 11:40 UTC (permalink / raw)
To: Will Deacon
Cc: Abhilash Kesavan, Santosh Shilimkar, Tony Lindgren,
Catalin Marinas, heiko@sntech.de, Li.Xiubo@freescale.com,
shc_work@mail.ru, nicoleotsuka@gmail.com, arnd@arndb.de,
gregkh@linuxfoundation.org, robh+dt@kernel.org,
grant.likely@linaro.org, linux-kernel@vger.kernel.org,
corbet@lwn.net, padma.v@samsung.com, alsa-devel@alsa-project.org,
shawn.guo@freescale.com, bcousson@baylibre.com
Hi Will,
Am Donnerstag, den 11.12.2014, 10:39 +0000 schrieb Will Deacon:
> On Thu, Dec 11, 2014 at 10:08:33AM +0000, Philipp Zabel wrote:
> > Hi Abhilash,
> >
> > Am Donnerstag, den 11.12.2014, 08:28 +0530 schrieb Abhilash Kesavan:
> > > Currently, the SRAM allocator returns device memory via ioremap.
> > > This causes issues on ARM64 when the internal SoC SRAM allocated by
> > > the generic sram driver is used for audio playback. The destination
> > > buffer address (which is ioremapped SRAM) is not 64-bit aligned for
> > > certain streams (e.g. 44.1k sampling rate). In such cases we get
> > > unhandled alignment faults. Use ioremap_wc in place of ioremap which
> > > gives us normal non-cacheable memory instead of device memory.
> >
> > Could this break the omap_bus_sync() implementation in
> > arch/arm/mach-omap2/omap4-common.c?
> >
> > void omap_bus_sync(void)
> > {
> > if (dram_sync && sram_sync) {
> > writel_relaxed(readl_relaxed(dram_sync), dram_sync);
> > writel_relaxed(readl_relaxed(sram_sync), sram_sync);
> > isb();
> > }
> > }
> >
> > It is used in wmb() and omap_do_wfi() to drain interconnect write
> > buffers on omap4/5. If sram_sync is mapped with write-combining, could
> > the last write to sram_sync stay stuck in the write-combining buffer
> > until after the function returns?
>
> I think you have that issue anyway, since you can get an early write
> response even if you use ioremap. Does the write to sram_sync have
> side-effects that we need to wait for?
[Added Tony Lindgren and Santosh Shilimkar to Cc:]
I don't know.
regards
Philipp
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2014-12-11 11:40 ` Philipp Zabel
@ 2014-12-11 14:58 ` Catalin Marinas
2014-12-17 12:35 ` Abhilash Kesavan
0 siblings, 1 reply; 15+ messages in thread
From: Catalin Marinas @ 2014-12-11 14:58 UTC (permalink / raw)
To: Philipp Zabel
Cc: Will Deacon, Abhilash Kesavan, Santosh Shilimkar, Tony Lindgren,
heiko@sntech.de, Li.Xiubo@freescale.com, shc_work@mail.ru,
nicoleotsuka@gmail.com, arnd@arndb.de, gregkh@linuxfoundation.org,
robh+dt@kernel.org, grant.likely@linaro.org,
linux-kernel@vger.kernel.org, corbet@lwn.net, padma.v@samsung.com,
alsa-devel@alsa-project.org, shawn.guo@freescale.com,
bcousson@baylibre.com, kernel@pengutronix.de
On Thu, Dec 11, 2014 at 11:40:46AM +0000, Philipp Zabel wrote:
> Hi Will,
>
> Am Donnerstag, den 11.12.2014, 10:39 +0000 schrieb Will Deacon:
> > On Thu, Dec 11, 2014 at 10:08:33AM +0000, Philipp Zabel wrote:
> > > Hi Abhilash,
> > >
> > > Am Donnerstag, den 11.12.2014, 08:28 +0530 schrieb Abhilash Kesavan:
> > > > Currently, the SRAM allocator returns device memory via ioremap.
> > > > This causes issues on ARM64 when the internal SoC SRAM allocated by
> > > > the generic sram driver is used for audio playback. The destination
> > > > buffer address (which is ioremapped SRAM) is not 64-bit aligned for
> > > > certain streams (e.g. 44.1k sampling rate). In such cases we get
> > > > unhandled alignment faults. Use ioremap_wc in place of ioremap which
> > > > gives us normal non-cacheable memory instead of device memory.
> > >
> > > Could this break the omap_bus_sync() implementation in
> > > arch/arm/mach-omap2/omap4-common.c?
> > >
> > > void omap_bus_sync(void)
> > > {
> > > if (dram_sync && sram_sync) {
> > > writel_relaxed(readl_relaxed(dram_sync), dram_sync);
> > > writel_relaxed(readl_relaxed(sram_sync), sram_sync);
> > > isb();
> > > }
> > > }
> > >
> > > It is used in wmb() and omap_do_wfi() to drain interconnect write
> > > buffers on omap4/5. If sram_sync is mapped with write-combining, could
> > > the last write to sram_sync stay stuck in the write-combining buffer
> > > until after the function returns?
> >
> > I think you have that issue anyway, since you can get an early write
> > response even if you use ioremap. Does the write to sram_sync have
> > side-effects that we need to wait for?
>
> [Added Tony Lindgren and Santosh Shilimkar to Cc:]
> I don't know.
In addition to Will's question, do you care about the access size?
ioremap() returns Device memory which is bufferable (early
acknowledgement) but it guarantees the access size. With write
combining, you may get a different access size than requested.
--
Catalin
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2014-12-11 14:58 ` Catalin Marinas
@ 2014-12-17 12:35 ` Abhilash Kesavan
2015-01-05 18:18 ` Tony Lindgren
0 siblings, 1 reply; 15+ messages in thread
From: Abhilash Kesavan @ 2014-12-17 12:35 UTC (permalink / raw)
To: Catalin Marinas
Cc: Philipp Zabel, Will Deacon, Santosh Shilimkar, Tony Lindgren,
heiko@sntech.de, Li.Xiubo@freescale.com, shc_work@mail.ru,
nicoleotsuka@gmail.com, arnd@arndb.de, gregkh@linuxfoundation.org,
robh+dt@kernel.org, grant.likely@linaro.org,
linux-kernel@vger.kernel.org, corbet@lwn.net, padma.v@samsung.com,
alsa-devel@alsa-project.org, shawn.guo@freescale.com,
bcousson@baylibre.com, kernel@pengutronix.de
Hi,
On Thu, Dec 11, 2014 at 8:28 PM, Catalin Marinas
<catalin.marinas@arm.com> wrote:
> On Thu, Dec 11, 2014 at 11:40:46AM +0000, Philipp Zabel wrote:
>> Hi Will,
>>
>> Am Donnerstag, den 11.12.2014, 10:39 +0000 schrieb Will Deacon:
>> > On Thu, Dec 11, 2014 at 10:08:33AM +0000, Philipp Zabel wrote:
>> > > Hi Abhilash,
>> > >
>> > > Am Donnerstag, den 11.12.2014, 08:28 +0530 schrieb Abhilash Kesavan:
>> > > > Currently, the SRAM allocator returns device memory via ioremap.
>> > > > This causes issues on ARM64 when the internal SoC SRAM allocated by
>> > > > the generic sram driver is used for audio playback. The destination
>> > > > buffer address (which is ioremapped SRAM) is not 64-bit aligned for
>> > > > certain streams (e.g. 44.1k sampling rate). In such cases we get
>> > > > unhandled alignment faults. Use ioremap_wc in place of ioremap which
>> > > > gives us normal non-cacheable memory instead of device memory.
>> > >
>> > > Could this break the omap_bus_sync() implementation in
>> > > arch/arm/mach-omap2/omap4-common.c?
>> > >
>> > > void omap_bus_sync(void)
>> > > {
>> > > if (dram_sync && sram_sync) {
>> > > writel_relaxed(readl_relaxed(dram_sync), dram_sync);
>> > > writel_relaxed(readl_relaxed(sram_sync), sram_sync);
>> > > isb();
>> > > }
>> > > }
>> > >
>> > > It is used in wmb() and omap_do_wfi() to drain interconnect write
>> > > buffers on omap4/5. If sram_sync is mapped with write-combining, could
>> > > the last write to sram_sync stay stuck in the write-combining buffer
>> > > until after the function returns?
>> >
>> > I think you have that issue anyway, since you can get an early write
>> > response even if you use ioremap. Does the write to sram_sync have
>> > side-effects that we need to wait for?
>>
>> [Added Tony Lindgren and Santosh Shilimkar to Cc:]
>> I don't know.
>
> In addition to Will's question, do you care about the access size?
> ioremap() returns Device memory which is bufferable (early
> acknowledgement) but it guarantees the access size. With write
> combining, you may get a different access size than requested.
>From the existing dts files, omap, imx, rockchip and exynos seem to be
the only users of the sram allocator code. I have tested this on
Exynos5420, Exynos5800 and Exynos7; there is no change in behavior
seen on these boards. Tested-by for other SoCs would be appreciated.
Regards,
Abhilash
>
> --
> Catalin
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2014-12-17 12:35 ` Abhilash Kesavan
@ 2015-01-05 18:18 ` Tony Lindgren
2015-01-06 14:27 ` Abhilash Kesavan
0 siblings, 1 reply; 15+ messages in thread
From: Tony Lindgren @ 2015-01-05 18:18 UTC (permalink / raw)
To: Abhilash Kesavan
Cc: alsa-devel@alsa-project.org, Pawel Moll, heiko@sntech.de,
shc_work@mail.ru, corbet@lwn.net, Catalin Marinas,
kgene@kernel.org, padma.v@samsung.com, Will Deacon,
linux-kernel@vger.kernel.org, robh+dt@kernel.org,
nicoleotsuka@gmail.com, Li.Xiubo@freescale.com, Santosh Shilimkar,
shawn.guo@freescale.com, Philipp Zabel,
gregkh@linuxfoundation.org, grant.likely@linaro.org,
bcousson@baylibre.com
* Abhilash Kesavan <kesavan.abhilash@gmail.com> [141217 04:37]:
> Hi,
>
> On Thu, Dec 11, 2014 at 8:28 PM, Catalin Marinas
> <catalin.marinas@arm.com> wrote:
> > On Thu, Dec 11, 2014 at 11:40:46AM +0000, Philipp Zabel wrote:
> >> Hi Will,
> >>
> >> Am Donnerstag, den 11.12.2014, 10:39 +0000 schrieb Will Deacon:
> >> > On Thu, Dec 11, 2014 at 10:08:33AM +0000, Philipp Zabel wrote:
> >> > > Hi Abhilash,
> >> > >
> >> > > Am Donnerstag, den 11.12.2014, 08:28 +0530 schrieb Abhilash Kesavan:
> >> > > > Currently, the SRAM allocator returns device memory via ioremap.
> >> > > > This causes issues on ARM64 when the internal SoC SRAM allocated by
> >> > > > the generic sram driver is used for audio playback. The destination
> >> > > > buffer address (which is ioremapped SRAM) is not 64-bit aligned for
> >> > > > certain streams (e.g. 44.1k sampling rate). In such cases we get
> >> > > > unhandled alignment faults. Use ioremap_wc in place of ioremap which
> >> > > > gives us normal non-cacheable memory instead of device memory.
> >> > >
> >> > > Could this break the omap_bus_sync() implementation in
> >> > > arch/arm/mach-omap2/omap4-common.c?
> >> > >
> >> > > void omap_bus_sync(void)
> >> > > {
> >> > > if (dram_sync && sram_sync) {
> >> > > writel_relaxed(readl_relaxed(dram_sync), dram_sync);
> >> > > writel_relaxed(readl_relaxed(sram_sync), sram_sync);
> >> > > isb();
> >> > > }
> >> > > }
> >> > >
> >> > > It is used in wmb() and omap_do_wfi() to drain interconnect write
> >> > > buffers on omap4/5. If sram_sync is mapped with write-combining, could
> >> > > the last write to sram_sync stay stuck in the write-combining buffer
> >> > > until after the function returns?
> >> >
> >> > I think you have that issue anyway, since you can get an early write
> >> > response even if you use ioremap. Does the write to sram_sync have
> >> > side-effects that we need to wait for?
> >>
> >> [Added Tony Lindgren and Santosh Shilimkar to Cc:]
> >> I don't know.
> >
> > In addition to Will's question, do you care about the access size?
> > ioremap() returns Device memory which is bufferable (early
> > acknowledgement) but it guarantees the access size. With write
> > combining, you may get a different access size than requested.
>
> From the existing dts files, omap, imx, rockchip and exynos seem to be
> the only users of the sram allocator code. I have tested this on
> Exynos5420, Exynos5800 and Exynos7; there is no change in behavior
> seen on these boards. Tested-by for other SoCs would be appreciated.
Sorry for the delay, these seems to boot OK on omap4, so from that
point of view:
Tested-by: Tony Lindgren <tony@atomide.com>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2015-01-05 18:18 ` Tony Lindgren
@ 2015-01-06 14:27 ` Abhilash Kesavan
2015-01-06 16:54 ` Philipp Zabel
0 siblings, 1 reply; 15+ messages in thread
From: Abhilash Kesavan @ 2015-01-06 14:27 UTC (permalink / raw)
To: Tony Lindgren, linux-rockchip
Cc: alsa-devel@alsa-project.org, Pawel Moll, heiko@sntech.de,
shc_work@mail.ru, corbet@lwn.net, Catalin Marinas,
kgene@kernel.org, padma.v@samsung.com, Will Deacon,
linux-kernel@vger.kernel.org, robh+dt@kernel.org,
nicoleotsuka@gmail.com, Li.Xiubo@freescale.com, Santosh Shilimkar,
shawn.guo@freescale.com, Philipp Zabel,
gregkh@linuxfoundation.org, grant.likely@linaro.org,
bcousson@baylibre.com
Hi Tony,
On Mon, Jan 5, 2015 at 11:48 PM, Tony Lindgren <tony@atomide.com> wrote:
> * Abhilash Kesavan <kesavan.abhilash@gmail.com> [141217 04:37]:
>> Hi,
>>
>> On Thu, Dec 11, 2014 at 8:28 PM, Catalin Marinas
>> <catalin.marinas@arm.com> wrote:
>> > On Thu, Dec 11, 2014 at 11:40:46AM +0000, Philipp Zabel wrote:
>> >> Hi Will,
>> >>
>> >> Am Donnerstag, den 11.12.2014, 10:39 +0000 schrieb Will Deacon:
>> >> > On Thu, Dec 11, 2014 at 10:08:33AM +0000, Philipp Zabel wrote:
>> >> > > Hi Abhilash,
>> >> > >
>> >> > > Am Donnerstag, den 11.12.2014, 08:28 +0530 schrieb Abhilash Kesavan:
>> >> > > > Currently, the SRAM allocator returns device memory via ioremap.
>> >> > > > This causes issues on ARM64 when the internal SoC SRAM allocated by
>> >> > > > the generic sram driver is used for audio playback. The destination
>> >> > > > buffer address (which is ioremapped SRAM) is not 64-bit aligned for
>> >> > > > certain streams (e.g. 44.1k sampling rate). In such cases we get
>> >> > > > unhandled alignment faults. Use ioremap_wc in place of ioremap which
>> >> > > > gives us normal non-cacheable memory instead of device memory.
>> >> > >
>> >> > > Could this break the omap_bus_sync() implementation in
>> >> > > arch/arm/mach-omap2/omap4-common.c?
>> >> > >
>> >> > > void omap_bus_sync(void)
>> >> > > {
>> >> > > if (dram_sync && sram_sync) {
>> >> > > writel_relaxed(readl_relaxed(dram_sync), dram_sync);
>> >> > > writel_relaxed(readl_relaxed(sram_sync), sram_sync);
>> >> > > isb();
>> >> > > }
>> >> > > }
>> >> > >
>> >> > > It is used in wmb() and omap_do_wfi() to drain interconnect write
>> >> > > buffers on omap4/5. If sram_sync is mapped with write-combining, could
>> >> > > the last write to sram_sync stay stuck in the write-combining buffer
>> >> > > until after the function returns?
>> >> >
>> >> > I think you have that issue anyway, since you can get an early write
>> >> > response even if you use ioremap. Does the write to sram_sync have
>> >> > side-effects that we need to wait for?
>> >>
>> >> [Added Tony Lindgren and Santosh Shilimkar to Cc:]
>> >> I don't know.
>> >
>> > In addition to Will's question, do you care about the access size?
>> > ioremap() returns Device memory which is bufferable (early
>> > acknowledgement) but it guarantees the access size. With write
>> > combining, you may get a different access size than requested.
>>
>> From the existing dts files, omap, imx, rockchip and exynos seem to be
>> the only users of the sram allocator code. I have tested this on
>> Exynos5420, Exynos5800 and Exynos7; there is no change in behavior
>> seen on these boards. Tested-by for other SoCs would be appreciated.
>
> Sorry for the delay, these seems to boot OK on omap4, so from that
> point of view:
>
> Tested-by: Tony Lindgren <tony@atomide.com>
Thanks a lot for testing this. If someone with imx and rockchip boards
could help test this out, then we could look to get this in.
Regards,
Abhilash
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2015-01-06 14:27 ` Abhilash Kesavan
@ 2015-01-06 16:54 ` Philipp Zabel
2015-01-06 17:27 ` Rob Herring
0 siblings, 1 reply; 15+ messages in thread
From: Philipp Zabel @ 2015-01-06 16:54 UTC (permalink / raw)
To: Abhilash Kesavan
Cc: alsa-devel@alsa-project.org, heiko@sntech.de, padma.v@samsung.com,
Tony Lindgren, Catalin Marinas, Will Deacon, arnd@arndb.de,
shc_work@mail.ru, corbet@lwn.net, linux-rockchip,
kgene@kernel.org, grant.likely@linaro.org, kernel@pengutronix.de,
Pawel Moll, nicoleotsuka@gmail.com, robh+dt@kernel.org,
shawn.guo@freescale.com, Li.Xiubo@freescale.com,
linux-kernel@vger.kernel.org, Santosh Shilimkar
Hi Abhilash,
Am Dienstag, den 06.01.2015, 19:57 +0530 schrieb Abhilash Kesavan:
> >> From the existing dts files, omap, imx, rockchip and exynos seem to be
> >> the only users of the sram allocator code. I have tested this on
> >> Exynos5420, Exynos5800 and Exynos7; there is no change in behavior
> >> seen on these boards. Tested-by for other SoCs would be appreciated.
> >
> > Sorry for the delay, these seems to boot OK on omap4, so from that
> > point of view:
> >
> > Tested-by: Tony Lindgren <tony@atomide.com>
>
> Thanks a lot for testing this. If someone with imx and rockchip boards
> could help test this out, then we could look to get this in.
This shouldn't be a problem on i.MX, the coda driver doesn't access SRAM
from the CPU at all.
regards
Philipp
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2015-01-06 16:54 ` Philipp Zabel
@ 2015-01-06 17:27 ` Rob Herring
2015-01-08 15:30 ` Abhilash Kesavan
0 siblings, 1 reply; 15+ messages in thread
From: Rob Herring @ 2015-01-06 17:27 UTC (permalink / raw)
To: Philipp Zabel
Cc: alsa-devel@alsa-project.org, heiko@sntech.de, padma.v@samsung.com,
Tony Lindgren, Catalin Marinas, Will Deacon, Abhilash Kesavan,
Pawel Moll, shc_work@mail.ru, corbet@lwn.net, linux-rockchip,
kgene@kernel.org, grant.likely@linaro.org, kernel@pengutronix.de,
arnd@arndb.de, nicoleotsuka@gmail.com, robh+dt@kernel.org,
shawn.guo@freescale.com, Li.Xiubo@freescale.com,
linux-kernel@vger.kernel.org, S
On Tue, Jan 6, 2015 at 10:54 AM, Philipp Zabel <p.zabel@pengutronix.de> wrote:
> Hi Abhilash,
>
> Am Dienstag, den 06.01.2015, 19:57 +0530 schrieb Abhilash Kesavan:
>> >> From the existing dts files, omap, imx, rockchip and exynos seem to be
>> >> the only users of the sram allocator code. I have tested this on
>> >> Exynos5420, Exynos5800 and Exynos7; there is no change in behavior
>> >> seen on these boards. Tested-by for other SoCs would be appreciated.
>> >
>> > Sorry for the delay, these seems to boot OK on omap4, so from that
>> > point of view:
>> >
>> > Tested-by: Tony Lindgren <tony@atomide.com>
>>
>> Thanks a lot for testing this. If someone with imx and rockchip boards
>> could help test this out, then we could look to get this in.
>
> This shouldn't be a problem on i.MX, the coda driver doesn't access SRAM
> from the CPU at all.
Audio buffers are typically (perhaps not in mainline) in SRAM on i.MX
chips which are accessed by CPU and probably mmap'ed to userspace.
That could cause a mismatch in mappings although I would not expect
both the kernel and user space to touch the buffer. That being said, I
don't think this change should cause problems for i.MX (from what I
can remember).
Rob
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2015-01-06 17:27 ` Rob Herring
@ 2015-01-08 15:30 ` Abhilash Kesavan
2015-01-08 20:56 ` Heiko Stübner
0 siblings, 1 reply; 15+ messages in thread
From: Abhilash Kesavan @ 2015-01-08 15:30 UTC (permalink / raw)
To: Rob Herring
Cc: Philipp Zabel, Tony Lindgren, linux-rockchip, Catalin Marinas,
Will Deacon, Santosh Shilimkar, heiko@sntech.de,
Li.Xiubo@freescale.com, shc_work@mail.ru, nicoleotsuka@gmail.com,
arnd@arndb.de, gregkh@linuxfoundation.org, robh+dt@kernel.org,
grant.likely@linaro.org, linux-kernel@vger.kernel.org,
corbet@lwn.net, padma.v@samsung.com, alsa-devel@alsa-project.org,
shawn.guo@freescale.com, bcousson
Hi Rob and Philipp,
On Tue, Jan 6, 2015 at 10:57 PM, Rob Herring <robherring2@gmail.com> wrote:
> On Tue, Jan 6, 2015 at 10:54 AM, Philipp Zabel <p.zabel@pengutronix.de> wrote:
>> Hi Abhilash,
>>
>> Am Dienstag, den 06.01.2015, 19:57 +0530 schrieb Abhilash Kesavan:
>>> >> From the existing dts files, omap, imx, rockchip and exynos seem to be
>>> >> the only users of the sram allocator code. I have tested this on
>>> >> Exynos5420, Exynos5800 and Exynos7; there is no change in behavior
>>> >> seen on these boards. Tested-by for other SoCs would be appreciated.
>>> >
>>> > Sorry for the delay, these seems to boot OK on omap4, so from that
>>> > point of view:
>>> >
>>> > Tested-by: Tony Lindgren <tony@atomide.com>
>>>
>>> Thanks a lot for testing this. If someone with imx and rockchip boards
>>> could help test this out, then we could look to get this in.
>>
>> This shouldn't be a problem on i.MX, the coda driver doesn't access SRAM
>> from the CPU at all.
>
> Audio buffers are typically (perhaps not in mainline) in SRAM on i.MX
> chips which are accessed by CPU and probably mmap'ed to userspace.
> That could cause a mismatch in mappings although I would not expect
> both the kernel and user space to touch the buffer. That being said, I
> don't think this change should cause problems for i.MX (from what I
> can remember).
Thanks for the confirmation regarding the i.MX chips. That leaves
rockchip, can someone help with it please ?
Regards,
Abhilash
>
> Rob
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap
2015-01-08 15:30 ` Abhilash Kesavan
@ 2015-01-08 20:56 ` Heiko Stübner
0 siblings, 0 replies; 15+ messages in thread
From: Heiko Stübner @ 2015-01-08 20:56 UTC (permalink / raw)
To: Abhilash Kesavan
Cc: Rob Herring, Philipp Zabel, Tony Lindgren, linux-rockchip,
Catalin Marinas, Will Deacon, Santosh Shilimkar,
Li.Xiubo@freescale.com, shc_work@mail.ru, nicoleotsuka@gmail.com,
arnd@arndb.de, gregkh@linuxfoundation.org, robh+dt@kernel.org,
grant.likely@linaro.org, linux-kernel@vger.kernel.org,
corbet@lwn.net, padma.v@samsung.com, alsa-devel@alsa-project.org,
shawn.guo@freescale.com, bcousson
Hi Abhilash,
Am Donnerstag, 8. Januar 2015, 21:00:57 schrieb Abhilash Kesavan:
> Thanks for the confirmation regarding the i.MX chips. That leaves
> rockchip, can someone help with it please ?
sorry for being late to this.
The one current sram use-case on Rockchip boards is the SMP bringup, but that
uses a reserved sram area. Nevertheless I tested your 2 patches on a rk3288
board and everything still works as expected, including smp bringup,
so on Rockchip
Tested-by: Heiko Stuebner <heiko@sntech.de>
Heiko
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] lib: devres: add a helper function for ioremap_wc
2014-12-11 2:58 [PATCH 1/2] lib: devres: add a helper function for ioremap_wc Abhilash Kesavan
2014-12-11 2:58 ` [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap Abhilash Kesavan
@ 2015-01-10 3:30 ` Abhilash Kesavan
2015-01-12 13:05 ` gregkh
1 sibling, 1 reply; 15+ messages in thread
From: Abhilash Kesavan @ 2015-01-10 3:30 UTC (permalink / raw)
To: Catalin Marinas, Will Deacon, Heiko Stübner,
Li.Xiubo@freescale.com, Alexander Shiyan, p.zabel@pengutronix.de,
Nicolin Chen, Arnd Bergmann, gregkh@linuxfoundation.org, robh+dt,
Grant Likely, linux-kernel@vger.kernel.org, Jonathan Corbet
Cc: padma.v@samsung.com, alsa-devel@alsa-project.org,
shawn.guo@freescale.com, Benoit Cousson, Tony Lindgren,
kernel@pengutronix.de, Kukjin Kim, Me2, Pawel Moll
Hi Greg,
On Thu, Dec 11, 2014 at 8:28 AM, Abhilash Kesavan <a.kesavan@samsung.com> wrote:
> Implement a resource managed writecombine ioremap function.
>
> Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
> ---
> Documentation/driver-model/devres.txt | 1 +
> include/linux/io.h | 2 ++
> lib/devres.c | 28 ++++++++++++++++++++++++++++
> 3 files changed, 31 insertions(+)
>
> diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt
> index b5ab416..0f80cee 100644
> --- a/Documentation/driver-model/devres.txt
> +++ b/Documentation/driver-model/devres.txt
> @@ -274,6 +274,7 @@ IOMAP
> devm_ioport_unmap()
> devm_ioremap()
> devm_ioremap_nocache()
> + devm_ioremap_wc()
> devm_ioremap_resource() : checks resource, requests memory region, ioremaps
> devm_iounmap()
> pcim_iomap()
> diff --git a/include/linux/io.h b/include/linux/io.h
> index fa02e55..42b33f0 100644
> --- a/include/linux/io.h
> +++ b/include/linux/io.h
> @@ -64,6 +64,8 @@ void __iomem *devm_ioremap(struct device *dev, resource_size_t offset,
> resource_size_t size);
> void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset,
> resource_size_t size);
> +void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset,
> + resource_size_t size);
> void devm_iounmap(struct device *dev, void __iomem *addr);
> int check_signature(const volatile void __iomem *io_addr,
> const unsigned char *signature, int length);
> diff --git a/lib/devres.c b/lib/devres.c
> index 0f1dd2e..e8e1738 100644
> --- a/lib/devres.c
> +++ b/lib/devres.c
> @@ -72,6 +72,34 @@ void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset,
> EXPORT_SYMBOL(devm_ioremap_nocache);
>
> /**
> + * devm_ioremap_wc - Managed ioremap_wc()
> + * @dev: Generic device to remap IO address for
> + * @offset: BUS offset to map
> + * @size: Size of map
> + *
> + * Managed ioremap_wc(). Map is automatically unmapped on driver detach.
> + */
> +void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset,
> + resource_size_t size)
> +{
> + void __iomem **ptr, *addr;
> +
> + ptr = devres_alloc(devm_ioremap_release, sizeof(*ptr), GFP_KERNEL);
> + if (!ptr)
> + return NULL;
> +
> + addr = ioremap_wc(offset, size);
These two patches were applied yesterday to the char-misc tree, but
have broken build on m32r and maybe other platforms too which do not
have ioremap_wc defined. Unfortunately I missed catching this as I
built the patches only for arm64 and arm32, sorry for the trouble.
There was a patch posted a while back which added ioremap_wc for m32r
(https://lkml.org/lkml/2013/6/26/795). I would have to do something
similar for all the other archs which do not have it or is there some
other solution ?
Please drop these patches in the interim so that the build is fixed.
Regards,
Abhilash
> + if (addr) {
> + *ptr = addr;
> + devres_add(dev, ptr);
> + } else
> + devres_free(ptr);
> +
> + return addr;
> +}
> +EXPORT_SYMBOL(devm_ioremap_wc);
> +
> +/**
> * devm_iounmap - Managed iounmap()
> * @dev: Generic device to unmap for
> * @addr: Address to unmap
> --
> 1.7.9.5
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] lib: devres: add a helper function for ioremap_wc
2015-01-10 3:30 ` [PATCH 1/2] lib: devres: add a helper function for ioremap_wc Abhilash Kesavan
@ 2015-01-12 13:05 ` gregkh
0 siblings, 0 replies; 15+ messages in thread
From: gregkh @ 2015-01-12 13:05 UTC (permalink / raw)
To: Abhilash Kesavan
Cc: Catalin Marinas, Will Deacon, Heiko Stübner,
Li.Xiubo@freescale.com, Alexander Shiyan, p.zabel@pengutronix.de,
Nicolin Chen, Arnd Bergmann, robh+dt, Grant Likely,
linux-kernel@vger.kernel.org, Jonathan Corbet,
padma.v@samsung.com, alsa-devel@alsa-project.org,
shawn.guo@freescale.com, Benoit Cousson, Tony Lindgren,
kernel@pengutronix.de, Kukjin Kim, Pawel Moll
On Sat, Jan 10, 2015 at 09:00:54AM +0530, Abhilash Kesavan wrote:
> Hi Greg,
>
> On Thu, Dec 11, 2014 at 8:28 AM, Abhilash Kesavan <a.kesavan@samsung.com> wrote:
> > Implement a resource managed writecombine ioremap function.
> >
> > Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
> > ---
> > Documentation/driver-model/devres.txt | 1 +
> > include/linux/io.h | 2 ++
> > lib/devres.c | 28 ++++++++++++++++++++++++++++
> > 3 files changed, 31 insertions(+)
> >
> > diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt
> > index b5ab416..0f80cee 100644
> > --- a/Documentation/driver-model/devres.txt
> > +++ b/Documentation/driver-model/devres.txt
> > @@ -274,6 +274,7 @@ IOMAP
> > devm_ioport_unmap()
> > devm_ioremap()
> > devm_ioremap_nocache()
> > + devm_ioremap_wc()
> > devm_ioremap_resource() : checks resource, requests memory region, ioremaps
> > devm_iounmap()
> > pcim_iomap()
> > diff --git a/include/linux/io.h b/include/linux/io.h
> > index fa02e55..42b33f0 100644
> > --- a/include/linux/io.h
> > +++ b/include/linux/io.h
> > @@ -64,6 +64,8 @@ void __iomem *devm_ioremap(struct device *dev, resource_size_t offset,
> > resource_size_t size);
> > void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset,
> > resource_size_t size);
> > +void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset,
> > + resource_size_t size);
> > void devm_iounmap(struct device *dev, void __iomem *addr);
> > int check_signature(const volatile void __iomem *io_addr,
> > const unsigned char *signature, int length);
> > diff --git a/lib/devres.c b/lib/devres.c
> > index 0f1dd2e..e8e1738 100644
> > --- a/lib/devres.c
> > +++ b/lib/devres.c
> > @@ -72,6 +72,34 @@ void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset,
> > EXPORT_SYMBOL(devm_ioremap_nocache);
> >
> > /**
> > + * devm_ioremap_wc - Managed ioremap_wc()
> > + * @dev: Generic device to remap IO address for
> > + * @offset: BUS offset to map
> > + * @size: Size of map
> > + *
> > + * Managed ioremap_wc(). Map is automatically unmapped on driver detach.
> > + */
> > +void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset,
> > + resource_size_t size)
> > +{
> > + void __iomem **ptr, *addr;
> > +
> > + ptr = devres_alloc(devm_ioremap_release, sizeof(*ptr), GFP_KERNEL);
> > + if (!ptr)
> > + return NULL;
> > +
> > + addr = ioremap_wc(offset, size);
>
> These two patches were applied yesterday to the char-misc tree, but
> have broken build on m32r and maybe other platforms too which do not
> have ioremap_wc defined. Unfortunately I missed catching this as I
> built the patches only for arm64 and arm32, sorry for the trouble.
> There was a patch posted a while back which added ioremap_wc for m32r
> (https://lkml.org/lkml/2013/6/26/795). I would have to do something
> similar for all the other archs which do not have it or is there some
> other solution ?
>
> Please drop these patches in the interim so that the build is fixed.
Ok, patches are now dropped.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2015-01-12 13:05 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-11 2:58 [PATCH 1/2] lib: devres: add a helper function for ioremap_wc Abhilash Kesavan
2014-12-11 2:58 ` [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap Abhilash Kesavan
2014-12-11 10:08 ` Philipp Zabel
2014-12-11 10:39 ` Will Deacon
2014-12-11 11:40 ` Philipp Zabel
2014-12-11 14:58 ` Catalin Marinas
2014-12-17 12:35 ` Abhilash Kesavan
2015-01-05 18:18 ` Tony Lindgren
2015-01-06 14:27 ` Abhilash Kesavan
2015-01-06 16:54 ` Philipp Zabel
2015-01-06 17:27 ` Rob Herring
2015-01-08 15:30 ` Abhilash Kesavan
2015-01-08 20:56 ` Heiko Stübner
2015-01-10 3:30 ` [PATCH 1/2] lib: devres: add a helper function for ioremap_wc Abhilash Kesavan
2015-01-12 13:05 ` gregkh
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).