<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/s390/include/asm/pgalloc.h, branch linux-2.6.37.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2010-10-25T14:10:15Z</updated>
<entry>
<title>[S390] lockless get_user_pages_fast()</title>
<updated>2010-10-25T14:10:15Z</updated>
<author>
<name>Martin Schwidefsky</name>
</author>
<published>2010-10-25T14:10:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=80217147a3d80c8a4e48f06e2f6e965455f3fe2a'/>
<id>urn:sha1:80217147a3d80c8a4e48f06e2f6e965455f3fe2a</id>
<content type='text'>
Implement get_user_pages_fast without locking in the fastpath on s390.

Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>[S390] Improve address space mode selection.</title>
<updated>2009-12-07T11:51:33Z</updated>
<author>
<name>Martin Schwidefsky</name>
</author>
<published>2009-12-07T11:51:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b11b53342773361f3353b285eb6a3fd6074e7997'/>
<id>urn:sha1:b11b53342773361f3353b285eb6a3fd6074e7997</id>
<content type='text'>
Introduce user_mode to replace the two variables switch_amode and
s390_noexec. There are three valid combinations of the old values:
  1) switch_amode == 0 &amp;&amp; s390_noexec == 0
  2) switch_amode == 1 &amp;&amp; s390_noexec == 0
  3) switch_amode == 1 &amp;&amp; s390_noexec == 1
They get replaced by
  1) user_mode == HOME_SPACE_MODE
  2) user_mode == PRIMARY_SPACE_MODE
  3) user_mode == SECONDARY_SPACE_MODE
The new kernel parameter user_mode=[primary,secondary,home] lets
you choose the address space mode the user space processes should
use. In addition the CONFIG_S390_SWITCH_AMODE config option
is removed.

Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>[S390] fix recursive locking on page_table_lock</title>
<updated>2009-09-11T08:29:53Z</updated>
<author>
<name>Martin Schwidefsky</name>
</author>
<published>2009-09-11T08:28:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=50aa98bad056a17655864a4d71ebc32d95c629a7'/>
<id>urn:sha1:50aa98bad056a17655864a4d71ebc32d95c629a7</id>
<content type='text'>
Suzuki Poulose reported the following recursive locking bug on s390:

Here is the stack trace : (see Appendix I for more info)

  [&lt;0000000000406ed6&gt;] _spin_lock+0x52/0x94
  [&lt;0000000000103bde&gt;] crst_table_free+0x14e/0x1a4
  [&lt;00000000001ba684&gt;] __pmd_alloc+0x114/0x1ec
  [&lt;00000000001be8d0&gt;] handle_mm_fault+0x2cc/0xb80
  [&lt;0000000000407d62&gt;] do_dat_exception+0x2b6/0x3a0
  [&lt;0000000000114f8c&gt;] sysc_return+0x0/0x8
  [&lt;00000200001642b2&gt;] 0x200001642b2

The page_table_lock is already acquired in __pmd_alloc (mm/memory.c) and
it tries to populate the pud/pgd with a new pmd allocated. If another
thread populates it before we get a chance, we free the pmd using
pmd_free().

On s390x, pmd_free(even pud_free ) is #defined to crst_table_free(),
which acquires the page_table_lock to protect the crst_table index updates.

Hence this ends up in a recursive locking of the page_table_lock.

The solution suggested by Dave Hansen is to use a new spin lock in the mmu
context to protect the access to the crst_list and the pgtable_list.

Reported-by: Suzuki Poulose &lt;suzuki@in.ibm.com&gt;
Cc: Dave Hansen &lt;dave@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>[S390] clear_table inline assembly contraints</title>
<updated>2008-12-25T12:39:15Z</updated>
<author>
<name>Martin Schwidefsky</name>
</author>
<published>2008-12-25T12:39:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4f7e90d6d61fa0e56821787521c12f8a626c4037'/>
<id>urn:sha1:4f7e90d6d61fa0e56821787521c12f8a626c4037</id>
<content type='text'>
Tell the compile that the clear_table inline assembly writes to the
memory referenced by *s.

Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>[S390] move include/asm-s390 to arch/s390/include/asm</title>
<updated>2008-08-01T18:42:05Z</updated>
<author>
<name>Martin Schwidefsky</name>
</author>
<published>2008-08-01T18:42:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c6557e7f2b6ae76a44653d38f835174074c42e05'/>
<id>urn:sha1:c6557e7f2b6ae76a44653d38f835174074c42e05</id>
<content type='text'>
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
</feed>
