<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/arm/include/asm/tlbflush.h, branch linux-3.2.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.2.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.2.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2011-10-06T14:40:05Z</updated>
<entry>
<title>ARM: 7076/1: LPAE: Add (pte|pmd)val_t type definitions as u32</title>
<updated>2011-10-06T14:40:05Z</updated>
<author>
<name>Catalin Marinas</name>
</author>
<published>2011-09-05T16:51:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=442e70c0b3536e832547eed89629435462f4b515'/>
<id>urn:sha1:442e70c0b3536e832547eed89629435462f4b515</id>
<content type='text'>
This patch defines the (pte|pmd)val_t as u32 and changes the page table
types to be based on these. The PMD bits are converted to the
corresponding type using the _AT macro.

The flush_pmd_entry/clean_pmd_entry argument was changed to (void *) to
allow them to be used with both PGD and PMD pointers and avoid code
duplication.

Signed-off-by: Catalin Marinas &lt;catalin.marinas@arm.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: btc: avoid invalidating the branch target cache on kernel TLB maintanence</title>
<updated>2011-07-19T10:44:06Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2011-07-05T08:01:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4348810a241a330d3d143d62d7c988ec8b2e6629'/>
<id>urn:sha1:4348810a241a330d3d143d62d7c988ec8b2e6629</id>
<content type='text'>
Kernel space needs very little in the way of BTC maintanence as most
mappings which are created and destroyed are non-executable, and so
could never enter the instruction stream.

The case which does warrant BTC maintanence is when a module is loaded.
This creates a new executable mapping, but at that point the pages have
not been initialized with code and data, so at that point they contain
unpredictable information.  Invalidating the BTC at this stage serves
little useful purpose.

Before we execute module code, we call flush_icache_range(), which deals
with the BTC maintanence requirements.  This ensures that we have a BTC
maintanence operation before we execute code via the newly created
mapping.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: tlb: move noMMU tlb_flush() to asm/tlb.h</title>
<updated>2011-02-21T19:29:28Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2011-02-20T12:27:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=58e9c47fa0dd76693b2c85c010c7430a4de77c6d'/>
<id>urn:sha1:58e9c47fa0dd76693b2c85c010c7430a4de77c6d</id>
<content type='text'>
There's no need to noMMU to put tlb_flush() in asm/tlbflush.h - it's
part of the tlb shootdown interface.  Move it to asm/tlb.h instead, as
per x86.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>Merge branches 'at91', 'dcache', 'ftrace', 'hwbpt', 'misc', 'mmci', 's3c', 'st-ux' and 'unwind' into devel</title>
<updated>2010-10-18T21:34:25Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2010-10-18T21:34:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=23beab76b490172a9ff3d52843e4d27a35b2a4c6'/>
<id>urn:sha1:23beab76b490172a9ff3d52843e4d27a35b2a4c6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ARM: Allow SMP kernels to boot on UP systems</title>
<updated>2010-10-04T19:23:36Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2010-09-04T09:47:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f00ec48fadf5e37e7889f14cff900aa70d18b644'/>
<id>urn:sha1:f00ec48fadf5e37e7889f14cff900aa70d18b644</id>
<content type='text'>
UP systems do not implement all the instructions that SMP systems have,
so in order to boot a SMP kernel on a UP system, we need to rewrite
parts of the kernel.

Do this using an 'alternatives' scheme, where the kernel code and data
is modified prior to initialization to replace the SMP instructions,
thereby rendering the problematical code ineffectual.  We use the linker
to generate a list of 32-bit word locations and their replacement values,
and run through these replacements when we detect a UP system.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: 6380/1: Introduce __sync_icache_dcache() for VIPT caches</title>
<updated>2010-09-19T11:17:44Z</updated>
<author>
<name>Catalin Marinas</name>
</author>
<published>2010-09-13T14:58:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6012191aa9c6ffff3a23b81162298318b56d7cb3'/>
<id>urn:sha1:6012191aa9c6ffff3a23b81162298318b56d7cb3</id>
<content type='text'>
On SMP systems, there is a small chance of a PTE becoming visible to a
different CPU before the current cache maintenance operations in
update_mmu_cache(). To avoid this, cache maintenance must be handled in
set_pte_at() (similar to IA-64 and PowerPC).

This patch provides a unified VIPT cache handling mechanism and
implements the __sync_icache_dcache() function for ARMv6 onwards
architectures. It is called from set_pte_at() and replaces the
update_mmu_cache(). The latter is still used on VIVT hardware where a
vm_area_struct is required.

