<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/git/stable/linux.git/arch/arm/mm, branch linux-3.5.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<id>https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=linux-3.5.y</id>
<link rel='self' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=linux-3.5.y'/>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/'/>
<updated>2012-10-02T17:39:00+00:00</updated>
<entry>
<title>ARM: Fix ioremap() of address zero</title>
<updated>2012-10-02T17:39:00+00:00</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2012-08-25T08:03:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=3278d2dabeb899922faf4069861e150f72f28bc1'/>
<id>urn:sha1:3278d2dabeb899922faf4069861e150f72f28bc1</id>
<content type='text'>
commit a849088aa1552b1a28eea3daff599ee22a734ae3 upstream.

Murali Nalajala reports a regression that ioremapping address zero
results in an oops dump:

Unable to handle kernel paging request at virtual address fa200000
pgd = d4f80000
[fa200000] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0    Tainted: G        W (3.4.0-g3b5f728-00009-g638207a #13)
PC is at msm_pm_config_rst_vector_before_pc+0x8/0x30
LR is at msm_pm_boot_config_before_pc+0x18/0x20
pc : [&lt;c0078f84&gt;]    lr : [&lt;c007903c&gt;]    psr: a0000093
sp : c0837ef0  ip : cfe00000  fp : 0000000d
r10: da7efc17  r9 : 225c4278  r8 : 00000006
r7 : 0003c000  r6 : c085c824  r5 : 00000001  r4 : fa101000
r3 : fa200000  r2 : c095080c  r1 : 002250fc  r0 : 00000000
Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM Segment kernel
Control: 10c5387d  Table: 25180059  DAC: 00000015
[&lt;c0078f84&gt;] (msm_pm_config_rst_vector_before_pc+0x8/0x30) from [&lt;c007903c&gt;] (msm_pm_boot_config_before_pc+0x18/0x20)
[&lt;c007903c&gt;] (msm_pm_boot_config_before_pc+0x18/0x20) from [&lt;c007a55c&gt;] (msm_pm_power_collapse+0x410/0xb04)
[&lt;c007a55c&gt;] (msm_pm_power_collapse+0x410/0xb04) from [&lt;c007b17c&gt;] (arch_idle+0x294/0x3e0)
[&lt;c007b17c&gt;] (arch_idle+0x294/0x3e0) from [&lt;c000eed8&gt;] (default_idle+0x18/0x2c)
[&lt;c000eed8&gt;] (default_idle+0x18/0x2c) from [&lt;c000f254&gt;] (cpu_idle+0x90/0xe4)
[&lt;c000f254&gt;] (cpu_idle+0x90/0xe4) from [&lt;c057231c&gt;] (rest_init+0x88/0xa0)
[&lt;c057231c&gt;] (rest_init+0x88/0xa0) from [&lt;c07ff890&gt;] (start_kernel+0x3a8/0x40c)
Code: c0704256 e12fff1e e59f2020 e5923000 (e5930000)

This is caused by the 'reserved' entries which we insert (see
19b52abe3c5d7 - ARM: 7438/1: fill possible PMD empty section gaps)
which get matched for physical address zero.

Resolve this by marking these reserved entries with a different flag.

Tested-by: Murali Nalajala &lt;mnalajal@codeaurora.org&gt;
Acked-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ARM: 7489/1: errata: fix workaround for erratum #720789 on UP systems</title>
<updated>2012-09-14T16:59:21+00:00</updated>
<author>
<name>Will Deacon</name>
<email>will.deacon@arm.com</email>
</author>
<published>2012-08-10T18:13:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=3de9b7a96fae683f30c12b9cb4d77f7000fd71ed'/>
<id>urn:sha1:3de9b7a96fae683f30c12b9cb4d77f7000fd71ed</id>
<content type='text'>
commit 730a8128cd8978467eb1cf546b11014acb57d433 upstream.

Commit 5a783cbc4836 ("ARM: 7478/1: errata: extend workaround for erratum
 #720789") added workarounds for erratum #720789 to the range TLB
invalidation functions with the observation that the erratum only
affects SMP platforms. However, when running an SMP_ON_UP kernel on a
uniprocessor platform we must take care to preserve the ASID as the
workaround is not required.

This patch ensures that we don't set the ASID to 0 when flushing the TLB
on such a system, preserving the original behaviour with the workaround
disabled.

Signed-off-by: Will Deacon &lt;will.deacon@arm.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ARM: 7487/1: mm: avoid setting nG bit for user mappings that aren't present</title>
<updated>2012-09-14T16:59:21+00:00</updated>
<author>
<name>Will Deacon</name>
<email>will.deacon@arm.com</email>
</author>
<published>2012-08-10T16:51:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=0d478458e95d8b3e312b96c55d8dc594a2fb90fa'/>
<id>urn:sha1:0d478458e95d8b3e312b96c55d8dc594a2fb90fa</id>
<content type='text'>
commit 47f1204329237a0f8655f5a9f14a38ac81946ca1 upstream.

Swap entries are encoding in ptes such that !pte_present(pte) and
pte_file(pte). The remaining bits of the descriptor are used to identify
the swapfile and offset within it to the swap entry.

When writing such a pte for a user virtual address, set_pte_at
unconditionally sets the nG bit, which (in the case of LPAE) will
corrupt the swapfile offset and lead to a BUG:

[  140.494067] swap_free: Unused swap offset entry 000763b4
[  140.509989] BUG: Bad page map in process rs:main Q:Reg  pte:0ec76800 pmd:8f92e003

This patch fixes the problem by only setting the nG bit for user
mappings that are actually present.

Reviewed-by: Catalin Marinas &lt;catalin.marinas@arm.com&gt;
Signed-off-by: Will Deacon &lt;will.deacon@arm.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ARM: 7478/1: errata: extend workaround for erratum #720789</title>
<updated>2012-08-15T14:52:44+00:00</updated>
<author>
<name>Will Deacon</name>
<email>will.deacon@arm.com</email>
</author>
<published>2012-07-20T17:24:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=14687eb3f69a916dd095f7b7e8611666ec58b55e'/>
<id>urn:sha1:14687eb3f69a916dd095f7b7e8611666ec58b55e</id>
<content type='text'>
commit 5a783cbc48367cfc7b65afc75430953dfe60098f upstream.

Commit cdf357f1 ("ARM: 6299/1: errata: TLBIASIDIS and TLBIMVAIS
operations can broadcast a faulty ASID") replaced by-ASID TLB flushing
operations with all-ASID variants to workaround A9 erratum #720789.

This patch extends the workaround to include the tlb_range operations,
which were overlooked by the original patch.

Tested-by: Steve Capper &lt;steve.capper@arm.com&gt;
Signed-off-by: Will Deacon &lt;will.deacon@arm.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>Merge branch 'fixes-for-linus' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping</title>
<updated>2012-07-17T15:43:12+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-07-17T15:43:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=5bb93f1a212e756834bc380682210647b5cdfcf1'/>
<id>urn:sha1:5bb93f1a212e756834bc380682210647b5cdfcf1</id>
<content type='text'>
Pull CMA and DMA-mapping fixes from Marek Szyprowski:
 "Another set of minor fixups for recently merged Contiguous Memory
  Allocator and ARM DMA-mapping changes.  Those patches fix mysterious
  crashes on systems with CMA and Himem enabled as well as some corner
  cases caused by typical off-by-one bug."

* 'fixes-for-linus' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping:
  ARM: dma-mapping: modify condition check while freeing pages
  mm: cma: fix condition check when setting global cma area
  mm: cma: don't replace lowmem pages with highmem
</content>
</entry>
<entry>
<title>ARM: dma-mapping: modify condition check while freeing pages</title>
<updated>2012-07-16T06:59:55+00:00</updated>
<author>
<name>Prathyush K</name>
<email>prathyush.k@samsung.com</email>
</author>
<published>2012-07-16T06:59:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=46c87852e99cf8ce97e207b11cde19085837e39c'/>
<id>urn:sha1:46c87852e99cf8ce97e207b11cde19085837e39c</id>
<content type='text'>
WARNING: at mm/vmalloc.c:1471 __iommu_free_buffer+0xcc/0xd0()
Trying to vfree() nonexistent vm area (ef095000)
Modules linked in:
[&lt;c0015a18&gt;] (unwind_backtrace+0x0/0xfc) from [&lt;c0025a94&gt;] (warn_slowpath_common+0x54/0x64)
[&lt;c0025a94&gt;] (warn_slowpath_common+0x54/0x64) from [&lt;c0025b38&gt;] (warn_slowpath_fmt+0x30/0x40)
[&lt;c0025b38&gt;] (warn_slowpath_fmt+0x30/0x40) from [&lt;c0016de0&gt;] (__iommu_free_buffer+0xcc/0xd0)
[&lt;c0016de0&gt;] (__iommu_free_buffer+0xcc/0xd0) from [&lt;c0229a5c&gt;] (exynos_drm_free_buf+0xe4/0x138)
[&lt;c0229a5c&gt;] (exynos_drm_free_buf+0xe4/0x138) from [&lt;c022b358&gt;] (exynos_drm_gem_destroy+0x80/0xfc)
[&lt;c022b358&gt;] (exynos_drm_gem_destroy+0x80/0xfc) from [&lt;c0211230&gt;] (drm_gem_object_free+0x28/0x34)
[&lt;c0211230&gt;] (drm_gem_object_free+0x28/0x34) from [&lt;c0211bd0&gt;] (drm_gem_object_release_handle+0xcc/0xd8)
[&lt;c0211bd0&gt;] (drm_gem_object_release_handle+0xcc/0xd8) from [&lt;c01abe10&gt;] (idr_for_each+0x74/0xb8)
[&lt;c01abe10&gt;] (idr_for_each+0x74/0xb8) from [&lt;c02114e4&gt;] (drm_gem_release+0x1c/0x30)
[&lt;c02114e4&gt;] (drm_gem_release+0x1c/0x30) from [&lt;c0210ae8&gt;] (drm_release+0x608/0x694)
[&lt;c0210ae8&gt;] (drm_release+0x608/0x694) from [&lt;c00b75a0&gt;] (fput+0xb8/0x228)
[&lt;c00b75a0&gt;] (fput+0xb8/0x228) from [&lt;c00b40c4&gt;] (filp_close+0x64/0x84)
[&lt;c00b40c4&gt;] (filp_close+0x64/0x84) from [&lt;c0029d54&gt;] (put_files_struct+0xe8/0x104)
[&lt;c0029d54&gt;] (put_files_struct+0xe8/0x104) from [&lt;c002b930&gt;] (do_exit+0x608/0x774)
[&lt;c002b930&gt;] (do_exit+0x608/0x774) from [&lt;c002bae4&gt;] (do_group_exit+0x48/0xb4)
[&lt;c002bae4&gt;] (do_group_exit+0x48/0xb4) from [&lt;c002bb60&gt;] (sys_exit_group+0x10/0x18)
[&lt;c002bb60&gt;] (sys_exit_group+0x10/0x18) from [&lt;c000ee80&gt;] (ret_fast_syscall+0x0/0x30)

This patch modifies the condition while freeing to match the condition
used while allocation. This fixes the above warning which arises when
array size is equal to PAGE_SIZE where allocation is done using kzalloc
but free is done using vfree.

Signed-off-by: Prathyush K &lt;prathyush.k@samsung.com&gt;
Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
</content>
</entry>
<entry>
<title>ARM: fix warning caused by wrongly typed arm_dma_limit</title>
<updated>2012-07-05T12:11:31+00:00</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2012-07-05T12:11:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=09b2ad13da3ac7c717dd86bfca7072d9b36f7449'/>
<id>urn:sha1:09b2ad13da3ac7c717dd86bfca7072d9b36f7449</id>
<content type='text'>
arch/arm/mm/init.c: In function 'arm_memblock_init':
arch/arm/mm/init.c:380: warning: comparison of distinct pointer types lacks a cast

by fixing the typecast in its definition when DMA_ZONE is disabled.
This was missed in 4986e5c7c (ARM: mm: fix type of the arm_dma_limit
global variable).

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm</title>
<updated>2012-07-01T18:02:25+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-07-01T18:02:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=ca24a145573124732152daff105ba68cc9a2b545'/>
<id>urn:sha1:ca24a145573124732152daff105ba68cc9a2b545</id>
<content type='text'>
Pull two ARM fixes from Russell King:
 "It's been fairly quiet with the fixes.  Just two this time.  One fixes
  a long standing problem with KALLSYMS needing an additional pass, and
  the other sorts a problem with the vmalloc space interacting with
  static IO mappings."

* 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
  ARM: 7438/1: fill possible PMD empty section gaps
  ARM: 7428/1: Prevent KALLSYM size mismatch on ARM.
</content>
</entry>
<entry>
<title>ARM: 7438/1: fill possible PMD empty section gaps</title>
<updated>2012-07-01T13:21:35+00:00</updated>
<author>
<name>Nicolas Pitre</name>
<email>nicolas.pitre@linaro.org</email>
</author>
<published>2012-06-27T16:28:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=19b52abe3c5d759661500a1dc810924369b2ad46'/>
<id>urn:sha1:19b52abe3c5d759661500a1dc810924369b2ad46</id>
<content type='text'>
On ARM with the 2-level page table format, a PMD entry is represented by
two consecutive section entries covering 2MB of virtual space.

However, static mappings always were allowed to use separate 1MB section
entries.  This means in practice that a static mapping may create half
populated PMDs via create_mapping().

Since commit 0536bdf33f (ARM: move iotable mappings within the vmalloc
region) those static mappings are located in the vmalloc area. We must
ensure no such half populated PMDs are accessible once vmalloc() or
ioremap() start looking at the vmalloc area for nearby free virtual
address ranges, or various things leading to a kernel crash will happen.

Signed-off-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Reported-by: Santosh Shilimkar &lt;santosh.shilimkar@ti.com&gt;
Tested-by: "R, Sricharan" &lt;r.sricharan@ti.com&gt;
Reviewed-by: Catalin Marinas &lt;catalin.marinas@arm.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: dma-mapping: fix buffer chunk allocation order</title>
<updated>2012-06-25T08:18:52+00:00</updated>
<author>
<name>Marek Szyprowski</name>
<email>m.szyprowski@samsung.com</email>
</author>
<published>2012-06-21T09:48:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=593f47355467b9ef44293698817e2bdb347e2d11'/>
<id>urn:sha1:593f47355467b9ef44293698817e2bdb347e2d11</id>
<content type='text'>
IOMMU-aware dma_alloc_attrs() implementation allocates buffers in
power-of-two chunks to improve performance and take advantage of large
page mappings provided by some IOMMU hardware. However current code, due
to a subtle bug, allocated those chunks in the smallest-to-largest
order, what completely killed all the advantages of using larger than
page chunks. If a 4KiB chunk has been mapped as a first chunk, the
consecutive chunks are not aligned correctly to the power-of-two which
match their size and IOMMU drivers were not able to use internal
mappings of size other than the 4KiB (largest common denominator of
alignment and chunk size).

This patch fixes this issue by changing to the correct largest-to-smallest
chunk size allocation sequence.

Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
</content>
</entry>
</feed>
