diff for duplicates of <4DF8811B.9090506@arm.com> diff --git a/a/1.txt b/N1/1.txt index 6d7e469..135f913 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -63,7 +63,7 @@ On 15/06/11 01:52, Kyungmin Park wrote: >>> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in ->>> the body of a message to majordomo@vger.kernel.org +>>> the body of a message to majordomo at vger.kernel.org >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> >> @@ -103,3 +103,7 @@ Cheers, -- Jazz is not dead. It just smells funny... +-------------- next part -------------- +An embedded and charset-unspecified text was scrubbed... +Name: 0001-ARM-exynos4-fix-secondary-CPU-boot-on-early-SoC-revi.txt +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110615/6ce337a7/attachment.txt> diff --git a/a/2.hdr b/a/2.hdr deleted file mode 100644 index baf1ea7..0000000 --- a/a/2.hdr +++ /dev/null @@ -1,6 +0,0 @@ -Content-Type: text/plain; - name=0001-ARM-exynos4-fix-secondary-CPU-boot-on-early-SoC-revi.txt -Content-Transfer-Encoding: quoted-printable -Content-Disposition: inline; - filename*0="0001-ARM-exynos4-fix-secondary-CPU-boot-on-early-SoC-revi.tx"; - filename*1="t" diff --git a/a/2.txt b/a/2.txt deleted file mode 100644 index bff8b60..0000000 --- a/a/2.txt +++ /dev/null @@ -1,135 +0,0 @@ ->From a24392183d396fab790557b0efb35e840c9e8a81 Mon Sep 17 00:00:00 2001 -From: Marc Zyngier <marc.zyngier@arm.com> -Date: Fri, 20 May 2011 14:38:25 +0100 -Subject: [PATCH] ARM: exynos4: fix secondary CPU boot on early SoC revisions - -It appears that the system-wide flags register that used to be at -0x02025000 on the first revision of Exynos4 has moved to 0x02020000. - -The kernel has been updated accordingly, but this unfortunately leaves -early boards without SMP support (the secondary CPU spins endlessly -in BL0 waiting for an address to be written at that memory location). - -Solve the problem by providing an s3c_get_chip_id() function, common -to all s3c/s5p implementations, and test the result on the secondary boot -path. - -Revision table, as provided by Kyungmin Park <kmpark@infradead.org>: -0x4320 0200 EVT0 -0x4321 0210 EVT1 -0x4321 0211 EVT2 - -The last 8 bits can be overrided by efuses, so only bits [16:19] are -used to identify the revision. - -Tested on a vintage SMDK-v310. - -Cc: Kukjin Kim <kgene.kim@samsung.com> -Cc: Kyungmin Park <kmpark@infradead.org> -Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> ---- - arch/arm/mach-exynos4/include/mach/map.h | 1 + - arch/arm/mach-exynos4/platsmp.c | 22 +++++++++++++++++++++- - arch/arm/plat-samsung/include/plat/cpu.h | 2 ++ - arch/arm/plat-samsung/init.c | 8 ++++++++ - 4 files changed, 32 insertions(+), 1 deletions(-) - -diff --git a/arch/arm/mach-exynos4/include/mach/map.h b/arch/arm/mach-exynos4/include/mach/map.h -index 57d8074..da08f5c 100644 ---- a/arch/arm/mach-exynos4/include/mach/map.h -+++ b/arch/arm/mach-exynos4/include/mach/map.h -@@ -24,6 +24,7 @@ - #include <plat/map-s5p.h> - - #define EXYNOS4_PA_SYSRAM 0x02020000 -+#define EXYNOS4_PA_SYSRAM_EVT0 0x02025000 - - #define EXYNOS4_PA_FIMC0 0x11800000 - #define EXYNOS4_PA_FIMC1 0x11810000 -diff --git a/arch/arm/mach-exynos4/platsmp.c b/arch/arm/mach-exynos4/platsmp.c -index c5e65a0..086d1e3 100644 ---- a/arch/arm/mach-exynos4/platsmp.c -+++ b/arch/arm/mach-exynos4/platsmp.c -@@ -26,6 +26,8 @@ - #include <asm/smp_scu.h> - #include <asm/unified.h> - -+#include <plat/cpu.h> -+ - #include <mach/hardware.h> - #include <mach/regs-clock.h> - -@@ -170,6 +172,24 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus) - * system-wide flags register. The boot monitor waits - * until it receives a soft interrupt, and then the - * secondary CPU branches to this address. -+ * -+ * EVT0 has the system-wide flags register at a different -+ * address, hence the following hackery... - */ -- __raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)), S5P_VA_SYSRAM); -+ if (s3c_get_chip_id() & 0xF0000UL) -+ __raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)), -+ S5P_VA_SYSRAM); -+ else { -+ void __iomem *sysram_evt0; -+ -+ sysram_evt0 = ioremap(EXYNOS4_PA_SYSRAM_EVT0, SZ_4K); -+ if (!sysram_evt0) { -+ pr_err("Unable to remap EXYNOS4_PA_SYSRAM_EVT0\n"); -+ return; -+ } -+ __raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)), -+ sysram_evt0); -+ iounmap(sysram_evt0); -+ } -+ - } -diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h -index c0a5741..41573cc 100644 ---- a/arch/arm/plat-samsung/include/plat/cpu.h -+++ b/arch/arm/plat-samsung/include/plat/cpu.h -@@ -44,6 +44,8 @@ struct cpu_table { - extern void s3c_init_cpu(unsigned long idcode, - struct cpu_table *cpus, unsigned int cputab_size); - -+extern unsigned long s3c_get_chip_id(void); -+ - /* core initialisation functions */ - - extern void s3c24xx_init_irq(void); -diff --git a/arch/arm/plat-samsung/init.c b/arch/arm/plat-samsung/init.c -index 79d10fc..320b88f 100644 ---- a/arch/arm/plat-samsung/init.c -+++ b/arch/arm/plat-samsung/init.c -@@ -30,6 +30,7 @@ - #include <plat/regs-serial.h> - - static struct cpu_table *cpu; -+static unsigned long s3c_chip_id; - - static struct cpu_table * __init s3c_lookup_cpu(unsigned long idcode, - struct cpu_table *tab, -@@ -60,6 +61,8 @@ void __init s3c_init_cpu(unsigned long idcode, - panic("Unsupported Samsung CPU"); - } - -+ s3c_chip_id = idcode; -+ - cpu->map_io(); - } - -@@ -140,6 +143,11 @@ void __init s3c24xx_init_uarts(struct s3c2410_uartcfg *cfg, int no) - (cpu->init_uarts)(cfg, no); - } - -+unsigned long s3c_get_chip_id(void) -+{ -+ return s3c_chip_id; -+} -+ - static int __init s3c_arch_init(void) - { - int ret; --- -1.7.0.4 diff --git a/a/content_digest b/N1/content_digest index 7e6c674..ba868a2 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -9,15 +9,11 @@ "ref\01307004853.31098.12.camel@e102391-lin.cambridge.arm.com\0" "ref\0BANLkTi=hEBKTpEq6daMyEdLo63aet52Gbg@mail.gmail.com\0" "ref\0BANLkTinov=XKF5dH9EOpMj=oQC7oyKGKfA@mail.gmail.com\0" - "From\0Marc Zyngier <marc.zyngier@arm.com>\0" - "Subject\0Re: [PATCH] ARM: exynos4: fix secondary CPU boot\0" + "From\0marc.zyngier@arm.com (Marc Zyngier)\0" + "Subject\0[PATCH] ARM: exynos4: fix secondary CPU boot\0" "Date\0Wed, 15 Jun 2011 10:53:31 +0100\0" - "To\0Kyungmin Park <kmpark@infradead.org>\0" - "Cc\0Angus Ainslie <angus.ainslie@linaro.org>" - linux-samsung-soc@vger.kernel.org <linux-samsung-soc@vger.kernel.org> - Kukjin Kim <kgene.kim@samsung.com> - " linux-arm-kernel@lists.infradead.org <linux-arm-kernel@lists.infradead.org>\0" - "\01:1\0" + "To\0linux-arm-kernel@lists.infradead.org\0" + "\00:1\0" "b\0" "On 15/06/11 01:52, Kyungmin Park wrote:\n" "> On Wed, Jun 15, 2011 at 7:26 AM, Angus Ainslie <angus.ainslie@linaro.org> wrote:\n" @@ -84,7 +80,7 @@ ">>>\n" ">>> --\n" ">>> To unsubscribe from this list: send the line \"unsubscribe linux-samsung-soc\" in\n" - ">>> the body of a message to majordomo@vger.kernel.org\n" + ">>> the body of a message to majordomo at vger.kernel.org\n" ">>> More majordomo info at http://vger.kernel.org/majordomo-info.html\n" ">>>\n" ">>\n" @@ -123,144 +119,10 @@ "\tM.\n" "\n" "-- \n" - Jazz is not dead. It just smells funny... - "\01:2\0" - "fn\00001-ARM-exynos4-fix-secondary-CPU-boot-on-early-SoC-revi.txt\0" - "b\0" - ">From a24392183d396fab790557b0efb35e840c9e8a81 Mon Sep 17 00:00:00 2001\n" - "From: Marc Zyngier <marc.zyngier@arm.com>\n" - "Date: Fri, 20 May 2011 14:38:25 +0100\n" - "Subject: [PATCH] ARM: exynos4: fix secondary CPU boot on early SoC revisions\n" - "\n" - "It appears that the system-wide flags register that used to be at\n" - "0x02025000 on the first revision of Exynos4 has moved to 0x02020000.\n" - "\n" - "The kernel has been updated accordingly, but this unfortunately leaves\n" - "early boards without SMP support (the secondary CPU spins endlessly\n" - "in BL0 waiting for an address to be written at that memory location).\n" - "\n" - "Solve the problem by providing an s3c_get_chip_id() function, common\n" - "to all s3c/s5p implementations, and test the result on the secondary boot\n" - "path.\n" - "\n" - "Revision table, as provided by Kyungmin Park <kmpark@infradead.org>:\n" - "0x4320 0200 EVT0\n" - "0x4321 0210 EVT1\n" - "0x4321 0211 EVT2\n" - "\n" - "The last 8 bits can be overrided by efuses, so only bits [16:19] are\n" - "used to identify the revision.\n" - "\n" - "Tested on a vintage SMDK-v310.\n" - "\n" - "Cc: Kukjin Kim <kgene.kim@samsung.com>\n" - "Cc: Kyungmin Park <kmpark@infradead.org>\n" - "Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>\n" - "---\n" - " arch/arm/mach-exynos4/include/mach/map.h | 1 +\n" - " arch/arm/mach-exynos4/platsmp.c | 22 +++++++++++++++++++++-\n" - " arch/arm/plat-samsung/include/plat/cpu.h | 2 ++\n" - " arch/arm/plat-samsung/init.c | 8 ++++++++\n" - " 4 files changed, 32 insertions(+), 1 deletions(-)\n" - "\n" - "diff --git a/arch/arm/mach-exynos4/include/mach/map.h b/arch/arm/mach-exynos4/include/mach/map.h\n" - "index 57d8074..da08f5c 100644\n" - "--- a/arch/arm/mach-exynos4/include/mach/map.h\n" - "+++ b/arch/arm/mach-exynos4/include/mach/map.h\n" - "@@ -24,6 +24,7 @@\n" - " #include <plat/map-s5p.h>\n" - " \n" - " #define EXYNOS4_PA_SYSRAM\t\t0x02020000\n" - "+#define EXYNOS4_PA_SYSRAM_EVT0\t\t0x02025000\n" - " \n" - " #define EXYNOS4_PA_FIMC0\t\t0x11800000\n" - " #define EXYNOS4_PA_FIMC1\t\t0x11810000\n" - "diff --git a/arch/arm/mach-exynos4/platsmp.c b/arch/arm/mach-exynos4/platsmp.c\n" - "index c5e65a0..086d1e3 100644\n" - "--- a/arch/arm/mach-exynos4/platsmp.c\n" - "+++ b/arch/arm/mach-exynos4/platsmp.c\n" - "@@ -26,6 +26,8 @@\n" - " #include <asm/smp_scu.h>\n" - " #include <asm/unified.h>\n" - " \n" - "+#include <plat/cpu.h>\n" - "+\n" - " #include <mach/hardware.h>\n" - " #include <mach/regs-clock.h>\n" - " \n" - "@@ -170,6 +172,24 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus)\n" - " \t * system-wide flags register. The boot monitor waits\n" - " \t * until it receives a soft interrupt, and then the\n" - " \t * secondary CPU branches to this address.\n" - "+\t *\n" - "+\t * EVT0 has the system-wide flags register at a different\n" - "+\t * address, hence the following hackery...\n" - " \t */\n" - "-\t__raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)), S5P_VA_SYSRAM);\n" - "+\tif (s3c_get_chip_id() & 0xF0000UL)\n" - "+\t\t__raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)),\n" - "+\t\t\t S5P_VA_SYSRAM);\n" - "+\telse {\n" - "+\t\tvoid __iomem *sysram_evt0;\n" - "+\n" - "+\t\tsysram_evt0 = ioremap(EXYNOS4_PA_SYSRAM_EVT0, SZ_4K);\n" - "+\t\tif (!sysram_evt0) {\n" - "+\t\t\tpr_err(\"Unable to remap EXYNOS4_PA_SYSRAM_EVT0\\n\");\n" - "+\t\t\treturn;\n" - "+\t\t}\n" - "+\t\t__raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)),\n" - "+\t\t\t sysram_evt0);\n" - "+\t\tiounmap(sysram_evt0);\n" - "+\t}\n" - "+\n" - " }\n" - "diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h\n" - "index c0a5741..41573cc 100644\n" - "--- a/arch/arm/plat-samsung/include/plat/cpu.h\n" - "+++ b/arch/arm/plat-samsung/include/plat/cpu.h\n" - "@@ -44,6 +44,8 @@ struct cpu_table {\n" - " extern void s3c_init_cpu(unsigned long idcode,\n" - " \t\t\t struct cpu_table *cpus, unsigned int cputab_size);\n" - " \n" - "+extern unsigned long s3c_get_chip_id(void);\n" - "+\n" - " /* core initialisation functions */\n" - " \n" - " extern void s3c24xx_init_irq(void);\n" - "diff --git a/arch/arm/plat-samsung/init.c b/arch/arm/plat-samsung/init.c\n" - "index 79d10fc..320b88f 100644\n" - "--- a/arch/arm/plat-samsung/init.c\n" - "+++ b/arch/arm/plat-samsung/init.c\n" - "@@ -30,6 +30,7 @@\n" - " #include <plat/regs-serial.h>\n" - " \n" - " static struct cpu_table *cpu;\n" - "+static unsigned long s3c_chip_id;\n" - " \n" - " static struct cpu_table * __init s3c_lookup_cpu(unsigned long idcode,\n" - " \t\t\t\t\t\tstruct cpu_table *tab,\n" - "@@ -60,6 +61,8 @@ void __init s3c_init_cpu(unsigned long idcode,\n" - " \t\tpanic(\"Unsupported Samsung CPU\");\n" - " \t}\n" - " \n" - "+\ts3c_chip_id = idcode;\n" - "+\n" - " \tcpu->map_io();\n" - " }\n" - " \n" - "@@ -140,6 +143,11 @@ void __init s3c24xx_init_uarts(struct s3c2410_uartcfg *cfg, int no)\n" - " \t\t(cpu->init_uarts)(cfg, no);\n" - " }\n" - " \n" - "+unsigned long s3c_get_chip_id(void)\n" - "+{\n" - "+\treturn s3c_chip_id;\n" - "+}\n" - "+\n" - " static int __init s3c_arch_init(void)\n" - " {\n" - " \tint ret;\n" - "-- \n" - 1.7.0.4 + "Jazz is not dead. It just smells funny...\n" + "-------------- next part --------------\n" + "An embedded and charset-unspecified text was scrubbed...\n" + "Name: 0001-ARM-exynos4-fix-secondary-CPU-boot-on-early-SoC-revi.txt\n" + URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110615/6ce337a7/attachment.txt> -f9c9620cf305e8442828bbe3f40779e3ba7b92e00722a23ca2a8e95fc4a4161b +24a205485e1b0bf22b3c5b26bd7c31ab7a1358a5e9938898baeb14aac962d82c
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.