* [PATCH 0/2] arm64: PCI_IOBASE fixes
@ 2015-01-12 19:36 Mark Rutland
2015-01-12 19:36 ` [PATCH 1/2] arm64: Fix overlapping VA allocations Mark Rutland
2015-01-12 19:36 ` [PATCH 2/2] arm64: mm: dump: add missing includes Mark Rutland
0 siblings, 2 replies; 6+ messages in thread
From: Mark Rutland @ 2015-01-12 19:36 UTC (permalink / raw)
To: linux-arm-kernel
Mark Brown reported build failures in the page table dump code, due to
lack of an explicit include for PCI_IOBASE.
While looking into that I spotted that the VA space allocated for PCI
I/O overlaps with the fixmap allocation, and that in a couple of places
we erroneously assume that the I/O space is 16MiB while the allocted VA
space (and associated IO_SPACE_LIMIT) cover 32MiB.
The first patch fixes the VA space allocation, preventing overlap and
removing erroneous assumptions about the I/O space size. I'm still not
that sure of my understanding of the fixmap code and the entries below
__end_of_permanent_fixed_addresses (which aren't accounted for in
mem_init or the page table dump code), but at least they now live at the
very bottom of the kernel mapping and can't potentially overlap with
anything.
The second patch adds the missing explicit includes for the remaining
definitions used in the dump code, and has been updated from the
previous posting [2] to take the effects of patch 1 into account.
I've built and boot tested a v3.19-rc4 defconfig with these patches applied.
Thanks,
Mark.
[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-January/315228.html
[2] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-January/315326.html
Mark Rutland (2):
arm64: Fix overlapping VA allocations
arm64: mm: dump: add missing includes
arch/arm64/include/asm/io.h | 5 +++--
arch/arm64/include/asm/memory.h | 4 +++-
arch/arm64/mm/dump.c | 8 ++++++--
arch/arm64/mm/init.c | 3 ++-
4 files changed, 14 insertions(+), 6 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] arm64: Fix overlapping VA allocations
2015-01-12 19:36 [PATCH 0/2] arm64: PCI_IOBASE fixes Mark Rutland
@ 2015-01-12 19:36 ` Mark Rutland
2015-01-13 15:34 ` Catalin Marinas
2015-01-12 19:36 ` [PATCH 2/2] arm64: mm: dump: add missing includes Mark Rutland
1 sibling, 1 reply; 6+ messages in thread
From: Mark Rutland @ 2015-01-12 19:36 UTC (permalink / raw)
To: linux-arm-kernel
32MiB of space immediately below MODULES_VADDR is allocated as PCI I/O
space, yet the final 8KiB of this space is also allocated for the
fixmap, allowing for potential clashes between the two.
Additionally, the size of the PCI I/O space is assumed to be 16MiB by
mem_init and the page table dumping code, resulting the I/O space being
erroneously reported as 16MiB long.
This patch changes the definition of the PCI I/O space allocation to
live in asm/memory.h, along with the other VA space allocations. As the
fixmap allocation depends on the number of fixmap entries, this is moved
below the PCI I/O space allocation. Both the fixmap and PCI I/O space
are guarded with a following 2MB of padding. Sites assuming the I/O
space was 16MiB are moved over use new PCI_IO_{START,END} definitions.
As a useful side effect, the use of the new PCI_IO_{START,END}
definitions prevents a build issue in the dumping code due to a (now
redundant) missing include of io.h for PCI_IOBASE, reported by Mark
Brown.
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reported-by: Mark Brown <broonie@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Laura Abbott <lauraa@codeaurora.org>
Cc: Liviu Dudau <Liviu.Dudau@arm.com>
Cc: Steve Capper <steve.capper@linaro.org>
Cc: Will Deacon <will.deacon@arm.com>
---
arch/arm64/include/asm/io.h | 5 +++--
arch/arm64/include/asm/memory.h | 4 +++-
arch/arm64/mm/dump.c | 4 ++--
arch/arm64/mm/init.c | 3 ++-
4 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/arch/arm64/include/asm/io.h b/arch/arm64/include/asm/io.h
index 949c406..c180c9d 100644
--- a/arch/arm64/include/asm/io.h
+++ b/arch/arm64/include/asm/io.h
@@ -26,6 +26,7 @@
#include <asm/byteorder.h>
#include <asm/barrier.h>
+#include <asm/memory.h>
#include <asm/pgtable.h>
#include <asm/early_ioremap.h>
#include <asm/alternative.h>
@@ -145,8 +146,8 @@ static inline u64 __raw_readq(const volatile void __iomem *addr)
* I/O port access primitives.
*/
#define arch_has_dev_port() (1)
-#define IO_SPACE_LIMIT (SZ_32M - 1)
-#define PCI_IOBASE ((void __iomem *)(MODULES_VADDR - SZ_32M))
+#define IO_SPACE_LIMIT (PCI_IO_END - PCI_IO_START - 1)
+#define PCI_IOBASE ((void __iomem *)PCI_IO_START)
/*
* String version of I/O memory access operations.
diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
index 6486b2b..a183577 100644
--- a/arch/arm64/include/asm/memory.h
+++ b/arch/arm64/include/asm/memory.h
@@ -45,7 +45,9 @@
#define PAGE_OFFSET (UL(0xffffffffffffffff) << (VA_BITS - 1))
#define MODULES_END (PAGE_OFFSET)
#define MODULES_VADDR (MODULES_END - SZ_64M)
-#define FIXADDR_TOP (MODULES_VADDR - SZ_2M - PAGE_SIZE)
+#define PCI_IO_END (MODULES_VADDR - SZ_2M)
+#define PCI_IO_START (PCI_IO_END - SZ_32M)
+#define FIXADDR_TOP (PCI_IO_START - SZ_2M)
#define TASK_SIZE_64 (UL(1) << VA_BITS)
#ifdef CONFIG_COMPAT
diff --git a/arch/arm64/mm/dump.c b/arch/arm64/mm/dump.c
index cf33f33..203a6cf 100644
--- a/arch/arm64/mm/dump.c
+++ b/arch/arm64/mm/dump.c
@@ -52,8 +52,8 @@ static struct addr_marker address_markers[] = {
{ 0, "vmemmap start" },
{ 0, "vmemmap end" },
#endif
- { (unsigned long) PCI_IOBASE, "PCI I/O start" },
- { (unsigned long) PCI_IOBASE + SZ_16M, "PCI I/O end" },
+ { PCI_IO_START, "PCI I/O start" },
+ { PCI_IO_END, "PCI I/O end" },
{ FIXADDR_START, "Fixmap start" },
{ FIXADDR_TOP, "Fixmap end" },
{ MODULES_VADDR, "Modules start" },
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index bac492c..9f2406d 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -35,6 +35,7 @@
#include <linux/efi.h>
#include <asm/fixmap.h>
+#include <asm/memory.h>
#include <asm/sections.h>
#include <asm/setup.h>
#include <asm/sizes.h>
@@ -291,7 +292,7 @@ void __init mem_init(void)
MLM((unsigned long)virt_to_page(PAGE_OFFSET),
(unsigned long)virt_to_page(high_memory)),
#endif
- MLM((unsigned long)PCI_IOBASE, (unsigned long)PCI_IOBASE + SZ_16M),
+ MLM(PCI_IO_START, PCI_IO_END),
MLK(FIXADDR_START, FIXADDR_TOP),
MLM(MODULES_VADDR, MODULES_END),
MLM(PAGE_OFFSET, (unsigned long)high_memory),
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] arm64: mm: dump: add missing includes
2015-01-12 19:36 [PATCH 0/2] arm64: PCI_IOBASE fixes Mark Rutland
2015-01-12 19:36 ` [PATCH 1/2] arm64: Fix overlapping VA allocations Mark Rutland
@ 2015-01-12 19:36 ` Mark Rutland
1 sibling, 0 replies; 6+ messages in thread
From: Mark Rutland @ 2015-01-12 19:36 UTC (permalink / raw)
To: linux-arm-kernel
The arm64 dump code is currently relying on some definitions which are
pulled in via transitive dependencies. While current build issues have
been fixed by a separate patch, it seems we have implicit dependencies
on the following definitions:
* MODULES_VADDR (asm/memory.h)
* MODULES_END (asm/memory.h)
* PAGE_OFFSET (asm/memory.h)
* PTE_* (asm/pgtable-hwdef.h)
* ENOMEM (linux/errno.h)
* device_initcall (linux/init.h)
This patch ensures we explicitly include the relevant headers for the
above items, hopefully preventing future issues as headers are
refactored.
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reported-by: Mark Brown <broonie@kernel.org>
Cc: Steve Capper <steve.capper@linaro.org>
Cc: Catalin Marinas <Catalin.Marinas@arm.com>
Cc: Laura Abbott <lauraa@codeaurora.org>
Cc: Will Deacon <Will.Deacon@arm.com>
---
arch/arm64/mm/dump.c | 4 ++++
1 file changed, 4 insertions(+)
This was previously posted as a standalone patch [1]. As patch 1 fixes
the original issue, this patch has been modified to fix the remaining
potential issues that we don't yet seem to be hitting. I've also taken
Russell's advice to use linux/errno.h.
Steve, I've dropped your ack now that the fix for the original issue is
in patch 1. Hopefully that's just a formality :)
Thanks,
Mark.
[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-January/315326.html
diff --git a/arch/arm64/mm/dump.c b/arch/arm64/mm/dump.c
index 203a6cf..48a4a2f 100644
--- a/arch/arm64/mm/dump.c
+++ b/arch/arm64/mm/dump.c
@@ -14,13 +14,17 @@
* of the License.
*/
#include <linux/debugfs.h>
+#include <linux/errno.h>
#include <linux/fs.h>
+#include <linux/init.h>
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/seq_file.h>
#include <asm/fixmap.h>
+#include <asm/memory.h>
#include <asm/pgtable.h>
+#include <asm/pgtable-hwdef.h>
#define LOWEST_ADDR (UL(0xffffffffffffffff) << VA_BITS)
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 1/2] arm64: Fix overlapping VA allocations
2015-01-12 19:36 ` [PATCH 1/2] arm64: Fix overlapping VA allocations Mark Rutland
@ 2015-01-13 15:34 ` Catalin Marinas
2015-01-14 10:42 ` Mark Rutland
0 siblings, 1 reply; 6+ messages in thread
From: Catalin Marinas @ 2015-01-13 15:34 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Jan 12, 2015 at 07:36:47PM +0000, Mark Rutland wrote:
> --- a/arch/arm64/include/asm/io.h
> +++ b/arch/arm64/include/asm/io.h
> @@ -26,6 +26,7 @@
>
> #include <asm/byteorder.h>
> #include <asm/barrier.h>
> +#include <asm/memory.h>
> #include <asm/pgtable.h>
> #include <asm/early_ioremap.h>
> #include <asm/alternative.h>
> @@ -145,8 +146,8 @@ static inline u64 __raw_readq(const volatile void __iomem *addr)
> * I/O port access primitives.
> */
> #define arch_has_dev_port() (1)
> -#define IO_SPACE_LIMIT (SZ_32M - 1)
> -#define PCI_IOBASE ((void __iomem *)(MODULES_VADDR - SZ_32M))
> +#define IO_SPACE_LIMIT (PCI_IO_END - PCI_IO_START - 1)
> +#define PCI_IOBASE ((void __iomem *)PCI_IO_START)
I've seen at least couple of places where IO_SPACE_LIMIT is used as a
mark. So I would prefer it to be something like (power-of-two - 1)
rather than some random (size - 1).
> --- a/arch/arm64/include/asm/memory.h
> +++ b/arch/arm64/include/asm/memory.h
> @@ -45,7 +45,9 @@
> #define PAGE_OFFSET (UL(0xffffffffffffffff) << (VA_BITS - 1))
> #define MODULES_END (PAGE_OFFSET)
> #define MODULES_VADDR (MODULES_END - SZ_64M)
> -#define FIXADDR_TOP (MODULES_VADDR - SZ_2M - PAGE_SIZE)
> +#define PCI_IO_END (MODULES_VADDR - SZ_2M)
> +#define PCI_IO_START (PCI_IO_END - SZ_32M)
> +#define FIXADDR_TOP (PCI_IO_START - SZ_2M)
> #define TASK_SIZE_64 (UL(1) << VA_BITS)
So you could make PCI_IO_START MODULES_VADDR - SZ_16M and FIXADDR_TOP
just below it (or above as it was before, I don't really care).
> #ifdef CONFIG_COMPAT
> diff --git a/arch/arm64/mm/dump.c b/arch/arm64/mm/dump.c
> index cf33f33..203a6cf 100644
> --- a/arch/arm64/mm/dump.c
> +++ b/arch/arm64/mm/dump.c
> @@ -52,8 +52,8 @@ static struct addr_marker address_markers[] = {
> { 0, "vmemmap start" },
> { 0, "vmemmap end" },
> #endif
> - { (unsigned long) PCI_IOBASE, "PCI I/O start" },
> - { (unsigned long) PCI_IOBASE + SZ_16M, "PCI I/O end" },
> + { PCI_IO_START, "PCI I/O start" },
> + { PCI_IO_END, "PCI I/O end" },
> { FIXADDR_START, "Fixmap start" },
> { FIXADDR_TOP, "Fixmap end" },
> { MODULES_VADDR, "Modules start" },
>
> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
> index bac492c..9f2406d 100644
> --- a/arch/arm64/mm/init.c
> +++ b/arch/arm64/mm/init.c
> @@ -35,6 +35,7 @@
> #include <linux/efi.h>
>
> #include <asm/fixmap.h>
> +#include <asm/memory.h>
> #include <asm/sections.h>
> #include <asm/setup.h>
> #include <asm/sizes.h>
> @@ -291,7 +292,7 @@ void __init mem_init(void)
> MLM((unsigned long)virt_to_page(PAGE_OFFSET),
> (unsigned long)virt_to_page(high_memory)),
> #endif
> - MLM((unsigned long)PCI_IOBASE, (unsigned long)PCI_IOBASE + SZ_16M),
> + MLM(PCI_IO_START, PCI_IO_END),
> MLK(FIXADDR_START, FIXADDR_TOP),
> MLM(MODULES_VADDR, MODULES_END),
> MLM(PAGE_OFFSET, (unsigned long)high_memory),
If you change the order of FIX_ADDR_TOP with the PCI_IO_START, so you
should change the printed order as well.
--
Catalin
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] arm64: Fix overlapping VA allocations
2015-01-13 15:34 ` Catalin Marinas
@ 2015-01-14 10:42 ` Mark Rutland
2015-01-14 10:53 ` Will Deacon
0 siblings, 1 reply; 6+ messages in thread
From: Mark Rutland @ 2015-01-14 10:42 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Jan 13, 2015 at 03:34:49PM +0000, Catalin Marinas wrote:
> On Mon, Jan 12, 2015 at 07:36:47PM +0000, Mark Rutland wrote:
> > --- a/arch/arm64/include/asm/io.h
> > +++ b/arch/arm64/include/asm/io.h
> > @@ -26,6 +26,7 @@
> >
> > #include <asm/byteorder.h>
> > #include <asm/barrier.h>
> > +#include <asm/memory.h>
> > #include <asm/pgtable.h>
> > #include <asm/early_ioremap.h>
> > #include <asm/alternative.h>
> > @@ -145,8 +146,8 @@ static inline u64 __raw_readq(const volatile void __iomem *addr)
> > * I/O port access primitives.
> > */
> > #define arch_has_dev_port() (1)
> > -#define IO_SPACE_LIMIT (SZ_32M - 1)
> > -#define PCI_IOBASE ((void __iomem *)(MODULES_VADDR - SZ_32M))
> > +#define IO_SPACE_LIMIT (PCI_IO_END - PCI_IO_START - 1)
> > +#define PCI_IOBASE ((void __iomem *)PCI_IO_START)
>
> I've seen at least couple of places where IO_SPACE_LIMIT is used as a
> mark. So I would prefer it to be something like (power-of-two - 1)
> rather than some random (size - 1).
I couldn't spot instances in core code (maybe I missed them), just
arch/arm and arch/hexagon:
[mark at leverpostej:~/src/linux]% git grep IO_SPACE_LIMIT -- arch | grep '&'
arch/arm/include/asm/io.h:#define __io(a) __typesafe_io(PCI_IO_VIRT_BASE + ((a) & IO_SPACE_LIMIT))
arch/arm/include/asm/io.h:#define __io(a) __typesafe_io((a) & IO_SPACE_LIMIT)
arch/hexagon/include/asm/io.h: return readb(_IO_BASE + (port & IO_SPACE_LIMIT));
arch/hexagon/include/asm/io.h: return readw(_IO_BASE + (port & IO_SPACE_LIMIT));
arch/hexagon/include/asm/io.h: return readl(_IO_BASE + (port & IO_SPACE_LIMIT));
arch/hexagon/include/asm/io.h: writeb(data, _IO_BASE + (port & IO_SPACE_LIMIT));
arch/hexagon/include/asm/io.h: writew(data, _IO_BASE + (port & IO_SPACE_LIMIT));
arch/hexagon/include/asm/io.h: writel(data, _IO_BASE + (port & IO_SPACE_LIMIT));
Are PCI I/O addresses expected to wrap in this manner? To me it seems
that masking addresses in this way just hides a bug if addresses are
provided that don't fit inside the I/O space -- we'll generate an
address inside the I/O space, but it could still be wrong.
If we do require IO_SPACE_LIMIT to function as a mask, then I think that
we should add an explicit check to asm/io.h for that:
/*
* IO_SPACE_LIMIT needs to function as a mask.
*/
BUILD_BUG_ON_NOT_POWER_OF_2(IO_SPACE_LIMIT + 1);
That should highlight potential problems if someone updates the I/O
space definitions in future. If core expects that IO_SPACE_LIMIT is
usable as a mask then that should probably live in asm-generic/io.h.
> > --- a/arch/arm64/include/asm/memory.h
> > +++ b/arch/arm64/include/asm/memory.h
> > @@ -45,7 +45,9 @@
> > #define PAGE_OFFSET (UL(0xffffffffffffffff) << (VA_BITS - 1))
> > #define MODULES_END (PAGE_OFFSET)
> > #define MODULES_VADDR (MODULES_END - SZ_64M)
> > -#define FIXADDR_TOP (MODULES_VADDR - SZ_2M - PAGE_SIZE)
> > +#define PCI_IO_END (MODULES_VADDR - SZ_2M)
> > +#define PCI_IO_START (PCI_IO_END - SZ_32M)
> > +#define FIXADDR_TOP (PCI_IO_START - SZ_2M)
> > #define TASK_SIZE_64 (UL(1) << VA_BITS)
>
> So you could make PCI_IO_START MODULES_VADDR - SZ_16M and FIXADDR_TOP
> just below it (or above as it was before, I don't really care).
I'd very much prefer that we have the the PCI_IO_END defintion and
define PCI_IO_START in terms of that. That makes it easier to ensure
that the boot-time VA space layout dump and the page table dumper agree
with the actual VA space layout.
Are you asking for the I/O space to be shrunk to 16MB?
I can drop the 2MB padding if that's what you're suggesting?
> > #ifdef CONFIG_COMPAT
> > diff --git a/arch/arm64/mm/dump.c b/arch/arm64/mm/dump.c
> > index cf33f33..203a6cf 100644
> > --- a/arch/arm64/mm/dump.c
> > +++ b/arch/arm64/mm/dump.c
> > @@ -52,8 +52,8 @@ static struct addr_marker address_markers[] = {
> > { 0, "vmemmap start" },
> > { 0, "vmemmap end" },
> > #endif
> > - { (unsigned long) PCI_IOBASE, "PCI I/O start" },
> > - { (unsigned long) PCI_IOBASE + SZ_16M, "PCI I/O end" },
> > + { PCI_IO_START, "PCI I/O start" },
> > + { PCI_IO_END, "PCI I/O end" },
> > { FIXADDR_START, "Fixmap start" },
> > { FIXADDR_TOP, "Fixmap end" },
> > { MODULES_VADDR, "Modules start" },
> >
> > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
> > index bac492c..9f2406d 100644
> > --- a/arch/arm64/mm/init.c
> > +++ b/arch/arm64/mm/init.c
> > @@ -35,6 +35,7 @@
> > #include <linux/efi.h>
> >
> > #include <asm/fixmap.h>
> > +#include <asm/memory.h>
> > #include <asm/sections.h>
> > #include <asm/setup.h>
> > #include <asm/sizes.h>
> > @@ -291,7 +292,7 @@ void __init mem_init(void)
> > MLM((unsigned long)virt_to_page(PAGE_OFFSET),
> > (unsigned long)virt_to_page(high_memory)),
> > #endif
> > - MLM((unsigned long)PCI_IOBASE, (unsigned long)PCI_IOBASE + SZ_16M),
> > + MLM(PCI_IO_START, PCI_IO_END),
> > MLK(FIXADDR_START, FIXADDR_TOP),
> > MLM(MODULES_VADDR, MODULES_END),
> > MLM(PAGE_OFFSET, (unsigned long)high_memory),
>
> If you change the order of FIX_ADDR_TOP with the PCI_IO_START, so you
> should change the printed order as well.
Done.
Thanks,
Mark.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] arm64: Fix overlapping VA allocations
2015-01-14 10:42 ` Mark Rutland
@ 2015-01-14 10:53 ` Will Deacon
0 siblings, 0 replies; 6+ messages in thread
From: Will Deacon @ 2015-01-14 10:53 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Jan 14, 2015 at 10:42:56AM +0000, Mark Rutland wrote:
> On Tue, Jan 13, 2015 at 03:34:49PM +0000, Catalin Marinas wrote:
> > On Mon, Jan 12, 2015 at 07:36:47PM +0000, Mark Rutland wrote:
> > > --- a/arch/arm64/include/asm/io.h
> > > +++ b/arch/arm64/include/asm/io.h
> > > @@ -26,6 +26,7 @@
> > >
> > > #include <asm/byteorder.h>
> > > #include <asm/barrier.h>
> > > +#include <asm/memory.h>
> > > #include <asm/pgtable.h>
> > > #include <asm/early_ioremap.h>
> > > #include <asm/alternative.h>
> > > @@ -145,8 +146,8 @@ static inline u64 __raw_readq(const volatile void __iomem *addr)
> > > * I/O port access primitives.
> > > */
> > > #define arch_has_dev_port() (1)
> > > -#define IO_SPACE_LIMIT (SZ_32M - 1)
> > > -#define PCI_IOBASE ((void __iomem *)(MODULES_VADDR - SZ_32M))
> > > +#define IO_SPACE_LIMIT (PCI_IO_END - PCI_IO_START - 1)
> > > +#define PCI_IOBASE ((void __iomem *)PCI_IO_START)
> >
> > I've seen at least couple of places where IO_SPACE_LIMIT is used as a
> > mark. So I would prefer it to be something like (power-of-two - 1)
> > rather than some random (size - 1).
>
> I couldn't spot instances in core code (maybe I missed them), just
> arch/arm and arch/hexagon:
drivers/pci/probe.c: mask64 = PCI_BASE_ADDRESS_IO_MASK & (u32)IO_SPACE_LIMIT;
include/asm-generic/io.h: return PCI_IOBASE + (port & IO_SPACE_LIMIT);
Will
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-01-14 10:53 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-12 19:36 [PATCH 0/2] arm64: PCI_IOBASE fixes Mark Rutland
2015-01-12 19:36 ` [PATCH 1/2] arm64: Fix overlapping VA allocations Mark Rutland
2015-01-13 15:34 ` Catalin Marinas
2015-01-14 10:42 ` Mark Rutland
2015-01-14 10:53 ` Will Deacon
2015-01-12 19:36 ` [PATCH 2/2] arm64: mm: dump: add missing includes Mark Rutland
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).