Kukjin Kim wrote: [...] > Hmm, updating timer patches in Samsung tree cause the merge conflicts with > arm-soc, so for now I dropped them in my tree just now. > And note that regarding topic branch which are including it will be re-worked > soon :-) > > Now to merge Samsung tree for linux-next should be fine. > > Thanks again. > One more, following is my preferred resolution when merge conflict happens between Samsung tree and arm-soc tree: 8<--------------------------------------------------- diff --cc arch/arm/common/Makefile index 55d4182,dc8dd0d..7a5df8b --- a/arch/arm/common/Makefile +++ b/arch/arm/common/Makefile @@@ -2,10 -2,6 +2,8 @@@ # Makefile for the linux kernel. # +obj-y += firmware.o + - obj-$(CONFIG_ARM_GIC) += gic.o - obj-$(CONFIG_ARM_VIC) += vic.o obj-$(CONFIG_ICST) += icst.o obj-$(CONFIG_SA1111) += sa1111.o obj-$(CONFIG_PCI_HOST_VIA82C505) += via82c505.o diff --cc arch/arm/mach-exynos/mach-exynos4-dt.c index ab1dacc,112d10e..3ac73ed --- a/arch/arm/mach-exynos/mach-exynos4-dt.c +++ b/arch/arm/mach-exynos/mach-exynos4-dt.c @@@ -107,11 -106,9 +106,10 @@@ DT_MACHINE_START(EXYNOS4210_DT, "Samsun .smp = smp_ops(exynos_smp_ops), .init_irq = exynos4_init_irq, .map_io = exynos4_dt_map_io, - .handle_irq = gic_handle_irq, + .init_early = exynos_firmware_init, .init_machine = exynos4_dt_machine_init, .init_late = exynos_init_late, - .timer = &exynos4_timer, + .init_time = exynos4_timer_init, .dt_compat = exynos4_dt_compat, .restart = exynos4_restart, MACHINE_END diff --cc arch/arm/mach-exynos/platsmp.c index 3226893,60f7c5b..a083e05 --- a/arch/arm/mach-exynos/platsmp.c +++ b/arch/arm/mach-exynos/platsmp.c @@@ -20,12 -20,11 +20,12 @@@ #include <linux/jiffies.h> #include <linux/smp.h> #include <linux/io.h> + #include <linux/irqchip/arm-gic.h> #include <asm/cacheflush.h> - #include <asm/hardware/gic.h> #include <asm/smp_plat.h> #include <asm/smp_scu.h> +#include <asm/firmware.h> #include <mach/hardware.h> #include <mach/regs-clock.h> @@@ -146,22 -145,11 +146,22 @@@ static int __cpuinit exynos_boot_second timeout = jiffies + (1 * HZ); while (time_before(jiffies, timeout)) { + unsigned long boot_addr; + smp_rmb(); - __raw_writel(virt_to_phys(exynos4_secondary_startup), - cpu_boot_reg(phys_cpu)); + boot_addr = virt_to_phys(exynos4_secondary_startup); + + /* + * Try to set boot address using firmware first + * and fall back to boot register if it fails. + */ + if (call_firmware_op(set_cpu_boot_addr, phys_cpu, boot_addr)) + __raw_writel(boot_addr, cpu_boot_reg(phys_cpu)); + + call_firmware_op(cpu_boot, phys_cpu); + - gic_raise_softirq(cpumask_of(cpu), 0); + arch_send_wakeup_ipi_mask(cpumask_of(cpu)); if (pen_release == -1) break; -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html