On Mon, Dec 06, 2004 at 10:17:55AM -0800, Dave Hansen wrote: > On Mon, 2004-12-06 at 10:11, Mark Wong wrote: > > The addr2line returned: > > ??:0 > > Turn on your kernel debugging in the future, please. Basically make > sure to compile with -g. > I rebuilt mm/memory_hotplug.o with -g. Is the attached objdump sufficient? Mark -------------- next part -------------- 00000510 <online_pages>: int online_pages(unsigned long pfn, unsigned long nr_pages) { 510: 57 push %edi int i; printk(KERN_DEBUG "%s: onlining 0x%lx pages starting from pfn: 0x%lx\n", 511: b8 38 00 00 00 mov $0x38,%eax 516: 56 push %esi 517: 53 push %ebx 518: 83 ec 10 sub $0x10,%esp __func__, nr_pages, pfn); for (i = 0; i < nr_pages; i++) { 51b: 31 db xor %ebx,%ebx 51d: 89 44 24 04 mov %eax,0x4(%esp,1) 521: 8b 7c 24 24 mov 0x24(%esp,1),%edi 525: 8b 74 24 20 mov 0x20(%esp,1),%esi 529: c7 04 24 e0 00 00 00 movl $0xe0,(%esp,1) 530: 89 7c 24 08 mov %edi,0x8(%esp,1) 534: 89 74 24 0c mov %esi,0xc(%esp,1) 538: e8 fc ff ff ff call 539 <online_pages+0x29> 53d: 39 fb cmp %edi,%ebx 53f: 72 3f jb 580 <online_pages+0x70> struct zone; extern struct zone *zone_table[]; static inline struct zone *page_zone(struct page *page) { 541: 89 34 24 mov %esi,(%esp,1) 544: e8 fc ff ff ff call 545 <online_pages+0x35> return zone_table[page->flags >> NODEZONE_SHIFT]; 549: 8b 00 mov (%eax),%eax 54b: c1 e8 1d shr $0x1d,%eax 54e: 8b 04 85 00 00 00 00 mov 0x0(,%eax,4),%eax 555: 01 b8 18 03 00 00 add %edi,0x318(%eax) struct page *page = pfn_to_page(pfn + i); if (page_count(page) == 0) online_page(page); } page_zone(pfn_to_page(pfn))->present_pages += nr_pages; printk(KERN_DEBUG "%s: onlining if 0x%lx pages done.\n", 55b: b8 38 00 00 00 mov $0x38,%eax 560: 89 7c 24 08 mov %edi,0x8(%esp,1) 564: 89 44 24 04 mov %eax,0x4(%esp,1) 568: c7 04 24 18 01 00 00 movl $0x118,(%esp,1) 56f: e8 fc ff ff ff call 570 <online_pages+0x60> __func__, nr_pages); /* need error checking */ return 0; } 574: 83 c4 10 add $0x10,%esp 577: 31 c0 xor %eax,%eax 579: 5b pop %ebx 57a: 5e pop %esi 57b: 5f pop %edi 57c: c3 ret 57d: 8d 76 00 lea 0x0(%esi),%esi 580: 8d 04 33 lea (%ebx,%esi,1),%eax 583: 89 04 24 mov %eax,(%esp,1) 586: e8 fc ff ff ff call 587 <online_pages+0x77> 58b: 89 c2 mov %eax,%edx #ifdef CONFIG_HUGETLB_PAGE static inline int page_count(struct page *p) { 58d: 89 c1 mov %eax,%ecx #endif static inline int constant_test_bit(int nr, const volatile unsigned long *addr) { return ((1UL << (nr & 31)) & (addr[nr >> 5])) != 0; 58f: 8b 00 mov (%eax),%eax 591: a9 00 80 00 00 test $0x8000,%eax 596: 74 03 je 59b <online_pages+0x8b> static inline int page_count(struct page *p) { if (PageCompound(p)) p = (struct page *)p->private; 598: 8b 4a 0c mov 0xc(%edx),%ecx 59b: 8b 41 04 mov 0x4(%ecx),%eax 59e: 40 inc %eax 59f: 74 07 je 5a8 <online_pages+0x98> 5a1: 43 inc %ebx 5a2: 39 fb cmp %edi,%ebx 5a4: 72 da jb 580 <online_pages+0x70> 5a6: eb 99 jmp 541 <online_pages+0x31> 5a8: 89 14 24 mov %edx,(%esp,1) 5ab: e8 fc ff ff ff call 5ac <online_pages+0x9c> 5b0: eb ef jmp 5a1 <online_pages+0x91> 5b2: 8d b4 26 00 00 00 00 lea 0x0(%esi,1),%esi 5b9: 8d bc 27 00 00 00 00 lea 0x0(%edi,1),%edi