Tested-by: Rabin Vincent &lt;rabin.vincent@stericsson.com&gt;
Cc: Nicolas Pitre &lt;nicolas.pitre@linaro.org&gt;
Signed-off-by: Catalin Marinas &lt;catalin.marinas@arm.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: 6379/1: Assume new page cache pages have dirty D-cache</title>
<updated>2010-09-19T11:17:43Z</updated>
<author>
<name>Catalin Marinas</name>
</author>
<published>2010-09-13T14:57:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c01778001a4f5ad9c62d882776235f3f31922fdd'/>
<id>urn:sha1:c01778001a4f5ad9c62d882776235f3f31922fdd</id>
<content type='text'>
There are places in Linux where writes to newly allocated page cache
pages happen without a subsequent call to flush_dcache_page() (several
PIO drivers including USB HCD). This patch changes the meaning of
PG_arch_1 to be PG_dcache_clean and always flush the D-cache for a newly
mapped page in update_mmu_cache().

The patch also sets the PG_arch_1 bit in the DMA cache maintenance
function to avoid additional cache flushing in update_mmu_cache().

Tested-by: Rabin Vincent &lt;rabin.vincent@stericsson.com&gt;
Cc: Nicolas Pitre &lt;nicolas.pitre@linaro.org&gt;
Signed-off-by: Catalin Marinas &lt;catalin.marinas@arm.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: 6299/1: errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID</title>
<updated>2010-08-10T21:10:54Z</updated>
<author>
<name>Will Deacon</name>
</author>
<published>2010-08-05T10:20:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cdf357f1e13a08a11261edacb3083746f65c1ed9'/>
<id>urn:sha1:cdf357f1e13a08a11261edacb3083746f65c1ed9</id>
<content type='text'>
On versions of the Cortex-A9 prior to r2p0, performing TLB invalidations by
ASID match can result in the incorrect ASID being broadcast to other CPUs.
As a consequence of this, the targetted TLB entries are not invalidated
across the system.

This workaround changes the TLB flushing routines to invalidate entries
regardless of the ASID.

Cc: &lt;stable@kernel.org&gt;
Tested-by: Rob Clark &lt;rob@ti.com&gt;
Acked-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;
</content>
</entry>
<entry>
<title>ARM: 6112/1: Use the Inner Shareable I-cache and BTB ops on ARMv7 SMP</title>
<updated>2010-05-08T09:44:30Z</updated>
<author>
<name>Catalin Marinas</name>
</author>
<published>2010-05-07T17:03:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b8349b569aae661dea9d59d7d2ee587ccea3336c'/>
<id>urn:sha1:b8349b569aae661dea9d59d7d2ee587ccea3336c</id>
<content type='text'>
The standard I-cache Invalidate All (ICIALLU) and Branch Predication
Invalidate All (BPIALL) operations are not automatically broadcast to
the other CPUs in an ARMv7 MP system. The patch adds the Inner Shareable
variants, ICIALLUIS and BPIALLIS, if ARMv7 and SMP.

Signed-off-by: Catalin Marinas &lt;catalin.marinas@arm.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>MM: Pass a PTE pointer to update_mmu_cache() rather than the PTE itself</title>
<updated>2010-02-20T16:41:46Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2009-12-18T16:40:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4b3073e1c53a256275f1079c0fbfbe85883d9275'/>
<id>urn:sha1:4b3073e1c53a256275f1079c0fbfbe85883d9275</id>
<content type='text'>
On VIVT ARM, when we have multiple shared mappings of the same file
in the same MM, we need to ensure that we have coherency across all
copies.  We do this via make_coherent() by making the pages
uncacheable.

This used to work fine, until we allowed highmem with highpte - we
now have a page table which is mapped as required, and is not available
for modification via update_mmu_cache().

Ralf Beache suggested getting rid of the PTE value passed to
update_mmu_cache():

  On MIPS update_mmu_cache() calls __update_tlb() which walks pagetables
  to construct a pointer to the pte again.  Passing a pte_t * is much
  more elegant.  Maybe we might even replace the pte argument with the
  pte_t?

Ben Herrenschmidt would also like the pte pointer for PowerPC:

  Passing the ptep in there is exactly what I want.  I want that
  -instead- of the PTE value, because I have issue on some ppc cases,
  for I$/D$ coherency, where set_pte_at() may decide to mask out the
  _PAGE_EXEC.

So, pass in the mapped page table pointer into update_mmu_cache(), and
remove the PTE value, updating all implementations and call sites to
suit.

Includes a fix from Stephen Rothwell:

  sparc: fix fallout from update_mmu_cache API change

  Signed-off-by: Stephen Rothwell &lt;sfr@canb.auug.org.au&gt;

Acked-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
</feed>
