<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/arch/tile/lib, branch v3.0.82</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/arch/tile/lib?h=v3.0.82</id>
<link rel='self' href='https://git.amat.us/linux/atom/arch/tile/lib?h=v3.0.82'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2011-05-12T19:52:12Z</updated>
<entry>
<title>arch/tile: finish enabling support for TILE-Gx 64-bit chip</title>
<updated>2011-05-12T19:52:12Z</updated>
<author>
<name>Chris Metcalf</name>
<email>cmetcalf@tilera.com</email>
</author>
<published>2011-05-04T18:38:26Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=18aecc2b645bbb07851b196452a2af314222069b'/>
<id>urn:sha1:18aecc2b645bbb07851b196452a2af314222069b</id>
<content type='text'>
This support was partially present in the existing code (look for
"__tilegx__" ifdefs) but with this change you can build a working
kernel using the TILE-Gx toolchain and ARCH=tilegx.

Most of these files are new, generally adding a foo_64.c file
where previously there was just a foo_32.c file.

The ARCH=tilegx directive redirects to arch/tile, not arch/tilegx,
using the existing SRCARCH mechanism in the top-level Makefile.

Changes to existing files:

- &lt;asm/bitops.h&gt; and &lt;asm/bitops_32.h&gt; changed to factor the
  include of &lt;asm-generic/bitops/non-atomic.h&gt; in the common header.

- &lt;asm/compat.h&gt; and arch/tile/kernel/compat.c changed to remove
  the "const" markers I had put on compat_sys_execve() when trying
  to match some recent similar changes to the non-compat execve.
  It turns out the compat version wasn't "upgraded" to use const.

- &lt;asm/opcode-tile_64.h&gt; and &lt;asm/opcode_constants_64.h&gt; were
  previously included accidentally, with the 32-bit contents.  Now
  they have the proper 64-bit contents.

Finally, I had to hack the existing hacky drivers/input/input-compat.h
to add yet another "#ifdef" for INPUT_COMPAT_TEST (same as x86_64).

Signed-off-by: Chris Metcalf &lt;cmetcalf@tilera.com&gt;
Acked-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt; [drivers/input]
</content>
</entry>
<entry>
<title>arch/tile: disable GX prefetcher during cache flush</title>
<updated>2011-05-04T18:40:46Z</updated>
<author>
<name>Chris Metcalf</name>
<email>cmetcalf@tilera.com</email>
</author>
<published>2011-05-02T19:54:32Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=dbb434214e34014dc7acb0e7811c37471df26a72'/>
<id>urn:sha1:dbb434214e34014dc7acb0e7811c37471df26a72</id>
<content type='text'>
Otherwise, it's possible to end up with the prefetcher pulling
data into cache that the code believes has been flushed.

Signed-off-by: Chris Metcalf &lt;cmetcalf@tilera.com&gt;
</content>
</entry>
<entry>
<title>arch/tile: allow nonatomic stores to interoperate with fast atomic syscalls</title>
<updated>2011-05-04T18:40:07Z</updated>
<author>
<name>Chris Metcalf</name>
<email>cmetcalf@tilera.com</email>
</author>
<published>2011-05-02T19:13:13Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=df29ccb6c06dcb65867d4fd3c2fa473017f60ecc'/>
<id>urn:sha1:df29ccb6c06dcb65867d4fd3c2fa473017f60ecc</id>
<content type='text'>
This semantic was already true for atomic operations within the kernel,
and this change makes it true for the fast atomic syscalls (__NR_cmpxchg
and __NR_atomic_update) as well.  Previously, user-space had to use
the fast atomic syscalls exclusively to update memory, since raw stores
could lose a race with the atomic update code even when the atomic update
hadn't actually modified the value.

With this change, we no longer write back the value to memory if it
hasn't changed.  This allows certain types of idioms in user space to
work as expected, e.g. "atomic exchange" to acquire a spinlock, followed
by a raw store of zero to release the lock.

Signed-off-by: Chris Metcalf &lt;cmetcalf@tilera.com&gt;
</content>
</entry>
<entry>
<title>arch/tile: fix futex sanitization definition/prototype mismatch</title>
<updated>2011-03-20T04:08:21Z</updated>
<author>
<name>Chris Metcalf</name>
<email>cmetcalf@tilera.com</email>
</author>
<published>2011-03-19T15:45:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=5b4787719f8870104fada924ef65ee9fd5eb2514'/>
<id>urn:sha1:5b4787719f8870104fada924ef65ee9fd5eb2514</id>
<content type='text'>
Commit 8d7718aa082aaf30a0b4989e1f04858952f941bc changed "int"
to "u32" in the prototypes but not the definition.
I missed this when I saw the patch go by on LKML.

We cast "u32 *" to "int *" since we are tying into the underlying
atomics framework, and atomic_t uses int as its value type.

Signed-off-by: Chris Metcalf &lt;cmetcalf@tilera.com&gt;
Reviewed-by: Michel Lespinasse &lt;walken@google.com&gt;
</content>
</entry>
<entry>
<title>arch/tile: fix deadlock bugs in rwlock implementation</title>
<updated>2011-03-10T21:10:41Z</updated>
<author>
<name>Chris Metcalf</name>
<email>cmetcalf@tilera.com</email>
</author>
<published>2011-03-01T18:30:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3c5ead52ed68406c0ee789024c4ae581be8bcee4'/>
<id>urn:sha1:3c5ead52ed68406c0ee789024c4ae581be8bcee4</id>
<content type='text'>
The first issue fixed in this patch is that pending rwlock write locks
could lock out new readers; this could cause a deadlock if a read lock was
held on cpu 1, a write lock was then attempted on cpu 2 and was pending,
and cpu 1 was interrupted and attempted to re-acquire a read lock.
The write lock code was modified to not lock out new readers.

