<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/powerpc/mm, branch linux-2.6.28.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2009-02-17T17:28:50Z</updated>
<entry>
<title>powerpc/fsl-booke: Fix mapping functions to use phys_addr_t</title>
<updated>2009-02-17T17:28:50Z</updated>
<author>
<name>Kumar Gala</name>
</author>
<published>2009-02-10T03:08:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=253fbe94bfb517a756fab5bffa903405570d9220'/>
<id>urn:sha1:253fbe94bfb517a756fab5bffa903405570d9220</id>
<content type='text'>
commit 6c24b17453c8dc444a746e45b8a404498fc9fcf7 upstream.

Fixed v_mapped_by_tlbcam() and p_mapped_by_tlbcam() to use phys_addr_t
instead of unsigned long.  In 36-bit physical mode we really need these
functions to deal with phys_addr_t when trying to match a physical
address or when returning one.

Signed-off-by: Kumar Gala &lt;galak@kernel.crashing.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>powerpc: is_hugepage_only_range() must account for both 4kB and 64kB slices</title>
<updated>2009-01-25T00:41:46Z</updated>
<author>
<name>Dave Kleikamp</name>
</author>
<published>2009-01-14T09:09:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c185df273d7364bbb654070d3a77b3c635ff8e34'/>
<id>urn:sha1:c185df273d7364bbb654070d3a77b3c635ff8e34</id>
<content type='text'>
commit 9ba0fdbfaed2e74005d87fab948c5522b86ff733 upstream.

powerpc: is_hugepage_only_range() must account for both 4kB and 64kB slices

The subpage_prot syscall fails on second and subsequent calls for a given
region, because is_hugepage_only_range() is mis-identifying the 4 kB
slices when the process has a 64 kB page size.

Signed-off-by: Dave Kleikamp &lt;shaggy@linux.vnet.ibm.com&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>powerpc: Fix bootmem reservation on uninitialized node</title>
<updated>2008-12-16T02:48:18Z</updated>
<author>
<name>Dave Hansen</name>
</author>
<published>2008-12-11T08:36:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a4c74ddd5ea3db53fc73d29c222b22656a7d05be'/>
<id>urn:sha1:a4c74ddd5ea3db53fc73d29c222b22656a7d05be</id>
<content type='text'>
careful_allocation() was calling into the bootmem allocator for
nodes which had not been fully initialized and caused a previous
bug:  http://patchwork.ozlabs.org/patch/10528/  So, I merged a
few broken out loops in do_init_bootmem() to fix it.  That changed
the code ordering.

I think this bug is triggered by having reserved areas for a node
which are spanned by another node's contents.  In the
mark_reserved_regions_for_nid() code, we attempt to reserve the
area for a node before we have allocated the NODE_DATA() for that
nid.  We do this since I reordered that loop.  I suck.

This is causing crashes at bootup on some systems, as reported
by Jon Tollefson.

This may only present on some systems that have 16GB pages
reserved.  But, it can probably happen on any system that is
trying to reserve large swaths of memory that happen to span other
nodes' contents.

This commit ensures that we do not touch bootmem for any node which
has not been initialized, and also removes a compile warning about
an unused variable.

Signed-off-by: Dave Hansen &lt;dave@linux.vnet.ibm.com&gt;
Signed-off-by: Paul Mackerras &lt;paulus@samba.org&gt;
</content>
</entry>
<entry>
<title>powerpc: Check for valid hugepage size in hugetlb_get_unmapped_area</title>
<updated>2008-12-16T02:48:18Z</updated>
<author>
<name>Brian King</name>
</author>
<published>2008-12-04T04:07:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=48f797de550d39ea35552646c34149991362ff7f'/>
<id>urn:sha1:48f797de550d39ea35552646c34149991362ff7f</id>
<content type='text'>
It looks like most of the hugetlb code is doing the correct thing if
hugepages are not supported, but the mmap code is not.  If we get into
the mmap code when hugepages are not supported, such as in an LPAR
which is running Active Memory Sharing, we can oops the kernel.  This
fixes the oops being seen in this path.

oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=1024 NUMA pSeries
Modules linked in: nfs(N) lockd(N) nfs_acl(N) sunrpc(N) ipv6(N) fuse(N) loop(N)
dm_mod(N) sg(N) ibmveth(N) sd_mod(N) crc_t10dif(N) ibmvscsic(N)
scsi_transport_srp(N) scsi_tgt(N) scsi_mod(N)
Supported: No
NIP: c000000000038d60 LR: c00000000003945c CTR: c0000000000393f0
REGS: c000000077e7b830 TRAP: 0300   Tainted: G
(2.6.27.5-bz50170-2-ppc64)
MSR: 8000000000009032 &lt;EE,ME,IR,DR&gt;  CR: 44000448  XER: 20000001
DAR: c000002000af90a8, DSISR: 0000000040000000
TASK = c00000007c1b8600[4019] 'hugemmap01' THREAD: c000000077e78000 CPU: 6
GPR00: 0000001fffffffe0 c000000077e7bab0 c0000000009a4e78 0000000000000000
GPR04: 0000000000010000 0000000000000001 00000000ffffffff 0000000000000001
GPR08: 0000000000000000 c000000000af90c8 0000000000000001 0000000000000000
GPR12: 000000000000003f c000000000a73880 0000000000000000 0000000000000000
GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000010000
GPR20: 0000000000000000 0000000000000003 0000000000010000 0000000000000001
GPR24: 0000000000000003 0000000000000000 0000000000000001 ffffffffffffffb5
GPR28: c000000077ca2e80 0000000000000000 c00000000092af78 0000000000010000
NIP [c000000000038d60] .slice_get_unmapped_area+0x6c/0x4e0
LR [c00000000003945c] .hugetlb_get_unmapped_area+0x6c/0x80
Call Trace:
[c000000077e7bbc0] [c00000000003945c] .hugetlb_get_unmapped_area+0x6c/0x80
[c000000077e7bc30] [c000000000107e30] .get_unmapped_area+0x64/0xd8
[c000000077e7bcb0] [c00000000010b140] .do_mmap_pgoff+0x140/0x420
[c000000077e7bd80] [c00000000000bf5c] .sys_mmap+0xc4/0x140
[c000000077e7be30] [c0000000000086b4] syscall_exit+0x0/0x40
Instruction dump:
fac1ffb0 fae1ffb8 fb01ffc0 fb21ffc8 fb41ffd0 fb61ffd8 fb81ffe0 fbc1fff0
fbe1fff8 f821fef1 f8c10158 f8e10160 &lt;7d49002e&gt; f9010168 e92d01b0 eb4902b0

Signed-off-by: Brian King &lt;brking@linux.vnet.ibm.com&gt;
Signed-off-by: Paul Mackerras &lt;paulus@samba.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc</title>
<updated>2008-12-01T00:44:18Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2008-12-01T00:44:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=03cfdb86ac66677dbe76accae3f22c374a15b814'/>
<id>urn:sha1:03cfdb86ac66677dbe76accae3f22c374a15b814</id>
<content type='text'>
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:
  powerpc: Fix system calls on Cell entered with XER.SO=1
  powerpc/cell: Fix GDB watchpoints, again
  powerpc/mpic: Don't reset affinity for secondary MPIC on boot
  powerpc/cell/axon-msi: Retry on missing interrupt
  powerpc: Fix boot freeze on machine with empty memory node
  powerpc: Fix IRQ assignment for some PCIe devices
  powerpc/spufs: Fix spinning in spufs_ps_fault on signal
  powerpc/mpc832x_rdb: fix swapped ethernet ids
  powerpc: Use generic PHY driver for Marvell 88E1111 PHY on GE Fanuc SBC610
  powerpc/85xx: L2 cache size wrong in 8572DS dts
  powerpc/virtex: Update defconfigs
  powerpc/52xx: update defconfigs
  xsysace: Fix driver to use resource_size_t instead of unsigned long
  powerpc/virtex: fix various format/casting printk mismatches
  powerpc/mpc5200: fix bestcomm Kconfig dependencies
  powerpc/44x: Fix 460EX/460GT machine check handling
  powerpc/40x: Limit allocable DRAM during early mapping
</content>
</entry>
<entry>
<title>powerpc: Fix boot freeze on machine with empty memory node</title>
<updated>2008-11-30T22:40:18Z</updated>
<author>
<name>Dave Hansen</name>
</author>
<published>2008-11-24T12:02:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4a6186696e7f15b3ea4dafcdb64ee0703e0e4487'/>
<id>urn:sha1:4a6186696e7f15b3ea4dafcdb64ee0703e0e4487</id>
<content type='text'>
I got a bug report about a distro kernel not booting on a particular
machine.  It would freeze during boot:

&gt; ...
&gt; Could not find start_pfn for node 1
&gt; [boot]0015 Setup Done
&gt; Built 2 zonelists in Node order, mobility grouping on.  Total pages: 123783
&gt; Policy zone: DMA
&gt; Kernel command line:
&gt; [boot]0020 XICS Init
&gt; [boot]0021 XICS Done
&gt; PID hash table entries: 4096 (order: 12, 32768 bytes)
&gt; clocksource: timebase mult[7d0000] shift[22] registered
&gt; Console: colour dummy device 80x25
&gt; console handover: boot [udbg0] -&gt; real [hvc0]
&gt; Dentry cache hash table entries: 1048576 (order: 7, 8388608 bytes)
&gt; Inode-cache hash table entries: 524288 (order: 6, 4194304 bytes)
&gt; freeing bootmem node 0

