Re: mmotm 2008-10-02-16-17 uploaded

From: Yinghai Lu
Date: Tue Oct 07 2008 - 12:19:53 EST


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


YH


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/