<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/xtensa/mm/cache.c, branch linux-4.4.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.4.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.4.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2020-11-24T11:48:12Z</updated>
<entry>
<title>xtensa: disable preemption around cache alias management calls</title>
<updated>2020-11-24T11:48:12Z</updated>
<author>
<name>Max Filippov</name>
</author>
<published>2020-11-16T09:38:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=db2c4daca0e073b0110ed7dc56f53bd404d07e88'/>
<id>urn:sha1:db2c4daca0e073b0110ed7dc56f53bd404d07e88</id>
<content type='text'>
commit 3a860d165eb5f4d7cf0bf81ef6a5b5c5e1754422 upstream.

Although cache alias management calls set up and tear down TLB entries
and fast_second_level_miss is able to restore TLB entry should it be
evicted they absolutely cannot preempt each other because they use the
same TLBTEMP area for different purposes.
Disable preemption around all cache alias management calls to enforce
that.

Cc: stable@vger.kernel.org
Signed-off-by: Max Filippov &lt;jcmvbkbc@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>xtensa: fix preemption in {clear,copy}_user_highpage</title>
<updated>2016-04-12T16:08:55Z</updated>
<author>
<name>Max Filippov</name>
</author>
<published>2016-02-25T20:27:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cd8af682db6a51a5130f48b07d211c808f321997'/>
<id>urn:sha1:cd8af682db6a51a5130f48b07d211c808f321997</id>
<content type='text'>
commit a67cc9aa2dfc6e66addf240bbd79e16e01565e81 upstream.

Disabling pagefault makes little sense there, preemption disabling is
what was meant.

Signed-off-by: Max Filippov &lt;jcmvbkbc@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>xtensa: support highmem in aliasing cache flushing code</title>
<updated>2014-08-14T07:59:23Z</updated>
<author>
<name>Max Filippov</name>
</author>
<published>2014-07-21T00:24:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=270eec76de2557c9df01d74bc4c948d0924fc007'/>
<id>urn:sha1:270eec76de2557c9df01d74bc4c948d0924fc007</id>
<content type='text'>
Use __flush_invalidate_dcache_page_alias with alias set to color of the
page physical address instead of __flush_invalidate_dcache_page: this
works for high memory pages and mapping/unmapping to the TLBTEMP area is
virtually free.

Allow building configurations with aliasing cache and highmem enabled.

Signed-off-by: Max Filippov &lt;jcmvbkbc@gmail.com&gt;
</content>
</entry>
<entry>
<title>xtensa: implement clear_user_highpage and copy_user_highpage</title>
<updated>2014-08-14T07:59:20Z</updated>
<author>
<name>Max Filippov</name>
</author>
<published>2014-07-21T14:54:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a91902db2990909ea5e6b110811b448f2e8f1571'/>
<id>urn:sha1:a91902db2990909ea5e6b110811b448f2e8f1571</id>
<content type='text'>
Existing clear_user_page and copy_user_page cannot be used with highmem
because they calculate physical page address from its virtual address
and do it incorrectly in case of high memory page mapped with
kmap_atomic. Also kmap is not needed, as most likely userspace mapping
color would be different from the kmapped color.

Provide clear_user_highpage and copy_user_highpage functions that
determine if temporary mapping is needed for the pages. Move most of the
logic of the former clear_user_page and copy_user_page to
xtensa/mm/cache.c only leaving temporary mapping setup, invalidation and
clearing/copying in the xtensa/mm/misc.S. Rename these functions to
clear_page_alias and copy_page_alias.

Signed-off-by: Max Filippov &lt;jcmvbkbc@gmail.com&gt;
</content>
</entry>
<entry>
<title>xtensa: add HIGHMEM support</title>
<updated>2014-04-06T17:29:21Z</updated>
<author>
<name>Max Filippov</name>
</author>
<published>2014-02-03T22:17:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=65559100655c6ed6ce2e17ffc8d4f3852bc2858a'/>
<id>urn:sha1:65559100655c6ed6ce2e17ffc8d4f3852bc2858a</id>
<content type='text'>
Introduce fixmap area just below the vmalloc region. Use it for atomic
mapping of high memory pages.
High memory on cores with cache aliasing is not supported and is still
to be implemented. Fail build for such configurations for now.

Signed-off-by: Max Filippov &lt;jcmvbkbc@gmail.com&gt;
</content>
</entry>
<entry>
<title>xtensa: add SMP support</title>
<updated>2014-01-14T18:19:58Z</updated>
<author>
<name>Max Filippov</name>
</author>
<published>2013-10-16T22:42:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f615136c06a791364f5afa8b8ba965315a6440f1'/>
<id>urn:sha1:f615136c06a791364f5afa8b8ba965315a6440f1</id>
<content type='text'>
This is largely based on SMP code from the xtensa-2.6.29-smp tree by
Piet Delaney, Marc Gauthier, Joe Taylor, Christian Zankel (and possibly
other Tensilica folks).

Signed-off-by: Max Filippov &lt;jcmvbkbc@gmail.com&gt;
Signed-off-by: Chris Zankel &lt;chris@zankel.net&gt;
</content>
</entry>
<entry>
<title>xtensa: clean up files to make them code-style compliant</title>
<updated>2012-12-19T05:10:25Z</updated>
<author>
<name>Chris Zankel</name>
</author>
<published>2012-11-29T00:53:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c4c4594b005d89b56964071bbbdeb07daac5bc76'/>
<id>urn:sha1:c4c4594b005d89b56964071bbbdeb07daac5bc76</id>
<content type='text'>
Remove heading and trailing spaces, trim trailing lines, and wrap lines
that are longer than 80 characters.

Signed-off-by: Chris Zankel &lt;chris@zankel.net&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>
<entry>
<title>[XTENSA] Flush the page-address in update-mmu instead of user-address</title>
<updated>2008-02-14T00:58:51Z</updated>
<author>
<name>Chris Zankel</name>
</author>
<published>2007-09-06T08:38:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b67360db143448be1f6d68835c6d0cc43837667f'/>
<id>urn:sha1:b67360db143448be1f6d68835c6d0cc43837667f</id>
<content type='text'>
The TLB entry for the user address doesn't exist at the time we
want to flush the caches, so use the page address. Note that processor
configurations with cache-aliasing issues are treated separately.

Signed-off-by: Chris Zankel &lt;chris@zankel.net&gt;
</content>
</entry>
<entry>
<title>[XTENSA] Remove duplicate includes.</title>
<updated>2008-02-13T23:05:35Z</updated>
<author>
<name>Chris Zankel</name>
</author>
<published>2008-01-18T22:26:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1e12e3919ea83ce28f8c017b83f68739485fef81'/>
<id>urn:sha1:1e12e3919ea83ce28f8c017b83f68739485fef81</id>
<content type='text'>
Signed-off-by: Lucas Woods &lt;woodzy@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Christian Zankel &lt;chris@zankel.net&gt;
</content>
</entry>
</feed>