I've reproduced this on 2.6.27.7.  It is caused by commit
8f64e1f2d1e09267ac926e15090fd505c1c0cbcb ("powerpc: Reserve in bootmem
lmb reserved regions that cross NUMA nodes").

The problem is that Jon took a loop which was (in pseudocode):

	for_each_node(nid)
		NODE_DATA(nid) = careful_alloc(nid);
		setup_bootmem(nid);
		reserve_node_bootmem(nid);

and broke it up into:

	for_each_node(nid)
		NODE_DATA(nid) = careful_alloc(nid);
		setup_bootmem(nid);
	for_each_node(nid)
		reserve_node_bootmem(nid);

The issue comes in when the 'careful_alloc()' is called on a node with
no memory.  It falls back to using bootmem from a previously-initialized
node.  But, bootmem has not yet been reserved when Jon's patch is
applied.  It gives back bogus memory (0xc000000000000000) and pukes
later in boot.

The following patch collapses the loop back together.  It also breaks
the mark_reserved_regions_for_nid() code out into a function and adds
some comments.  I think a huge part of introducing this bug is because
for loop was too long and hard to read.

The actual bug fix here is the:

+		if (end_pfn &lt;= node-&gt;node_start_pfn ||
+		    start_pfn &gt;= node_end_pfn)
+			continue;

Signed-off-by: Dave Hansen &lt;dave@linux.vnet.ibm.com&gt;
Signed-off-by: Paul Mackerras &lt;paulus@samba.org&gt;
</content>
</entry>
<entry>
<title>powerpc set_huge_psize() false positive</title>
<updated>2008-11-30T18:03:35Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2008-11-22T17:33:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4ea8fb9c1cc67bee980dca589ec8d0d4e62858c7'/>
<id>urn:sha1:4ea8fb9c1cc67bee980dca589ec8d0d4e62858c7</id>
<content type='text'>
called only from __init, calls __init.  Incidentally, it ought to be static
in file.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>powerpc/40x: Limit allocable DRAM during early mapping</title>
<updated>2008-11-13T15:10:56Z</updated>
<author>
<name>Grant Erickson</name>
</author>
<published>2008-10-29T11:41:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5907630ffc2b2d133de2db18963ee5a6c5af7878'/>
<id>urn:sha1:5907630ffc2b2d133de2db18963ee5a6c5af7878</id>
<content type='text'>
If the size of DRAM is not an exact power of two, we may not have
covered DRAM in its entirety with large 16 and 4 MiB pages.  If that
is the case, we can get non-recoverable page faults when doing the
final PTE mappings for the non-large page PTEs.

Consequently, we restrict the top end of DRAM currently allocable
by updating '__initial_memory_limit_addr' so that calls to the LMB to
allocate PTEs for "tail" coverage with normal-sized pages (or other
reasons) do not attempt to allocate outside the allowed range.

Signed-off-by: Grant Erickson &lt;gerickson@nuovations.com&gt;
Signed-off-by: Josh Boyer &lt;jwboyer@linux.vnet.ibm.com&gt;
</content>
</entry>
<entry>
<title>powerpc: Don't use a 16G page if beyond mem= limits</title>
<updated>2008-10-22T04:01:21Z</updated>
<author>
<name>Jon Tollefson</name>
</author>
<published>2008-10-21T15:27:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4792adbac9eb41cea77a45ab76258ea10d411173'/>
<id>urn:sha1:4792adbac9eb41cea77a45ab76258ea10d411173</id>
<content type='text'>
If mem= is used on the boot command line to limit memory then the memory block where a 16G page resides may not be available.

Thanks to Michael Ellerman for finding the problem.

Signed-off-by: Jon Tollefson &lt;kniht@linux.vnet.ibm.com&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>Merge commit 'origin' into master</title>
<updated>2008-10-21T04:52:04Z</updated>
<author>
<name>Benjamin Herrenschmidt</name>
</author>
<published>2008-10-21T04:52:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a02efb906d12c9d4eb2ab7c59049ba9545e5412d'/>
<id>urn:sha1:a02efb906d12c9d4eb2ab7c59049ba9545e5412d</id>
<content type='text'>
Manual merge of:

	arch/powerpc/Kconfig
	arch/powerpc/include/asm/page.h</content>
</entry>
</feed>