The second issue fixed is that there was a narrow race window where a tns
instruction had been issued (setting the lock value to "1") and the store
instruction to reset the lock value correctly had not yet been issued.
In this case, if an interrupt occurred and the same cpu then tried to
manipulate the lock, it would find the lock value set to "1" and spin
forever, assuming some other cpu was partway through updating it.  The fix
is to enforce an interrupt critical section around the tns/store pair.

In addition, this change now arranges to always validate that after
a readlock we have not wrapped around the count of readers, which
is only eight bits.

Since these changes make the rwlock "fast path" code heavier weight,
I decided to move all the rwlock code all out of line, leaving only the
conventional spinlock code with fastpath inlines.  Since the read_lock
and read_trylock implementations ended up very similar, I just expressed
read_lock in terms of read_trylock.

As part of this change I also eliminate support for the now-obsolete
tns_atomic mode.

Signed-off-by: Chris Metcalf &lt;cmetcalf@tilera.com&gt;
</content>
</entry>
<entry>
<title>arch/tile: support 4KB page size as well as 64KB</title>
<updated>2011-03-10T18:17:53Z</updated>
<author>
<name>Chris Metcalf</name>
<email>cmetcalf@tilera.com</email>
</author>
<published>2011-02-28T21:37:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=76c567fbba50c3da2f4d40e2e551bab26cfd4381'/>
<id>urn:sha1:76c567fbba50c3da2f4d40e2e551bab26cfd4381</id>
<content type='text'>
The Tilera architecture traditionally supports 64KB page sizes
to improve TLB utilization and improve performance when the
hardware is being used primarily to run a single application.

For more generic server scenarios, it can be beneficial to run
with 4KB page sizes, so this commit allows that to be specified
(by modifying the arch/tile/include/hv/pagesize.h header).

As part of this change, we also re-worked the PTE management
slightly so that PTE writes all go through a __set_pte() function
where we can do some additional validation.  The set_pte_order()
function was eliminated since the "order" argument wasn't being used.

One bug uncovered was in the PCI DMA code, which wasn't properly
flushing the specified range.  This was benign with 64KB pages,
but with 4KB pages we were getting some larger flushes wrong.

The per-cpu memory reservation code also needed updating to
conform with the newer percpu stuff; before it always chose 64KB,
and that was always correct, but with 4KB granularity we now have
to pay closer attention and reserve the amount of memory that will
be requested when the percpu code starts allocating.

Signed-off-by: Chris Metcalf &lt;cmetcalf@tilera.com&gt;
</content>
</entry>
<entry>
<title>arch/tile: fix some comments and whitespace</title>
<updated>2011-03-10T18:14:03Z</updated>
<author>
<name>Chris Metcalf</name>
<email>cmetcalf@tilera.com</email>
</author>
<published>2011-02-28T20:58:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=5fb682b0644cd20015d9b0e3ca6921ad5533f4ba'/>
<id>urn:sha1:5fb682b0644cd20015d9b0e3ca6921ad5533f4ba</id>
<content type='text'>
This is a grab bag of changes with no actual change to generated code.
This includes whitespace and comment typos, plus a couple of stale
comments being removed.

Signed-off-by: Chris Metcalf &lt;cmetcalf@tilera.com&gt;
</content>
</entry>
<entry>
<title>arch/tile: export some additional module symbols</title>
<updated>2011-03-01T21:21:12Z</updated>
<author>
<name>Chris Metcalf</name>
<email>cmetcalf@tilera.com</email>
</author>
<published>2011-02-28T20:51:25Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=00dce03134689a257120ae2aa18ba7d1a736bef7'/>
<id>urn:sha1:00dce03134689a257120ae2aa18ba7d1a736bef7</id>
<content type='text'>
This adds a grab bag of symbols that have been missing for
various modules.

Signed-off-by: Chris Metcalf &lt;cmetcalf@tilera.com&gt;
</content>
</entry>
<entry>
<title>arch/tile: enhance existing finv_buffer_remote() routine</title>
<updated>2011-03-01T21:21:06Z</updated>
<author>
<name>Chris Metcalf</name>
<email>cmetcalf@tilera.com</email>
</author>
<published>2011-02-28T20:48:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=63b7ca6b04427aea9075d6f5f5f15b82e115bce4'/>
<id>urn:sha1:63b7ca6b04427aea9075d6f5f5f15b82e115bce4</id>
<content type='text'>
It now takes an additional argument so it can be used to
flush-and-invalidate pages that are cached using hash-for-home
as well those that are cached with coherence point on a single cpu.

This allows it to be used more widely for changing the coherence
point of arbitrary pages when necessary.

Signed-off-by: Chris Metcalf &lt;cmetcalf@tilera.com&gt;
</content>
</entry>
<entry>
<title>arch/tile: use extended assembly to inline __mb_incoherent()</title>
<updated>2011-03-01T21:20:54Z</updated>
<author>
<name>Chris Metcalf</name>
<email>cmetcalf@tilera.com</email>
</author>
<published>2011-02-28T20:28:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6c4d11268819d9c920c7befd8e8e9aad456bb067'/>
<id>urn:sha1:6c4d11268819d9c920c7befd8e8e9aad456bb067</id>
<content type='text'>
This avoids having to maintain an additional separate assembly
file, and of course the inline is slightly more efficient as well.

Signed-off-by: Chris Metcalf &lt;cmetcalf@tilera.com&gt;
</content>
</entry>
</feed>
