From: Sasha Levin <levinsasha928@gmail.com> To: Tejun Heo <tj@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org>, David Miller <davem@davemloft.net>, hpa@linux.intel.com, linux-mm <linux-mm@kvack.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: Re: Early boot panic on machine with lots of memory Date: Tue, 19 Jun 2012 00:50:50 +0200 [thread overview] Message-ID: <1340059850.3416.3.camel@lappy> (raw) In-Reply-To: <20120618223203.GE32733@google.com> On Mon, 2012-06-18 at 15:32 -0700, Tejun Heo wrote: > * Can you please post disassembly of the whole function? It seems > like rsv->regions[] was corrupt. I want to verify other registers > too. Here it is, with the patch you've asked to be tested applied if it matters any: 0000000000000000 <__next_free_mem_range>: * in lockstep and returns each intersection. */ void __init_memblock __next_free_mem_range(u64 *idx, int nid, phys_addr_t *out_start, phys_addr_t *out_end, int *out_nid) { 0: 55 push %rbp 1: 48 89 e5 mov %rsp,%rbp 4: 41 57 push %r15 6: 41 56 push %r14 if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { struct memblock_region *r = &rsv->regions[ri]; 8: 45 31 f6 xor %r14d,%r14d * in lockstep and returns each intersection. */ void __init_memblock __next_free_mem_range(u64 *idx, int nid, phys_addr_t *out_start, phys_addr_t *out_end, int *out_nid) { b: 41 55 push %r13 d: 41 54 push %r12 f: 53 push %rbx 10: 48 83 ec 38 sub $0x38,%rsp 14: 48 89 55 b0 mov %rdx,-0x50(%rbp) 18: 48 89 4d a8 mov %rcx,-0x58(%rbp) 1c: 48 89 7d b8 mov %rdi,-0x48(%rbp) 20: 4c 89 45 a0 mov %r8,-0x60(%rbp) struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; int ri = *idx >> 32; for ( ; mi < mem->cnt; mi++) { 24: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 2b <__next_free_mem_range+0x2b> 27: R_X86_64_PC32 memblock+0x4 phys_addr_t *out_start, phys_addr_t *out_end, int *out_nid) { struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; 2b: 48 8b 07 mov (%rdi),%rax /* only memory regions are associated with nodes, check it */ if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { 2e: 4c 8b 1d 00 00 00 00 mov 0x0(%rip),%r11 # 35 <__next_free_mem_range+0x35> 31: R_X86_64_PC32 memblock+0x24 phys_addr_t *out_end, int *out_nid) { struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; int ri = *idx >> 32; 35: 48 89 c2 mov %rax,%rdx phys_addr_t *out_start, phys_addr_t *out_end, int *out_nid) { struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; 38: 48 89 45 d0 mov %rax,-0x30(%rbp) int ri = *idx >> 32; 3c: 48 c1 ea 20 shr $0x20,%rdx for ( ; mi < mem->cnt; mi++) { struct memblock_region *m = &mem->regions[mi]; 40: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 47 <__next_free_mem_range+0x47> 43: R_X86_64_PC32 memblock+0x1c struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; int ri = *idx >> 32; for ( ; mi < mem->cnt; mi++) { 47: 48 89 4d c8 mov %rcx,-0x38(%rbp) struct memblock_region *m = &mem->regions[mi]; 4b: 48 89 45 c0 mov %rax,-0x40(%rbp) /* only memory regions are associated with nodes, check it */ if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { 4f: 49 8d 5b 01 lea 0x1(%r11),%rbx struct memblock_region *r = &rsv->regions[ri]; 53: 4c 8b 25 00 00 00 00 mov 0x0(%rip),%r12 # 5a <__next_free_mem_range+0x5a> 56: R_X86_64_PC32 memblock+0x3c struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; int ri = *idx >> 32; for ( ; mi < mem->cnt; mi++) { 5a: e9 c8 00 00 00 jmpq 127 <__next_free_mem_range+0x127> struct memblock_region *m = &mem->regions[mi]; 5f: 4d 6b ed 18 imul $0x18,%r13,%r13 63: 4c 03 6d c0 add -0x40(%rbp),%r13 phys_addr_t m_start = m->base; 67: 4d 8b 4d 00 mov 0x0(%r13),%r9 phys_addr_t m_end = m->base + m->size; 6b: 4d 89 ca mov %r9,%r10 6e: 4d 03 55 08 add 0x8(%r13),%r10 /* only memory regions are associated with nodes, check it */ if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) 72: 81 fe 00 04 00 00 cmp $0x400,%esi 78: 0f 84 9a 00 00 00 je 118 <__next_free_mem_range+0x118> r->nid = nid; } static inline int memblock_get_region_node(const struct memblock_region *r) { return r->nid; 7e: 41 3b 75 10 cmp 0x10(%r13),%esi 82: 0f 85 9c 00 00 00 jne 124 <__next_free_mem_range+0x124> 88: e9 8b 00 00 00 jmpq 118 <__next_free_mem_range+0x118> continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { struct memblock_region *r = &rsv->regions[ri]; 8d: 4c 6b c0 18 imul $0x18,%rax,%r8 phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0; 91: 31 c9 xor %ecx,%ecx if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { struct memblock_region *r = &rsv->regions[ri]; 93: 4f 8d 04 04 lea (%r12,%r8,1),%r8 phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0; 97: 85 d2 test %edx,%edx 99: 74 08 je a3 <__next_free_mem_range+0xa3> 9b: 49 8b 48 f0 mov -0x10(%r8),%rcx 9f: 49 03 48 e8 add -0x18(%r8),%rcx phys_addr_t r_end = ri < rsv->cnt ? r->base : ULLONG_MAX; a3: 48 83 cf ff or $0xffffffffffffffff,%rdi a7: 4c 39 d8 cmp %r11,%rax aa: 73 03 jae af <__next_free_mem_range+0xaf> ac: 49 8b 38 mov (%r8),%rdi /* if ri advanced past mi, break out to advance mi */ if (r_start >= m_end) af: 4c 39 d1 cmp %r10,%rcx b2: 73 70 jae 124 <__next_free_mem_range+0x124> break; /* if the two regions intersect, we're done */ if (m_start < r_end) { b4: 4c 39 cf cmp %r9,%rdi b7: 76 5d jbe 116 <__next_free_mem_range+0x116> if (out_start) b9: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp) be: 74 0e je ce <__next_free_mem_range+0xce> *out_start = max(m_start, r_start); c0: 4c 39 c9 cmp %r9,%rcx c3: 48 8b 45 b0 mov -0x50(%rbp),%rax c7: 49 0f 42 c9 cmovb %r9,%rcx cb: 48 89 08 mov %rcx,(%rax) if (out_end) ce: 48 83 7d a8 00 cmpq $0x0,-0x58(%rbp) d3: 74 11 je e6 <__next_free_mem_range+0xe6> *out_end = min(m_end, r_end); d5: 4c 39 d7 cmp %r10,%rdi d8: 4c 89 d0 mov %r10,%rax db: 48 8b 4d a8 mov -0x58(%rbp),%rcx df: 48 0f 46 c7 cmovbe %rdi,%rax e3: 48 89 01 mov %rax,(%rcx) if (out_nid) e6: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) eb: 74 0a je f7 <__next_free_mem_range+0xf7> *out_nid = memblock_get_region_node(m); ed: 41 8b 45 10 mov 0x10(%r13),%eax f1: 48 8b 4d a0 mov -0x60(%rbp),%rcx f5: 89 01 mov %eax,(%rcx) /* * The region which ends first is advanced * for the next iteration. */ if (m_end <= r_end) f7: 4c 39 d7 cmp %r10,%rdi fa: 72 05 jb 101 <__next_free_mem_range+0x101> mi++; fc: 41 ff c7 inc %r15d ff: eb 02 jmp 103 <__next_free_mem_range+0x103> else ri++; 101: ff c2 inc %edx *idx = (u32)mi | (u64)ri << 32; 103: 48 c1 e2 20 shl $0x20,%rdx 107: 45 89 ff mov %r15d,%r15d 10a: 48 8b 45 b8 mov -0x48(%rbp),%rax 10e: 4c 09 fa or %r15,%rdx 111: 48 89 10 mov %rdx,(%rax) return; 114: eb 30 jmp 146 <__next_free_mem_range+0x146> /* only memory regions are associated with nodes, check it */ if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { 116: ff c2 inc %edx 118: 48 63 c2 movslq %edx,%rax 11b: 48 39 d8 cmp %rbx,%rax 11e: 0f 82 69 ff ff ff jb 8d <__next_free_mem_range+0x8d> 124: 41 ff c6 inc %r14d 127: 8b 4d d0 mov -0x30(%rbp),%ecx 12a: 45 8d 3c 0e lea (%r14,%rcx,1),%r15d struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; int ri = *idx >> 32; for ( ; mi < mem->cnt; mi++) { 12e: 4d 63 ef movslq %r15d,%r13 131: 4c 3b 6d c8 cmp -0x38(%rbp),%r13 135: 0f 82 24 ff ff ff jb 5f <__next_free_mem_range+0x5f> } } } /* signal end of iteration */ *idx = ULLONG_MAX; 13b: 48 8b 45 b8 mov -0x48(%rbp),%rax 13f: 48 c7 00 ff ff ff ff movq $0xffffffffffffffff,(%rax) } 146: 48 83 c4 38 add $0x38,%rsp 14a: 5b pop %rbx 14b: 41 5c pop %r12 14d: 41 5d pop %r13 14f: 41 5e pop %r14 151: 41 5f pop %r15 153: c9 leaveq 154: c3 retq > * Can you please try the following patch? > > https://lkml.org/lkml/2012/6/15/510 The patch didn't seem to help. Since this is pretty easy to reproduce, let me know if adding any debug code will prove to be helpful in further analysis.
WARNING: multiple messages have this Message-ID (diff)
From: Sasha Levin <levinsasha928@gmail.com> To: Tejun Heo <tj@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org>, David Miller <davem@davemloft.net>, hpa@linux.intel.com, linux-mm <linux-mm@kvack.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: Re: Early boot panic on machine with lots of memory Date: Tue, 19 Jun 2012 00:50:50 +0200 [thread overview] Message-ID: <1340059850.3416.3.camel@lappy> (raw) In-Reply-To: <20120618223203.GE32733@google.com> On Mon, 2012-06-18 at 15:32 -0700, Tejun Heo wrote: > * Can you please post disassembly of the whole function? It seems > like rsv->regions[] was corrupt. I want to verify other registers > too. Here it is, with the patch you've asked to be tested applied if it matters any: 0000000000000000 <__next_free_mem_range>: * in lockstep and returns each intersection. */ void __init_memblock __next_free_mem_range(u64 *idx, int nid, phys_addr_t *out_start, phys_addr_t *out_end, int *out_nid) { 0: 55 push %rbp 1: 48 89 e5 mov %rsp,%rbp 4: 41 57 push %r15 6: 41 56 push %r14 if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { struct memblock_region *r = &rsv->regions[ri]; 8: 45 31 f6 xor %r14d,%r14d * in lockstep and returns each intersection. */ void __init_memblock __next_free_mem_range(u64 *idx, int nid, phys_addr_t *out_start, phys_addr_t *out_end, int *out_nid) { b: 41 55 push %r13 d: 41 54 push %r12 f: 53 push %rbx 10: 48 83 ec 38 sub $0x38,%rsp 14: 48 89 55 b0 mov %rdx,-0x50(%rbp) 18: 48 89 4d a8 mov %rcx,-0x58(%rbp) 1c: 48 89 7d b8 mov %rdi,-0x48(%rbp) 20: 4c 89 45 a0 mov %r8,-0x60(%rbp) struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; int ri = *idx >> 32; for ( ; mi < mem->cnt; mi++) { 24: 48 8b 0d 00 00 00 00 mov 0x0(%rip),%rcx # 2b <__next_free_mem_range+0x2b> 27: R_X86_64_PC32 memblock+0x4 phys_addr_t *out_start, phys_addr_t *out_end, int *out_nid) { struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; 2b: 48 8b 07 mov (%rdi),%rax /* only memory regions are associated with nodes, check it */ if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { 2e: 4c 8b 1d 00 00 00 00 mov 0x0(%rip),%r11 # 35 <__next_free_mem_range+0x35> 31: R_X86_64_PC32 memblock+0x24 phys_addr_t *out_end, int *out_nid) { struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; int ri = *idx >> 32; 35: 48 89 c2 mov %rax,%rdx phys_addr_t *out_start, phys_addr_t *out_end, int *out_nid) { struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; 38: 48 89 45 d0 mov %rax,-0x30(%rbp) int ri = *idx >> 32; 3c: 48 c1 ea 20 shr $0x20,%rdx for ( ; mi < mem->cnt; mi++) { struct memblock_region *m = &mem->regions[mi]; 40: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 47 <__next_free_mem_range+0x47> 43: R_X86_64_PC32 memblock+0x1c struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; int ri = *idx >> 32; for ( ; mi < mem->cnt; mi++) { 47: 48 89 4d c8 mov %rcx,-0x38(%rbp) struct memblock_region *m = &mem->regions[mi]; 4b: 48 89 45 c0 mov %rax,-0x40(%rbp) /* only memory regions are associated with nodes, check it */ if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { 4f: 49 8d 5b 01 lea 0x1(%r11),%rbx struct memblock_region *r = &rsv->regions[ri]; 53: 4c 8b 25 00 00 00 00 mov 0x0(%rip),%r12 # 5a <__next_free_mem_range+0x5a> 56: R_X86_64_PC32 memblock+0x3c struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; int ri = *idx >> 32; for ( ; mi < mem->cnt; mi++) { 5a: e9 c8 00 00 00 jmpq 127 <__next_free_mem_range+0x127> struct memblock_region *m = &mem->regions[mi]; 5f: 4d 6b ed 18 imul $0x18,%r13,%r13 63: 4c 03 6d c0 add -0x40(%rbp),%r13 phys_addr_t m_start = m->base; 67: 4d 8b 4d 00 mov 0x0(%r13),%r9 phys_addr_t m_end = m->base + m->size; 6b: 4d 89 ca mov %r9,%r10 6e: 4d 03 55 08 add 0x8(%r13),%r10 /* only memory regions are associated with nodes, check it */ if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) 72: 81 fe 00 04 00 00 cmp $0x400,%esi 78: 0f 84 9a 00 00 00 je 118 <__next_free_mem_range+0x118> r->nid = nid; } static inline int memblock_get_region_node(const struct memblock_region *r) { return r->nid; 7e: 41 3b 75 10 cmp 0x10(%r13),%esi 82: 0f 85 9c 00 00 00 jne 124 <__next_free_mem_range+0x124> 88: e9 8b 00 00 00 jmpq 118 <__next_free_mem_range+0x118> continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { struct memblock_region *r = &rsv->regions[ri]; 8d: 4c 6b c0 18 imul $0x18,%rax,%r8 phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0; 91: 31 c9 xor %ecx,%ecx if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { struct memblock_region *r = &rsv->regions[ri]; 93: 4f 8d 04 04 lea (%r12,%r8,1),%r8 phys_addr_t r_start = ri ? r[-1].base + r[-1].size : 0; 97: 85 d2 test %edx,%edx 99: 74 08 je a3 <__next_free_mem_range+0xa3> 9b: 49 8b 48 f0 mov -0x10(%r8),%rcx 9f: 49 03 48 e8 add -0x18(%r8),%rcx phys_addr_t r_end = ri < rsv->cnt ? r->base : ULLONG_MAX; a3: 48 83 cf ff or $0xffffffffffffffff,%rdi a7: 4c 39 d8 cmp %r11,%rax aa: 73 03 jae af <__next_free_mem_range+0xaf> ac: 49 8b 38 mov (%r8),%rdi /* if ri advanced past mi, break out to advance mi */ if (r_start >= m_end) af: 4c 39 d1 cmp %r10,%rcx b2: 73 70 jae 124 <__next_free_mem_range+0x124> break; /* if the two regions intersect, we're done */ if (m_start < r_end) { b4: 4c 39 cf cmp %r9,%rdi b7: 76 5d jbe 116 <__next_free_mem_range+0x116> if (out_start) b9: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp) be: 74 0e je ce <__next_free_mem_range+0xce> *out_start = max(m_start, r_start); c0: 4c 39 c9 cmp %r9,%rcx c3: 48 8b 45 b0 mov -0x50(%rbp),%rax c7: 49 0f 42 c9 cmovb %r9,%rcx cb: 48 89 08 mov %rcx,(%rax) if (out_end) ce: 48 83 7d a8 00 cmpq $0x0,-0x58(%rbp) d3: 74 11 je e6 <__next_free_mem_range+0xe6> *out_end = min(m_end, r_end); d5: 4c 39 d7 cmp %r10,%rdi d8: 4c 89 d0 mov %r10,%rax db: 48 8b 4d a8 mov -0x58(%rbp),%rcx df: 48 0f 46 c7 cmovbe %rdi,%rax e3: 48 89 01 mov %rax,(%rcx) if (out_nid) e6: 48 83 7d a0 00 cmpq $0x0,-0x60(%rbp) eb: 74 0a je f7 <__next_free_mem_range+0xf7> *out_nid = memblock_get_region_node(m); ed: 41 8b 45 10 mov 0x10(%r13),%eax f1: 48 8b 4d a0 mov -0x60(%rbp),%rcx f5: 89 01 mov %eax,(%rcx) /* * The region which ends first is advanced * for the next iteration. */ if (m_end <= r_end) f7: 4c 39 d7 cmp %r10,%rdi fa: 72 05 jb 101 <__next_free_mem_range+0x101> mi++; fc: 41 ff c7 inc %r15d ff: eb 02 jmp 103 <__next_free_mem_range+0x103> else ri++; 101: ff c2 inc %edx *idx = (u32)mi | (u64)ri << 32; 103: 48 c1 e2 20 shl $0x20,%rdx 107: 45 89 ff mov %r15d,%r15d 10a: 48 8b 45 b8 mov -0x48(%rbp),%rax 10e: 4c 09 fa or %r15,%rdx 111: 48 89 10 mov %rdx,(%rax) return; 114: eb 30 jmp 146 <__next_free_mem_range+0x146> /* only memory regions are associated with nodes, check it */ if (nid != MAX_NUMNODES && nid != memblock_get_region_node(m)) continue; /* scan areas before each reservation for intersection */ for ( ; ri < rsv->cnt + 1; ri++) { 116: ff c2 inc %edx 118: 48 63 c2 movslq %edx,%rax 11b: 48 39 d8 cmp %rbx,%rax 11e: 0f 82 69 ff ff ff jb 8d <__next_free_mem_range+0x8d> 124: 41 ff c6 inc %r14d 127: 8b 4d d0 mov -0x30(%rbp),%ecx 12a: 45 8d 3c 0e lea (%r14,%rcx,1),%r15d struct memblock_type *mem = &memblock.memory; struct memblock_type *rsv = &memblock.reserved; int mi = *idx & 0xffffffff; int ri = *idx >> 32; for ( ; mi < mem->cnt; mi++) { 12e: 4d 63 ef movslq %r15d,%r13 131: 4c 3b 6d c8 cmp -0x38(%rbp),%r13 135: 0f 82 24 ff ff ff jb 5f <__next_free_mem_range+0x5f> } } } /* signal end of iteration */ *idx = ULLONG_MAX; 13b: 48 8b 45 b8 mov -0x48(%rbp),%rax 13f: 48 c7 00 ff ff ff ff movq $0xffffffffffffffff,(%rax) } 146: 48 83 c4 38 add $0x38,%rsp 14a: 5b pop %rbx 14b: 41 5c pop %r12 14d: 41 5d pop %r13 14f: 41 5e pop %r14 151: 41 5f pop %r15 153: c9 leaveq 154: c3 retq > * Can you please try the following patch? > > https://lkml.org/lkml/2012/6/15/510 The patch didn't seem to help. Since this is pretty easy to reproduce, let me know if adding any debug code will prove to be helpful in further analysis. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2012-06-18 22:49 UTC|newest] Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-06-13 21:38 Early boot panic on machine with lots of memory Sasha Levin 2012-06-14 3:20 ` Tejun Heo 2012-06-14 3:20 ` Tejun Heo 2012-06-14 9:50 ` Sasha Levin 2012-06-14 9:50 ` Sasha Levin 2012-06-14 20:56 ` Yinghai Lu 2012-06-14 20:56 ` Yinghai Lu 2012-06-14 21:34 ` Sasha Levin 2012-06-14 21:34 ` Sasha Levin 2012-06-14 23:57 ` Yinghai Lu 2012-06-14 23:57 ` Yinghai Lu 2012-06-15 0:59 ` Sasha Levin 2012-06-15 0:59 ` Sasha Levin 2012-06-15 0:59 ` Sasha Levin 2012-06-15 2:21 ` Yinghai Lu 2012-06-15 2:21 ` Yinghai Lu 2012-06-15 7:41 ` Sasha Levin 2012-06-15 7:41 ` Sasha Levin 2012-06-18 22:32 ` Tejun Heo 2012-06-18 22:32 ` Tejun Heo 2012-06-18 22:50 ` Sasha Levin [this message] 2012-06-18 22:50 ` Sasha Levin 2012-06-19 4:11 ` Gavin Shan 2012-06-19 4:11 ` Gavin Shan 2012-06-19 5:43 ` Yinghai Lu 2012-06-19 5:43 ` Yinghai Lu 2012-06-19 6:09 ` Gavin Shan 2012-06-19 6:09 ` Gavin Shan 2012-06-19 18:12 ` Yinghai Lu 2012-06-19 18:12 ` Yinghai Lu 2012-06-19 21:20 ` Tejun Heo 2012-06-19 21:20 ` Tejun Heo 2012-06-19 21:26 ` Tejun Heo 2012-06-19 21:26 ` Tejun Heo 2012-06-20 2:57 ` Yinghai Lu 2012-06-21 20:17 ` Tejun Heo 2012-06-21 20:17 ` Tejun Heo 2012-06-22 1:47 ` Yinghai Lu 2012-06-22 1:58 ` Yinghai Lu 2012-06-22 18:51 ` Tejun Heo 2012-06-22 18:51 ` Tejun Heo 2012-06-22 19:23 ` Yinghai Lu 2012-06-22 19:23 ` Yinghai Lu 2012-06-22 19:29 ` Tejun Heo 2012-06-22 19:29 ` Tejun Heo 2012-06-22 20:01 ` Yinghai Lu 2012-06-22 20:01 ` Yinghai Lu 2012-06-22 20:14 ` Tejun Heo 2012-06-22 20:14 ` Tejun Heo 2012-06-22 20:23 ` Yinghai Lu 2012-06-22 20:23 ` Yinghai Lu 2012-06-23 2:14 ` Yinghai Lu 2012-06-27 18:13 ` Tejun Heo 2012-06-27 18:13 ` Tejun Heo 2012-06-27 19:22 ` Yinghai Lu 2012-06-27 19:22 ` Yinghai Lu 2012-06-27 19:26 ` Tejun Heo 2012-06-27 19:26 ` Tejun Heo 2012-06-27 21:15 ` Yinghai Lu 2012-06-29 18:27 ` [PATCH for -3.5] memblock: free allocated memblock_reserved_regions later Yinghai Lu 2012-06-29 18:27 ` Yinghai Lu 2012-06-29 18:32 ` Tejun Heo 2012-06-29 18:32 ` Tejun Heo 2012-06-29 18:38 ` Yinghai Lu 2012-06-29 18:38 ` Yinghai Lu 2012-06-21 20:19 ` Early boot panic on machine with lots of memory Tejun Heo 2012-06-21 20:19 ` Tejun Heo 2012-06-22 10:29 ` Sasha Levin 2012-06-22 10:29 ` Sasha Levin 2012-06-22 18:15 ` Yinghai Lu 2012-06-22 18:15 ` Yinghai Lu
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1340059850.3416.3.camel@lappy \ --to=levinsasha928@gmail.com \ --cc=akpm@linux-foundation.org \ --cc=davem@davemloft.net \ --cc=hpa@linux.intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=tj@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.