From caf54e7f167331dfff93d438fa7ae273d4e2864b Mon Sep 17 00:00:00 2001 From: Adrian Bunk Date: Wed, 11 Jan 2006 15:55:23 -0800 Subject: [PATCH] --- yaml --- r: 17876 b: refs/heads/master c: 61943c5015acae42fe355bf033bbee8d63691fe3 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/powerpc/Kconfig | 83 ++++++++----------- trunk/arch/powerpc/Kconfig.debug | 42 ---------- trunk/arch/powerpc/boot/.gitignore | 20 ----- trunk/arch/powerpc/boot/Makefile | 2 +- trunk/arch/powerpc/configs/ppc64_defconfig | 2 +- trunk/arch/powerpc/kernel/Makefile | 4 +- trunk/arch/powerpc/kernel/crash.c | 2 +- trunk/arch/powerpc/kernel/crash_dump.c | 2 - trunk/arch/powerpc/kernel/machine_kexec.c | 6 ++ trunk/arch/powerpc/kernel/pci_64.c | 3 - trunk/arch/powerpc/kernel/rtas.c | 12 +-- trunk/arch/powerpc/kernel/setup_64.c | 60 +++++++------- trunk/arch/powerpc/kernel/udbg.c | 25 ------ trunk/arch/powerpc/kernel/udbg_16550.c | 2 +- trunk/arch/powerpc/kernel/vdso32/.gitignore | 1 - trunk/arch/powerpc/kernel/vdso64/.gitignore | 1 - trunk/arch/powerpc/platforms/83xx/Kconfig | 26 ------ trunk/arch/powerpc/platforms/83xx/Makefile | 4 - trunk/arch/powerpc/platforms/Makefile | 1 - .../powerpc/platforms/cell/spufs/switch.c | 34 ++------ .../powerpc/platforms/embedded6xx/Kconfig | 18 ++++ trunk/arch/powerpc/platforms/iseries/setup.c | 37 +++------ .../powerpc/platforms/powermac/udbg_scc.c | 2 +- trunk/arch/powerpc/sysdev/Makefile | 2 +- trunk/arch/ppc/Kconfig | 4 - trunk/arch/sparc64/Kconfig | 2 +- trunk/drivers/char/tty_io.c | 6 +- trunk/drivers/char/viocons.c | 11 ++- trunk/include/asm-generic/mutex-dec.h | 2 +- trunk/include/asm-i386/mutex.h | 2 +- trunk/include/asm-powerpc/paca.h | 1 - trunk/include/asm-powerpc/page.h | 2 +- trunk/include/asm-powerpc/parport.h | 28 +------ trunk/include/asm-powerpc/percpu.h | 56 ------------- trunk/include/asm-powerpc/rtas.h | 1 + trunk/include/asm-powerpc/udbg.h | 9 +- trunk/include/asm-x86_64/mutex.h | 2 +- 38 files changed, 135 insertions(+), 384 deletions(-) delete mode 100644 trunk/arch/powerpc/boot/.gitignore delete mode 100644 trunk/arch/powerpc/kernel/vdso32/.gitignore delete mode 100644 trunk/arch/powerpc/kernel/vdso64/.gitignore delete mode 100644 trunk/arch/powerpc/platforms/83xx/Kconfig delete mode 100644 trunk/arch/powerpc/platforms/83xx/Makefile diff --git a/[refs] b/[refs] index 748f8d33bd63..108758114f34 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 607f4e3864a4306be0d0ad11ff34284c239aad1b +refs/heads/master: 61943c5015acae42fe355bf033bbee8d63691fe3 diff --git a/trunk/arch/powerpc/Kconfig b/trunk/arch/powerpc/Kconfig index 01feed0e2a15..935d96571515 100644 --- a/trunk/arch/powerpc/Kconfig +++ b/trunk/arch/powerpc/Kconfig @@ -71,39 +71,15 @@ config ARCH_MAY_HAVE_PC_FDC bool default y -config PPC_OF - def_bool y - -config PPC_UDBG_16550 - bool - default n - -config CRASH_DUMP - bool "kernel crash dumps (EXPERIMENTAL)" - depends on PPC_MULTIPLATFORM - depends on EXPERIMENTAL - help - Build a kernel suitable for use as a kdump capture kernel. - The kernel will be linked at a different address than normal, and - so can only be used for Kdump. - - Don't change this unless you know what you are doing. - -config GENERIC_TBSYNC - bool - default y if PPC32 && SMP - default n - menu "Processor support" choice prompt "Processor Type" depends on PPC32 default 6xx -config CLASSIC32 +config 6xx bool "6xx/7xx/74xx" select PPC_FPU - select 6xx help There are four families of PowerPC chips supported. The more common types (601, 603, 604, 740, 750, 7400), the Motorola embedded @@ -117,20 +93,12 @@ config CLASSIC32 config PPC_52xx bool "Freescale 52xx" - select 6xx - select PPC_FPU config PPC_82xx bool "Freescale 82xx" - select 6xx - select PPC_FPU config PPC_83xx bool "Freescale 83xx" - select 6xx - select FSL_SOC - select 83xx - select PPC_FPU config 40x bool "AMCC 40x" @@ -166,13 +134,6 @@ config POWER4 depends on PPC64 def_bool y -config 6xx - bool - -# this is temp to handle compat with arch=ppc -config 83xx - bool - config PPC_FPU bool default y if PPC64 @@ -205,7 +166,7 @@ config PHYS_64BIT config ALTIVEC bool "AltiVec Support" - depends on CLASSIC32 || POWER4 + depends on 6xx || POWER4 ---help--- This option enables kernel support for the Altivec extensions to the PowerPC processor. The kernel currently supports saving and restoring @@ -278,7 +239,7 @@ endmenu source "init/Kconfig" menu "Platform support" - depends on PPC64 || CLASSIC32 + depends on PPC64 || 6xx choice prompt "Machine type" @@ -369,6 +330,9 @@ config PPC_CELL select MMIO_NVRAM select PPC_UDBG_16550 +config PPC_OF + def_bool y + config XICS depends on PPC_PSERIES bool @@ -411,11 +375,26 @@ config MPIC_BROKEN_U3 depends on PPC_MAPLE default y +config PPC_UDBG_16550 + bool + default n + config CELL_IIC depends on PPC_CELL bool default y +config CRASH_DUMP + bool "kernel crash dumps (EXPERIMENTAL)" + depends on PPC_MULTIPLATFORM + depends on EXPERIMENTAL + help + Build a kernel suitable for use as a kdump capture kernel. + The kernel will be linked at a different address than normal, and + so can only be used for Kdump. + + Don't change this unless you know what you are doing. + config IBMVIO depends on PPC_PSERIES || PPC_ISERIES bool @@ -431,6 +410,11 @@ config PPC_MPC106 bool default n +config GENERIC_TBSYNC + bool + default y if PPC32 && SMP + default n + source "drivers/cpufreq/Kconfig" config CPU_FREQ_PMAC @@ -511,7 +495,6 @@ endmenu source arch/powerpc/platforms/embedded6xx/Kconfig source arch/powerpc/platforms/4xx/Kconfig -source arch/powerpc/platforms/83xx/Kconfig source arch/powerpc/platforms/85xx/Kconfig source arch/powerpc/platforms/8xx/Kconfig source arch/powerpc/platforms/cell/Kconfig @@ -735,7 +718,7 @@ config PPC_I8259 config PPC_INDIRECT_PCI bool depends on PCI - default y if 40x || 44x || 85xx + default y if 40x || 44x || 85xx || 83xx default n config EISA @@ -744,16 +727,13 @@ config EISA config SBUS bool -config FSL_SOC - bool - # Yes MCA RS/6000s exist but Linux-PPC does not currently support any config MCA bool config PCI - bool "PCI support" if 40x || CPM2 || PPC_83xx || 85xx || PPC_MPC52xx || (EMBEDDED && PPC_ISERIES) - default y if !40x && !CPM2 && !8xx && !APUS && !PPC_83xx && !85xx + bool "PCI support" if 40x || CPM2 || 83xx || 85xx || PPC_MPC52xx || (EMBEDDED && PPC_ISERIES) + default y if !40x && !CPM2 && !8xx && !APUS && !83xx && !85xx default PCI_PERMEDIA if !4xx && !CPM2 && !8xx && APUS default PCI_QSPAN if !4xx && !CPM2 && 8xx help @@ -766,6 +746,11 @@ config PCI_DOMAINS bool default PCI +config MPC83xx_PCI2 + bool " Supprt for 2nd PCI host controller" + depends on PCI && MPC834x + default y if MPC834x_SYS + config PCI_QSPAN bool "QSpan PCI" depends on !4xx && !CPM2 && 8xx diff --git a/trunk/arch/powerpc/Kconfig.debug b/trunk/arch/powerpc/Kconfig.debug index 9254806f7032..30a30bf559ea 100644 --- a/trunk/arch/powerpc/Kconfig.debug +++ b/trunk/arch/powerpc/Kconfig.debug @@ -115,46 +115,4 @@ config PPC_OCP depends on IBM_OCP || XILINX_OCP default y -choice - prompt "Early debugging (dangerous)" - bool - optional - help - Enable early debugging. Careful, if you enable debugging for the - wrong type of machine your kernel _will not boot_. - -config PPC_EARLY_DEBUG_LPAR - bool "LPAR HV Console" - depends on PPC_PSERIES - help - Select this to enable early debugging for a machine with a HVC - console on vterm 0. - -config PPC_EARLY_DEBUG_G5 - bool "Apple G5" - depends on PPC_PMAC64 - help - Select this to enable early debugging for Apple G5 machines. - -config PPC_EARLY_DEBUG_RTAS - bool "RTAS Panel" - depends on PPC_RTAS - help - Select this to enable early debugging via the RTAS panel. - -config PPC_EARLY_DEBUG_MAPLE - bool "Maple real mode" - depends on PPC_MAPLE - help - Select this to enable early debugging for Maple. - -config PPC_EARLY_DEBUG_ISERIES - bool "iSeries HV Console" - depends on PPC_ISERIES - help - Select this to enable early debugging for legacy iSeries. You need - to hit "Ctrl-x Ctrl-x" to see the messages on the console. - -endchoice - endmenu diff --git a/trunk/arch/powerpc/boot/.gitignore b/trunk/arch/powerpc/boot/.gitignore deleted file mode 100644 index 45c9ad23526e..000000000000 --- a/trunk/arch/powerpc/boot/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -addnote -infblock.c -infblock.h -infcodes.c -infcodes.h -inffast.c -inffast.h -inflate.c -inftrees.c -inftrees.h -infutil.c -infutil.h -kernel-vmlinux.strip.c -kernel-vmlinux.strip.gz -uImage -zImage -zImage.vmode -zconf.h -zlib.h -zutil.h diff --git a/trunk/arch/powerpc/boot/Makefile b/trunk/arch/powerpc/boot/Makefile index b53d677f6742..22726aefc8ea 100644 --- a/trunk/arch/powerpc/boot/Makefile +++ b/trunk/arch/powerpc/boot/Makefile @@ -176,4 +176,4 @@ $(obj)/uImage: $(obj)/vmlinux.gz install: $(CONFIGURE) $(BOOTIMAGE) sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" "$(BOOTIMAGE)" -clean-files += $(addprefix $(objtree)/, $(obj-boot) vmlinux.strip) +clean-files := $(addprefix $(objtree)/, $(obj-boot) vmlinux.strip) diff --git a/trunk/arch/powerpc/configs/ppc64_defconfig b/trunk/arch/powerpc/configs/ppc64_defconfig index 0b2b55a79c3c..347f4391db8d 100644 --- a/trunk/arch/powerpc/configs/ppc64_defconfig +++ b/trunk/arch/powerpc/configs/ppc64_defconfig @@ -878,7 +878,7 @@ CONFIG_HVCS=m # # CONFIG_WATCHDOG is not set # CONFIG_RTC is not set -CONFIG_GEN_RTC=y +# CONFIG_GEN_RTC is not set # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set diff --git a/trunk/arch/powerpc/kernel/Makefile b/trunk/arch/powerpc/kernel/Makefile index bbfa1bdceb4d..144e284d21dd 100644 --- a/trunk/arch/powerpc/kernel/Makefile +++ b/trunk/arch/powerpc/kernel/Makefile @@ -61,9 +61,9 @@ obj-$(CONFIG_MODULES) += $(module-y) pci64-$(CONFIG_PPC64) += pci_64.o pci_dn.o pci_iommu.o \ pci_direct_iommu.o iomap.o obj-$(CONFIG_PCI) += $(pci64-y) -kexec-$(CONFIG_PPC64) := machine_kexec_64.o crash.o +kexec-$(CONFIG_PPC64) := machine_kexec_64.o kexec-$(CONFIG_PPC32) := machine_kexec_32.o -obj-$(CONFIG_KEXEC) += machine_kexec.o $(kexec-y) +obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o $(kexec-y) ifeq ($(CONFIG_PPC_ISERIES),y) $(obj)/head_64.o: $(obj)/lparmap.s diff --git a/trunk/arch/powerpc/kernel/crash.c b/trunk/arch/powerpc/kernel/crash.c index 5f248e3fdf82..4681155121ef 100644 --- a/trunk/arch/powerpc/kernel/crash.c +++ b/trunk/arch/powerpc/kernel/crash.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -29,7 +30,6 @@ #include #include #include -#include #ifdef DEBUG #include diff --git a/trunk/arch/powerpc/kernel/crash_dump.c b/trunk/arch/powerpc/kernel/crash_dump.c index 211d72653ea6..87effa3f21a7 100644 --- a/trunk/arch/powerpc/kernel/crash_dump.c +++ b/trunk/arch/powerpc/kernel/crash_dump.c @@ -55,7 +55,6 @@ void __init kdump_setup(void) DBG(" <- kdump_setup()\n"); } -#ifdef CONFIG_PROC_VMCORE static int __init parse_elfcorehdr(char *p) { if (p) @@ -64,7 +63,6 @@ static int __init parse_elfcorehdr(char *p) return 0; } __setup("elfcorehdr=", parse_elfcorehdr); -#endif static int __init parse_savemaxmem(char *p) { diff --git a/trunk/arch/powerpc/kernel/machine_kexec.c b/trunk/arch/powerpc/kernel/machine_kexec.c index a81ca1b841ec..a91e40c9ae45 100644 --- a/trunk/arch/powerpc/kernel/machine_kexec.c +++ b/trunk/arch/powerpc/kernel/machine_kexec.c @@ -14,6 +14,12 @@ #include #include +/* + * Provide a dummy crash_notes definition until crash dump is implemented. + * This prevents breakage of crash_notes attribute in kernel/ksysfs.c. + */ +note_buf_t crash_notes[NR_CPUS]; + void machine_crash_shutdown(struct pt_regs *regs) { if (ppc_md.machine_crash_shutdown) diff --git a/trunk/arch/powerpc/kernel/pci_64.c b/trunk/arch/powerpc/kernel/pci_64.c index 24fe70f40b66..ba21a6c4f467 100644 --- a/trunk/arch/powerpc/kernel/pci_64.c +++ b/trunk/arch/powerpc/kernel/pci_64.c @@ -271,9 +271,6 @@ void __devinit pcibios_claim_one_bus(struct pci_bus *b) list_for_each_entry(child_bus, &b->children, node) pcibios_claim_one_bus(child_bus); } -#ifdef CONFIG_HOTPLUG -EXPORT_SYMBOL_GPL(pcibios_claim_one_bus); -#endif #ifndef CONFIG_PPC_ISERIES static void __init pcibios_claim_of_setup(void) diff --git a/trunk/arch/powerpc/kernel/rtas.c b/trunk/arch/powerpc/kernel/rtas.c index 68bcd2824bc6..ae2e2a31a705 100644 --- a/trunk/arch/powerpc/kernel/rtas.c +++ b/trunk/arch/powerpc/kernel/rtas.c @@ -29,7 +29,6 @@ #include #include #include -#include struct rtas_t rtas = { .lock = SPIN_LOCK_UNLOCKED @@ -53,7 +52,7 @@ EXPORT_SYMBOL(rtas_flash_term_hook); * are designed only for very early low-level debugging, which * is why the token is hard-coded to 10. */ -static void call_rtas_display_status(char c) +void call_rtas_display_status(unsigned char c) { struct rtas_args *args = &rtas.args; unsigned long s; @@ -66,14 +65,14 @@ static void call_rtas_display_status(char c) args->nargs = 1; args->nret = 1; args->rets = (rtas_arg_t *)&(args->args[1]); - args->args[0] = (unsigned char)c; + args->args[0] = (int)c; enter_rtas(__pa(args)); spin_unlock_irqrestore(&rtas.lock, s); } -static void call_rtas_display_status_delay(char c) +void call_rtas_display_status_delay(unsigned char c) { static int pending_newline = 0; /* did last write end with unprinted newline? */ static int width = 16; @@ -97,11 +96,6 @@ static void call_rtas_display_status_delay(char c) } } -void __init udbg_init_rtas(void) -{ - udbg_putc = call_rtas_display_status_delay; -} - void rtas_progress(char *s, unsigned short hex) { struct device_node *root; diff --git a/trunk/arch/powerpc/kernel/setup_64.c b/trunk/arch/powerpc/kernel/setup_64.c index e29b275e09e0..c4b76961d6de 100644 --- a/trunk/arch/powerpc/kernel/setup_64.c +++ b/trunk/arch/powerpc/kernel/setup_64.c @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include @@ -71,6 +70,33 @@ #define DBG(fmt...) #endif +/* + * Here are some early debugging facilities. You can enable one + * but your kernel will not boot on anything else if you do so + */ + +/* This one is for use on LPAR machines that support an HVC console + * on vterm 0 + */ +extern void udbg_init_debug_lpar(void); +/* This one is for use on Apple G5 machines + */ +extern void udbg_init_pmac_realmode(void); +/* That's RTAS panel debug */ +extern void call_rtas_display_status_delay(unsigned char c); +/* Here's maple real mode debug */ +extern void udbg_init_maple_realmode(void); + +#define EARLY_DEBUG_INIT() do {} while(0) + +#if 0 +#define EARLY_DEBUG_INIT() udbg_init_debug_lpar() +#define EARLY_DEBUG_INIT() udbg_init_maple_realmode() +#define EARLY_DEBUG_INIT() udbg_init_pmac_realmode() +#define EARLY_DEBUG_INIT() \ + do { udbg_putc = call_rtas_display_status_delay; } while(0) +#endif + int have_of = 1; int boot_cpuid = 0; int boot_cpuid_phys = 0; @@ -211,8 +237,11 @@ void __init early_setup(unsigned long dt_ptr) struct paca_struct *lpaca = get_paca(); static struct machdep_calls **mach; - /* Enable early debugging if any specified (see udbg.h) */ - udbg_early_init(); + /* + * Enable early debugging if any specified (see top of + * this file) + */ + EARLY_DEBUG_INIT(); DBG(" -> early_setup()\n"); @@ -655,28 +684,3 @@ void cpu_die(void) if (ppc_md.cpu_die) ppc_md.cpu_die(); } - -#ifdef CONFIG_SMP -void __init setup_per_cpu_areas(void) -{ - int i; - unsigned long size; - char *ptr; - - /* Copy section for each CPU (we discard the original) */ - size = ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES); -#ifdef CONFIG_MODULES - if (size < PERCPU_ENOUGH_ROOM) - size = PERCPU_ENOUGH_ROOM; -#endif - - for_each_cpu(i) { - ptr = alloc_bootmem_node(NODE_DATA(cpu_to_node(i)), size); - if (!ptr) - panic("Cannot allocate cpu data for CPU %d\n", i); - - paca[i].data_offset = ptr - __per_cpu_start; - memcpy(ptr, __per_cpu_start, __per_cpu_end - __per_cpu_start); - } -} -#endif diff --git a/trunk/arch/powerpc/kernel/udbg.c b/trunk/arch/powerpc/kernel/udbg.c index 3774e80094f5..558c1ceb2b93 100644 --- a/trunk/arch/powerpc/kernel/udbg.c +++ b/trunk/arch/powerpc/kernel/udbg.c @@ -15,36 +15,11 @@ #include #include #include -#include void (*udbg_putc)(char c); int (*udbg_getc)(void); int (*udbg_getc_poll)(void); -/* - * Early debugging facilities. You can enable _one_ of these via .config, - * if you do so your kernel _will not boot_ on anything else. Be careful. - */ -void __init udbg_early_init(void) -{ -#if defined(CONFIG_PPC_EARLY_DEBUG_LPAR) - /* For LPAR machines that have an HVC console on vterm 0 */ - udbg_init_debug_lpar(); -#elif defined(CONFIG_PPC_EARLY_DEBUG_G5) - /* For use on Apple G5 machines */ - udbg_init_pmac_realmode(); -#elif defined(CONFIG_PPC_EARLY_DEBUG_RTAS) - /* RTAS panel debug */ - udbg_init_rtas(); -#elif defined(CONFIG_PPC_EARLY_DEBUG_MAPLE) - /* Maple real mode debug */ - udbg_init_maple_realmode(); -#elif defined(CONFIG_PPC_EARLY_DEBUG_ISERIES) - /* For iSeries - hit Ctrl-x Ctrl-x to see the output */ - udbg_init_iseries(); -#endif -} - /* udbg library, used by xmon et al */ void udbg_puts(const char *s) { diff --git a/trunk/arch/powerpc/kernel/udbg_16550.c b/trunk/arch/powerpc/kernel/udbg_16550.c index 2da65a9c93f6..7541bf44d2da 100644 --- a/trunk/arch/powerpc/kernel/udbg_16550.c +++ b/trunk/arch/powerpc/kernel/udbg_16550.c @@ -155,7 +155,7 @@ void udbg_maple_real_putc(unsigned char c) } } -void __init udbg_init_maple_realmode(void) +void udbg_init_maple_realmode(void) { udbg_comport = (volatile struct NS16550 __iomem *)0xf40003f8; diff --git a/trunk/arch/powerpc/kernel/vdso32/.gitignore b/trunk/arch/powerpc/kernel/vdso32/.gitignore deleted file mode 100644 index e45fba9d0ced..000000000000 --- a/trunk/arch/powerpc/kernel/vdso32/.gitignore +++ /dev/null @@ -1 +0,0 @@ -vdso32.lds diff --git a/trunk/arch/powerpc/kernel/vdso64/.gitignore b/trunk/arch/powerpc/kernel/vdso64/.gitignore deleted file mode 100644 index 3fd18cf9fec2..000000000000 --- a/trunk/arch/powerpc/kernel/vdso64/.gitignore +++ /dev/null @@ -1 +0,0 @@ -vdso64.lds diff --git a/trunk/arch/powerpc/platforms/83xx/Kconfig b/trunk/arch/powerpc/platforms/83xx/Kconfig deleted file mode 100644 index b20812d460e6..000000000000 --- a/trunk/arch/powerpc/platforms/83xx/Kconfig +++ /dev/null @@ -1,26 +0,0 @@ -menu "Platform support" - depends on PPC_83xx - -choice - prompt "Machine Type" - default MPC834x_SYS - -config MPC834x_SYS - bool "Freescale MPC834x SYS" - help - This option enables support for the MPC 834x SYS evaluation board. - - Be aware that PCI buses can only function when SYS board is plugged - into the PIB (Platform IO Board) board from Freescale which provide - 3 PCI slots. The PIBs PCI initialization is the bootloader's - responsiblilty. - -endchoice - -config MPC834x - bool - select PPC_UDBG_16550 - select PPC_INDIRECT_PCI - default y if MPC834x_SYS - -endmenu diff --git a/trunk/arch/powerpc/platforms/83xx/Makefile b/trunk/arch/powerpc/platforms/83xx/Makefile deleted file mode 100644 index 9d8b28ef3343..000000000000 --- a/trunk/arch/powerpc/platforms/83xx/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -# -# Makefile for the PowerPC 83xx linux kernel. -# -obj-$(CONFIG_MPC834x_SYS) += mpc834x_sys.o pci.o diff --git a/trunk/arch/powerpc/platforms/Makefile b/trunk/arch/powerpc/platforms/Makefile index 04073fd987ec..8836b3a00668 100644 --- a/trunk/arch/powerpc/platforms/Makefile +++ b/trunk/arch/powerpc/platforms/Makefile @@ -7,7 +7,6 @@ endif endif obj-$(CONFIG_PPC_CHRP) += chrp/ obj-$(CONFIG_4xx) += 4xx/ -obj-$(CONFIG_PPC_83xx) += 83xx/ obj-$(CONFIG_85xx) += 85xx/ obj-$(CONFIG_PPC_PSERIES) += pseries/ obj-$(CONFIG_PPC_ISERIES) += iseries/ diff --git a/trunk/arch/powerpc/platforms/cell/spufs/switch.c b/trunk/arch/powerpc/platforms/cell/spufs/switch.c index 212db28531fa..1061c12b2edb 100644 --- a/trunk/arch/powerpc/platforms/cell/spufs/switch.c +++ b/trunk/arch/powerpc/platforms/cell/spufs/switch.c @@ -169,33 +169,11 @@ static inline void save_mfc_cntl(struct spu_state *csa, struct spu *spu) struct spu_priv2 __iomem *priv2 = spu->priv2; /* Save, Step 8: - * Suspend DMA and save MFC_CNTL. - */ - switch (in_be64(&priv2->mfc_control_RW) & - MFC_CNTL_SUSPEND_DMA_STATUS_MASK) { - case MFC_CNTL_SUSPEND_IN_PROGRESS: - POLL_WHILE_FALSE((in_be64(&priv2->mfc_control_RW) & - MFC_CNTL_SUSPEND_DMA_STATUS_MASK) == - MFC_CNTL_SUSPEND_COMPLETE); - /* fall through */ - case MFC_CNTL_SUSPEND_COMPLETE: - if (csa) { - csa->priv2.mfc_control_RW = - in_be64(&priv2->mfc_control_RW) | - MFC_CNTL_SUSPEND_DMA_QUEUE; - } - break; - case MFC_CNTL_NORMAL_DMA_QUEUE_OPERATION: - out_be64(&priv2->mfc_control_RW, MFC_CNTL_SUSPEND_DMA_QUEUE); - POLL_WHILE_FALSE((in_be64(&priv2->mfc_control_RW) & - MFC_CNTL_SUSPEND_DMA_STATUS_MASK) == - MFC_CNTL_SUSPEND_COMPLETE); - if (csa) { - csa->priv2.mfc_control_RW = - in_be64(&priv2->mfc_control_RW) & - ~MFC_CNTL_SUSPEND_DMA_QUEUE; - } - break; + * Read and save MFC_CNTL[Ss]. + */ + if (csa) { + csa->priv2.mfc_control_RW = in_be64(&priv2->mfc_control_RW) & + MFC_CNTL_SUSPEND_DMA_STATUS_MASK; } } @@ -259,8 +237,6 @@ static inline void save_mfc_decr(struct spu_state *csa, struct spu *spu) eieio(); csa->spu_chnldata_RW[7] = in_be64(&priv2->spu_chnldata_RW); eieio(); - } else { - csa->priv2.mfc_control_RW &= ~MFC_CNTL_DECREMENTER_RUNNING; } } diff --git a/trunk/arch/powerpc/platforms/embedded6xx/Kconfig b/trunk/arch/powerpc/platforms/embedded6xx/Kconfig index 4fdbc9ae876b..81250090f98d 100644 --- a/trunk/arch/powerpc/platforms/embedded6xx/Kconfig +++ b/trunk/arch/powerpc/platforms/embedded6xx/Kconfig @@ -144,6 +144,16 @@ config LITE5200 much but it's only been tested on this board version. I think this board is also known as IceCube. +config MPC834x_SYS + bool "Freescale MPC834x SYS" + help + This option enables support for the MPC 834x SYS evaluation board. + + Be aware that PCI buses can only function when SYS board is plugged + into the PIB (Platform IO Board) board from Freescale which provide + 3 PCI slots. The PIBs PCI initialization is the bootloader's + responsiblilty. + config EV64360 bool "Marvell-EV64360BP" help @@ -182,6 +192,14 @@ config 8272 The MPC8272 CPM has a different internal dpram setup than other CPM2 devices +config 83xx + bool + default y if MPC834x_SYS + +config MPC834x + bool + default y if MPC834x_SYS + config CPM2 bool depends on 8260 || MPC8560 || MPC8555 diff --git a/trunk/arch/powerpc/platforms/iseries/setup.c b/trunk/arch/powerpc/platforms/iseries/setup.c index c6bbe5c25107..ad5ef80500ce 100644 --- a/trunk/arch/powerpc/platforms/iseries/setup.c +++ b/trunk/arch/powerpc/platforms/iseries/setup.c @@ -52,7 +52,6 @@ #include #include #include -#include #include "naca.h" #include "setup.h" @@ -63,8 +62,10 @@ #include "call_sm.h" #include "call_hpt.h" +extern void hvlog(char *fmt, ...); + #ifdef DEBUG -#define DBG(fmt...) udbg_printf(fmt) +#define DBG(fmt...) hvlog(fmt) #else #define DBG(fmt...) #endif @@ -473,6 +474,14 @@ static unsigned long __init build_iSeries_Memory_Map(void) printk("HPT absolute addr = %016lx, size = %dK\n", chunk_to_addr(hptFirstChunk), hptSizeChunks * 256); + ppc64_pft_size = __ilog2(hptSizePages * HW_PAGE_SIZE); + + /* + * The actual hashed page table is in the hypervisor, + * we have no direct access + */ + htab_address = NULL; + /* * Determine if absolute memory has any * holes so that we can interpret the @@ -852,11 +861,6 @@ void dt_prop_u64_list(struct iseries_flat_dt *dt, char *name, u64 *data, int n) dt_prop(dt, name, (char *)data, sizeof(u64) * n); } -void dt_prop_u32_list(struct iseries_flat_dt *dt, char *name, u32 *data, int n) -{ - dt_prop(dt, name, (char *)data, sizeof(u32) * n); -} - void dt_prop_empty(struct iseries_flat_dt *dt, char *name) { dt_prop(dt, name, NULL, 0); @@ -868,7 +872,6 @@ void dt_cpus(struct iseries_flat_dt *dt) unsigned char *p; unsigned int i, index; struct IoHriProcessorVpd *d; - u32 pft_size[2]; /* yuck */ snprintf(buf, 32, "PowerPC,%s", cur_cpu_spec->cpu_name); @@ -879,9 +882,6 @@ void dt_cpus(struct iseries_flat_dt *dt) dt_prop_u32(dt, "#address-cells", 1); dt_prop_u32(dt, "#size-cells", 0); - pft_size[0] = 0; /* NUMA CEC cookie, 0 for non NUMA */ - pft_size[1] = __ilog2(HvCallHpt_getHptPages() * HW_PAGE_SIZE); - for (i = 0; i < NR_CPUS; i++) { if (paca[i].lppaca.dyn_proc_status >= 2) continue; @@ -908,8 +908,6 @@ void dt_cpus(struct iseries_flat_dt *dt) dt_prop_u32(dt, "reg", i); - dt_prop_u32_list(dt, "ibm,pft-size", pft_size, 2); - dt_end_node(dt); } @@ -986,16 +984,3 @@ static int __init early_parsemem(char *p) return 0; } early_param("mem", early_parsemem); - -static void hvputc(char c) -{ - if (c == '\n') - hvputc('\r'); - - HvCall_writeLogBuffer(&c, 1); -} - -void __init udbg_init_iseries(void) -{ - udbg_putc = hvputc; -} diff --git a/trunk/arch/powerpc/platforms/powermac/udbg_scc.c b/trunk/arch/powerpc/platforms/powermac/udbg_scc.c index c4352a8db644..e87d53acfb61 100644 --- a/trunk/arch/powerpc/platforms/powermac/udbg_scc.c +++ b/trunk/arch/powerpc/platforms/powermac/udbg_scc.c @@ -153,7 +153,7 @@ static void udbg_real_scc_putc(char c) udbg_real_scc_putc('\r'); } -void __init udbg_init_pmac_realmode(void) +void udbg_init_pmac_realmode(void) { sccc = (volatile u8 __iomem *)0x80013020ul; sccd = (volatile u8 __iomem *)0x80013030ul; diff --git a/trunk/arch/powerpc/sysdev/Makefile b/trunk/arch/powerpc/sysdev/Makefile index 0ae841347a09..14b9abde2d27 100644 --- a/trunk/arch/powerpc/sysdev/Makefile +++ b/trunk/arch/powerpc/sysdev/Makefile @@ -6,4 +6,4 @@ obj-$(CONFIG_BOOKE) += dcr.o obj-$(CONFIG_40x) += dcr.o obj-$(CONFIG_U3_DART) += dart_iommu.o obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o -obj-$(CONFIG_PPC_83xx) += ipic.o +obj-$(CONFIG_83xx) += ipic.o diff --git a/trunk/arch/ppc/Kconfig b/trunk/arch/ppc/Kconfig index d65810108bc3..e396f4591d59 100644 --- a/trunk/arch/ppc/Kconfig +++ b/trunk/arch/ppc/Kconfig @@ -743,10 +743,6 @@ config MPC834x bool default y if MPC834x_SYS -config PPC_83xx - bool - default y if 83xx - config CPM1 bool depends on 8xx diff --git a/trunk/arch/sparc64/Kconfig b/trunk/arch/sparc64/Kconfig index b775ceb4cf98..ab733be9af08 100644 --- a/trunk/arch/sparc64/Kconfig +++ b/trunk/arch/sparc64/Kconfig @@ -179,7 +179,7 @@ config HUGETLB_PAGE_SIZE_512K bool "512K" config HUGETLB_PAGE_SIZE_64K - depends on !SPARC64_PAGE_SIZE_4MB && !SPARC64_PAGE_SIZE_512K + depends on !SPARC64_PAGE_SIZE_4MB && !SPARC64_PAGE_SIZE_512KB bool "64K" endchoice diff --git a/trunk/drivers/char/tty_io.c b/trunk/drivers/char/tty_io.c index eb8b5be4e249..1eda82b31a61 100644 --- a/trunk/drivers/char/tty_io.c +++ b/trunk/drivers/char/tty_io.c @@ -312,7 +312,7 @@ static struct tty_buffer *tty_buffer_find(struct tty_struct *tty, size_t size) int tty_buffer_request_room(struct tty_struct *tty, size_t size) { - struct tty_buffer *b = tty->buf.tail, *n; + struct tty_buffer *b = tty->buf.head, *n; int left = 0; /* OPTIMISATION: We could keep a per tty "zero" sized buffer to @@ -326,6 +326,7 @@ int tty_buffer_request_room(struct tty_struct *tty, size_t size) n = tty_buffer_find(tty, size); if(n == NULL) return left; + n->next = b; if(b != NULL) b->next = n; else @@ -2750,8 +2751,6 @@ static void flush_to_ldisc(void *private_) spin_lock_irqsave(&tty->read_lock, flags); while((tbuf = tty->buf.head) != NULL) { tty->buf.head = tbuf->next; - if (tty->buf.head == NULL) - tty->buf.tail = NULL; spin_unlock_irqrestore(&tty->read_lock, flags); /* printk("Process buffer %p for %d\n", tbuf, tbuf->used); */ disc->receive_buf(tty, tbuf->char_buf_ptr, @@ -2760,6 +2759,7 @@ static void flush_to_ldisc(void *private_) spin_lock_irqsave(&tty->read_lock, flags); tty_buffer_free(tty, tbuf); } + tty->buf.tail = NULL; spin_unlock_irqrestore(&tty->read_lock, flags); out: tty_ldisc_deref(disc); diff --git a/trunk/drivers/char/viocons.c b/trunk/drivers/char/viocons.c index faee5e7acaf7..cb82ebf4cb07 100644 --- a/trunk/drivers/char/viocons.c +++ b/trunk/drivers/char/viocons.c @@ -131,7 +131,7 @@ static void initDataEvent(struct viocharlpevent *viochar, HvLpIndex lp); static struct tty_driver *viotty_driver; -static void hvlog(char *fmt, ...) +void hvlog(char *fmt, ...) { int i; unsigned long flags; @@ -147,7 +147,7 @@ static void hvlog(char *fmt, ...) spin_unlock_irqrestore(&consoleloglock, flags); } -static void hvlogOutput(const char *buf, int count) +void hvlogOutput(const char *buf, int count) { unsigned long flags; int begin; @@ -904,7 +904,6 @@ static void vioHandleData(struct HvLpEvent *event) struct viocharlpevent *cevent = (struct viocharlpevent *)event; struct port_info *pi; int index; - int num_pushed; u8 port = cevent->virtual_device; if (port >= VTTY_PORTS) { @@ -965,7 +964,6 @@ static void vioHandleData(struct HvLpEvent *event) * functionality will only work if built into the kernel and * then only if sysrq is enabled through the proc filesystem. */ - num_pushed = 0; for (index = 0; index < cevent->len; index++) { #ifdef CONFIG_MAGIC_SYSRQ if (sysrq_enabled) { @@ -999,10 +997,11 @@ static void vioHandleData(struct HvLpEvent *event) printk(VIOCONS_KERN_WARN "input buffer overflow!\n"); break; } - num_pushed++; } - if (num_pushed) + /* if cevent->len == 0 then no data was added to the buffer and flip.count == 0 */ + if (tty->flip.count) + /* The next call resets flip.count when the data is flushed. */ tty_flip_buffer_push(tty); } diff --git a/trunk/include/asm-generic/mutex-dec.h b/trunk/include/asm-generic/mutex-dec.h index 40c6d1f86598..74b18cda169f 100644 --- a/trunk/include/asm-generic/mutex-dec.h +++ b/trunk/include/asm-generic/mutex-dec.h @@ -97,7 +97,7 @@ __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *)) * the mutex state would be. */ #ifdef __HAVE_ARCH_CMPXCHG - if (likely(atomic_cmpxchg(count, 1, 0) == 1)) { + if (likely(atomic_cmpxchg(count, 1, 0)) == 1) { smp_mb(); return 1; } diff --git a/trunk/include/asm-i386/mutex.h b/trunk/include/asm-i386/mutex.h index 9b2199e829f3..c657d4b09f0a 100644 --- a/trunk/include/asm-i386/mutex.h +++ b/trunk/include/asm-i386/mutex.h @@ -125,7 +125,7 @@ __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *)) * the mutex state would be. */ #ifdef __HAVE_ARCH_CMPXCHG - if (likely(atomic_cmpxchg(count, 1, 0) == 1)) + if (likely(atomic_cmpxchg(count, 1, 0)) == 1) return 1; return 0; #else diff --git a/trunk/include/asm-powerpc/paca.h b/trunk/include/asm-powerpc/paca.h index a64b4d425dab..3ae52d9dc9ff 100644 --- a/trunk/include/asm-powerpc/paca.h +++ b/trunk/include/asm-powerpc/paca.h @@ -65,7 +65,6 @@ struct paca_struct { u64 stab_real; /* Absolute address of segment table */ u64 stab_addr; /* Virtual address of segment table */ void *emergency_sp; /* pointer to emergency stack */ - u64 data_offset; /* per cpu data offset */ s16 hw_cpu_id; /* Physical processor number */ u8 cpu_start; /* At startup, processor spins until */ /* this becomes non-zero. */ diff --git a/trunk/include/asm-powerpc/page.h b/trunk/include/asm-powerpc/page.h index 0b82df483f7f..76d7cb4b4ffc 100644 --- a/trunk/include/asm-powerpc/page.h +++ b/trunk/include/asm-powerpc/page.h @@ -178,7 +178,7 @@ typedef unsigned long pmd_t; #define pmd_val(x) (x) #define __pmd(x) (x) -#if defined(CONFIG_PPC64) && !defined(CONFIG_PPC_64K_PAGES) +#ifndef CONFIG_PPC_64K_PAGES typedef unsigned long pud_t; #define pud_val(x) (x) #define __pud(x) (x) diff --git a/trunk/include/asm-powerpc/parport.h b/trunk/include/asm-powerpc/parport.h index 3fca21ddf546..897e49a88a6b 100644 --- a/trunk/include/asm-powerpc/parport.h +++ b/trunk/include/asm-powerpc/parport.h @@ -10,34 +10,10 @@ #define _ASM_POWERPC_PARPORT_H #ifdef __KERNEL__ -#include - -extern struct parport *parport_pc_probe_port (unsigned long int base, - unsigned long int base_hi, - int irq, int dma, - struct pci_dev *dev); - +static int __devinit parport_pc_find_isa_ports (int autoirq, int autodma); static int __devinit parport_pc_find_nonpci_ports (int autoirq, int autodma) { - struct device_node *np; - u32 *prop; - u32 io1, io2; - int propsize; - int count = 0; - for (np = NULL; (np = of_find_compatible_node(np, - "parallel", - "pnpPNP,400")) != NULL;) { - prop = (u32 *)get_property(np, "reg", &propsize); - if (!prop || propsize > 6*sizeof(u32)) - continue; - io1 = prop[1]; io2 = prop[2]; - prop = (u32 *)get_property(np, "interrupts", NULL); - if (!prop) - continue; - if (parport_pc_probe_port(io1, io2, prop[0], autodma, NULL) != NULL) - count++; - } - return count; + return parport_pc_find_isa_ports (autoirq, autodma); } #endif /* __KERNEL__ */ diff --git a/trunk/include/asm-powerpc/percpu.h b/trunk/include/asm-powerpc/percpu.h index e31922c50e53..06a959d67234 100644 --- a/trunk/include/asm-powerpc/percpu.h +++ b/trunk/include/asm-powerpc/percpu.h @@ -1,57 +1 @@ -#ifndef _ASM_POWERPC_PERCPU_H_ -#define _ASM_POWERPC_PERCPU_H_ -#ifdef __powerpc64__ -#include - -/* - * Same as asm-generic/percpu.h, except that we store the per cpu offset - * in the paca. Based on the x86-64 implementation. - */ - -#ifdef CONFIG_SMP - -#include - -#define __per_cpu_offset(cpu) (paca[cpu].data_offset) -#define __my_cpu_offset() get_paca()->data_offset - -/* Separate out the type, so (int[3], foo) works. */ -#define DEFINE_PER_CPU(type, name) \ - __attribute__((__section__(".data.percpu"))) __typeof__(type) per_cpu__##name - -/* var is in discarded region: offset to particular copy we want */ -#define per_cpu(var, cpu) (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset(cpu))) -#define __get_cpu_var(var) (*RELOC_HIDE(&per_cpu__##var, __my_cpu_offset())) - -/* A macro to avoid #include hell... */ -#define percpu_modcopy(pcpudst, src, size) \ -do { \ - unsigned int __i; \ - for (__i = 0; __i < NR_CPUS; __i++) \ - if (cpu_possible(__i)) \ - memcpy((pcpudst)+__per_cpu_offset(__i), \ - (src), (size)); \ -} while (0) - -extern void setup_per_cpu_areas(void); - -#else /* ! SMP */ - -#define DEFINE_PER_CPU(type, name) \ - __typeof__(type) per_cpu__##name - -#define per_cpu(var, cpu) (*((void)(cpu), &per_cpu__##var)) -#define __get_cpu_var(var) per_cpu__##var - -#endif /* SMP */ - -#define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu__##name - -#define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(per_cpu__##var) -#define EXPORT_PER_CPU_SYMBOL_GPL(var) EXPORT_SYMBOL_GPL(per_cpu__##var) - -#else #include -#endif - -#endif /* _ASM_POWERPC_PERCPU_H_ */ diff --git a/trunk/include/asm-powerpc/rtas.h b/trunk/include/asm-powerpc/rtas.h index f43c6835e62a..3428889e27b7 100644 --- a/trunk/include/asm-powerpc/rtas.h +++ b/trunk/include/asm-powerpc/rtas.h @@ -161,6 +161,7 @@ extern struct rtas_t rtas; extern void enter_rtas(unsigned long); extern int rtas_token(const char *service); extern int rtas_call(int token, int, int, int *, ...); +extern void call_rtas_display_status(unsigned char); extern void rtas_restart(char *cmd); extern void rtas_power_off(void); extern void rtas_halt(void); diff --git a/trunk/include/asm-powerpc/udbg.h b/trunk/include/asm-powerpc/udbg.h index 5c4236c342bb..479f2d8ff74a 100644 --- a/trunk/include/asm-powerpc/udbg.h +++ b/trunk/include/asm-powerpc/udbg.h @@ -1,5 +1,5 @@ /* - * (c) 2001, 2006 IBM Corporation. + * c 2001 PPC 64 Team, IBM Corp * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -36,12 +36,5 @@ extern void udbg_scc_init(int force_scc); extern int udbg_adb_init(int force_btext); extern void udbg_adb_init_early(void); -extern void __init udbg_early_init(void); -extern void __init udbg_init_debug_lpar(void); -extern void __init udbg_init_pmac_realmode(void); -extern void __init udbg_init_maple_realmode(void); -extern void __init udbg_init_iseries(void); -extern void __init udbg_init_rtas(void); - #endif /* __KERNEL__ */ #endif /* _ASM_POWERPC_UDBG_H */ diff --git a/trunk/include/asm-x86_64/mutex.h b/trunk/include/asm-x86_64/mutex.h index 11fbee2bd6c0..818abfd262d1 100644 --- a/trunk/include/asm-x86_64/mutex.h +++ b/trunk/include/asm-x86_64/mutex.h @@ -104,7 +104,7 @@ do { \ static inline int __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *)) { - if (likely(atomic_cmpxchg(count, 1, 0) == 1)) + if (likely(atomic_cmpxchg(count, 1, 0)) == 1) return 1; else return 0;