Messages in this thread | | | Date | Tue, 7 Oct 2008 17:01:03 -0700 | From | Andrew Morton <> | Subject | Re: mmotm 2008-10-02-16-17 uploaded |
| |
On Wed, 8 Oct 2008 08:47:53 +0900 KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:
> On Tue, 07 Oct 2008 09:18:03 -0700 > Yinghai Lu <yinghai@kernel.org> wrote: > > > KAMEZAWA Hiroyuki wrote: > > > I'm sorry if alread fixed. > > > > > > Folloing function in git-x86.patch touches invalid address. > > > == > > > +void __init early_cpu_init(void) > > > +{ > > > + struct cpu_dev **cdev; > > > + int count = 0; > > > + > > > + printk("KERNEL supported cpus:\n"); > > > + for (cdev = __x86_cpu_dev_start; cdev < __x86_cpu_dev_end; cdev++) { > > > + struct cpu_dev *cpudev = *cdev; > > > + unsigned int j; > > > + > > > + if (count >= X86_VENDOR_NUM) > > > + break; > > > + cpu_devs[count] = cpudev; > > > + count++; > > > + > > > + for (j = 0; j < 2; j++) { > > > + if (!cpudev->c_ident[j]) > > > + continue; > > > + printk(" %s %s\n", cpudev->c_vendor, > > > + cpudev->c_ident[j]); > > > + } > > > + } > > > + > > > + early_identify_cpu(&boot_cpu_data); > > > } > > > == > > > printk(" %s %s\n", cpudev->c_vendor, cpudev->c_ident[j]); > > > touches invalid address. (following is printk() result by > > > replacing %s with %p. > > > == > > > ffffffff8066e38a ffffffff8066e383 > > > ffffffff8066e3ab ffffffff8066e3a2 > > > ffffffff8066e3af ffffffff8066e3b7 > > > 807064c0c7c74855 08ec834853e58948 > > > 807064c0c7c74855 74c085fffffe9fe8 > > > == > > > and the kernel never boots on my box. > > > > could be merging problem again. > > > > please check in arch/x86/kernel/vmliux_64.lds.S > > > > it should be like > > > > __con_initcall_end = .; > > __x86_cpu_dev_start = .; > > .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) { > > *(.x86_cpu_dev.init) > > } > > __x86_cpu_dev_end = .; > > > > DYN_ARRAY_INIT(8) > > > > SECURITY_INIT
The above is what's presently in Ingo's "tip" tree.
> Oh, yes. like this. > == > __con_initcall_end = .; > __x86_cpu_dev_start = .; > .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) { > *(.x86_cpu_dev.init) > } > SECURITY_INIT > __x86_cpu_dev_end = .; > == > > I'll try next version when it comes.
If that fixes it then Ingo's tree will need fixing too, I suppose.
| |