From b898405d89e678205c079f9537f20d7297b71360 Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Thu, 15 Nov 2007 21:47:06 +0300 Subject: [PATCH] --- yaml --- r: 73955 b: refs/heads/master c: 7ac33417ecf8c012df0e957cfa0628a6a4347c7d h: refs/heads/master i: 73953: 1da435cc9680a7467d0a212be84d299442c2e0d3 73951: ce3c85edf4c1304d77aa2fe271432058a4739d1c v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kernel/asm-offsets.c | 4 - trunk/arch/powerpc/kernel/rtas.c | 111 ++++++++---------- trunk/arch/powerpc/kernel/time.c | 5 +- trunk/arch/powerpc/kernel/vdso.c | 11 -- trunk/arch/powerpc/kernel/vdso32/cacheflush.S | 41 ++----- trunk/arch/powerpc/kernel/vdso64/cacheflush.S | 41 ++----- trunk/arch/powerpc/mm/stab.c | 1 - trunk/arch/powerpc/platforms/40x/walnut.c | 3 +- trunk/arch/powerpc/platforms/44x/bamboo.c | 3 +- trunk/arch/powerpc/platforms/44x/ebony.c | 3 +- trunk/arch/powerpc/platforms/44x/sequoia.c | 3 +- trunk/arch/powerpc/platforms/83xx/usb.c | 8 +- .../arch/powerpc/platforms/cell/spufs/inode.c | 1 - .../powerpc/platforms/embedded6xx/prpmc2800.c | 1 - trunk/arch/powerpc/platforms/pasemi/setup.c | 2 +- trunk/arch/powerpc/platforms/pseries/Kconfig | 2 +- trunk/arch/powerpc/platforms/pseries/setup.c | 3 +- trunk/arch/powerpc/sysdev/uic.c | 18 +-- trunk/arch/ppc/kernel/setup.c | 7 -- trunk/arch/ppc/platforms/4xx/yucca.c | 1 - trunk/arch/ppc/syslib/virtex_devices.c | 31 ----- trunk/include/asm-powerpc/page_32.h | 4 - trunk/include/asm-powerpc/pci-bridge.h | 5 +- trunk/include/asm-powerpc/rtas.h | 3 +- trunk/include/asm-powerpc/vdso_datapage.h | 8 -- 26 files changed, 89 insertions(+), 233 deletions(-) diff --git a/[refs] b/[refs] index 4834157e4d80..06a6892e37e9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2b46b5673ca67d23302c2afac045def988a3cade +refs/heads/master: 7ac33417ecf8c012df0e957cfa0628a6a4347c7d diff --git a/trunk/arch/powerpc/kernel/asm-offsets.c b/trunk/arch/powerpc/kernel/asm-offsets.c index d67bcd84f329..2c8e756d19a3 100644 --- a/trunk/arch/powerpc/kernel/asm-offsets.c +++ b/trunk/arch/powerpc/kernel/asm-offsets.c @@ -284,10 +284,6 @@ int main(void) DEFINE(CFG_SYSCALL_MAP32, offsetof(struct vdso_data, syscall_map_32)); DEFINE(WTOM_CLOCK_SEC, offsetof(struct vdso_data, wtom_clock_sec)); DEFINE(WTOM_CLOCK_NSEC, offsetof(struct vdso_data, wtom_clock_nsec)); - DEFINE(CFG_ICACHE_BLOCKSZ, offsetof(struct vdso_data, icache_block_size)); - DEFINE(CFG_DCACHE_BLOCKSZ, offsetof(struct vdso_data, dcache_block_size)); - DEFINE(CFG_ICACHE_LOGBLOCKSZ, offsetof(struct vdso_data, icache_log_block_size)); - DEFINE(CFG_DCACHE_LOGBLOCKSZ, offsetof(struct vdso_data, dcache_log_block_size)); #ifdef CONFIG_PPC64 DEFINE(CFG_SYSCALL_MAP64, offsetof(struct vdso_data, syscall_map_64)); DEFINE(TVAL64_TV_SEC, offsetof(struct timeval, tv_sec)); diff --git a/trunk/arch/powerpc/kernel/rtas.c b/trunk/arch/powerpc/kernel/rtas.c index 053cac19f714..214780798289 100644 --- a/trunk/arch/powerpc/kernel/rtas.c +++ b/trunk/arch/powerpc/kernel/rtas.c @@ -19,9 +19,6 @@ #include #include #include -#include -#include -#include #include #include @@ -37,8 +34,6 @@ #include #include #include -#include -#include struct rtas_t rtas = { .lock = SPIN_LOCK_UNLOCKED @@ -46,10 +41,8 @@ struct rtas_t rtas = { EXPORT_SYMBOL(rtas); struct rtas_suspend_me_data { - atomic_t working; /* number of cpus accessing this struct */ - int token; /* ibm,suspend-me */ - int error; - struct completion *complete; /* wait on this until working == 0 */ + long waiting; + struct rtas_args *args; }; DEFINE_SPINLOCK(rtas_data_buf_lock); @@ -638,18 +631,18 @@ void rtas_halt(void) /* Must be in the RMO region, so we place it here */ static char rtas_os_term_buf[2048]; -void rtas_panic_msg(char *str) -{ - snprintf(rtas_os_term_buf, 2048, "OS panic: %s", str); -} - -void rtas_os_term(void) +void rtas_os_term(char *str) { int status; + if (panic_timeout) + return; + if (RTAS_UNKNOWN_SERVICE == rtas_token("ibm,os-term")) return; + snprintf(rtas_os_term_buf, 2048, "OS panic: %s", str); + do { status = rtas_call(rtas_token("ibm,os-term"), 1, 1, NULL, __pa(rtas_os_term_buf)); @@ -664,62 +657,50 @@ static int ibm_suspend_me_token = RTAS_UNKNOWN_SERVICE; #ifdef CONFIG_PPC_PSERIES static void rtas_percpu_suspend_me(void *info) { + int i; long rc; - unsigned long msr_save; - int cpu; + long flags; struct rtas_suspend_me_data *data = (struct rtas_suspend_me_data *)info; - atomic_inc(&data->working); - - /* really need to ensure MSR.EE is off for H_JOIN */ - msr_save = mfmsr(); - mtmsr(msr_save & ~(MSR_EE)); - - rc = plpar_hcall_norets(H_JOIN); - - mtmsr(msr_save); - - if (rc == H_SUCCESS) { - /* This cpu was prodded and the suspend is complete. */ + /* + * We use "waiting" to indicate our state. As long + * as it is >0, we are still trying to all join up. + * If it goes to 0, we have successfully joined up and + * one thread got H_CONTINUE. If any error happens, + * we set it to <0. + */ + local_irq_save(flags); + do { + rc = plpar_hcall_norets(H_JOIN); + smp_rmb(); + } while (rc == H_SUCCESS && data->waiting > 0); + if (rc == H_SUCCESS) goto out; - } else if (rc == H_CONTINUE) { - /* All other cpus are in H_JOIN, this cpu does - * the suspend. - */ - printk(KERN_DEBUG "calling ibm,suspend-me on cpu %i\n", - smp_processor_id()); - data->error = rtas_call(data->token, 0, 1, NULL); - - if (data->error) - printk(KERN_DEBUG "ibm,suspend-me returned %d\n", - data->error); + + if (rc == H_CONTINUE) { + data->waiting = 0; + data->args->args[data->args->nargs] = + rtas_call(ibm_suspend_me_token, 0, 1, NULL); + for_each_possible_cpu(i) + plpar_hcall_norets(H_PROD,i); } else { - printk(KERN_ERR "H_JOIN on cpu %i failed with rc = %ld\n", - smp_processor_id(), rc); - data->error = rc; + data->waiting = -EBUSY; + printk(KERN_ERR "Error on H_JOIN hypervisor call\n"); } - /* This cpu did the suspend or got an error; in either case, - * we need to prod all other other cpus out of join state. - * Extra prods are harmless. - */ - for_each_online_cpu(cpu) - plpar_hcall_norets(H_PROD, get_hard_smp_processor_id(cpu)); + out: - if (atomic_dec_return(&data->working) == 0) - complete(data->complete); + local_irq_restore(flags); + return; } static int rtas_ibm_suspend_me(struct rtas_args *args) { + int i; long state; long rc; unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; struct rtas_suspend_me_data data; - DECLARE_COMPLETION_ONSTACK(done); - - if (!rtas_service_present("ibm,suspend-me")) - return -ENOSYS; /* Make sure the state is valid */ rc = plpar_hcall(H_VASI_STATE, retbuf, @@ -740,23 +721,25 @@ static int rtas_ibm_suspend_me(struct rtas_args *args) return 0; } - atomic_set(&data.working, 0); - data.token = rtas_token("ibm,suspend-me"); - data.error = 0; - data.complete = &done; + data.waiting = 1; + data.args = args; /* Call function on all CPUs. One of us will make the * rtas call */ if (on_each_cpu(rtas_percpu_suspend_me, &data, 1, 0)) - data.error = -EINVAL; + data.waiting = -EINVAL; - wait_for_completion(&done); - - if (data.error != 0) + if (data.waiting != 0) printk(KERN_ERR "Error doing global join\n"); - return data.error; + /* Prod each CPU. This won't hurt, and will wake + * anyone we successfully put to sleep with H_JOIN. + */ + for_each_possible_cpu(i) + plpar_hcall_norets(H_PROD, i); + + return data.waiting; } #else /* CONFIG_PPC_PSERIES */ static int rtas_ibm_suspend_me(struct rtas_args *args) diff --git a/trunk/arch/powerpc/kernel/time.c b/trunk/arch/powerpc/kernel/time.c index a925a8eae121..c0d77723ba11 100644 --- a/trunk/arch/powerpc/kernel/time.c +++ b/trunk/arch/powerpc/kernel/time.c @@ -241,9 +241,8 @@ void account_system_vtime(struct task_struct *tsk) /* deltascaled includes both user and system time. * Hence scale it based on the purr ratio to estimate * the system time */ - if (get_paca()->user_time) - deltascaled = deltascaled * get_paca()->system_time / - (get_paca()->system_time + get_paca()->user_time); + deltascaled = deltascaled * get_paca()->system_time / + (get_paca()->system_time + get_paca()->user_time); delta += get_paca()->system_time; get_paca()->system_time = 0; } diff --git a/trunk/arch/powerpc/kernel/vdso.c b/trunk/arch/powerpc/kernel/vdso.c index 3702df7dc567..2322ba5cce4c 100644 --- a/trunk/arch/powerpc/kernel/vdso.c +++ b/trunk/arch/powerpc/kernel/vdso.c @@ -699,22 +699,11 @@ static int __init vdso_init(void) vdso_data->icache_size = ppc64_caches.isize; vdso_data->icache_line_size = ppc64_caches.iline_size; - /* XXXOJN: Blocks should be added to ppc64_caches and used instead */ - vdso_data->dcache_block_size = ppc64_caches.dline_size; - vdso_data->icache_block_size = ppc64_caches.iline_size; - vdso_data->dcache_log_block_size = ppc64_caches.log_dline_size; - vdso_data->icache_log_block_size = ppc64_caches.log_iline_size; - /* * Calculate the size of the 64 bits vDSO */ vdso64_pages = (&vdso64_end - &vdso64_start) >> PAGE_SHIFT; DBG("vdso64_kbase: %p, 0x%x pages\n", vdso64_kbase, vdso64_pages); -#else - vdso_data->dcache_block_size = L1_CACHE_BYTES; - vdso_data->dcache_log_block_size = L1_CACHE_SHIFT; - vdso_data->icache_block_size = L1_CACHE_BYTES; - vdso_data->icache_log_block_size = L1_CACHE_SHIFT; #endif /* CONFIG_PPC64 */ diff --git a/trunk/arch/powerpc/kernel/vdso32/cacheflush.S b/trunk/arch/powerpc/kernel/vdso32/cacheflush.S index 1ba6feb71b31..9cb319992c38 100644 --- a/trunk/arch/powerpc/kernel/vdso32/cacheflush.S +++ b/trunk/arch/powerpc/kernel/vdso32/cacheflush.S @@ -23,46 +23,29 @@ * * Flushes the data cache & invalidate the instruction cache for the * provided range [start, end[ + * + * Note: all CPUs supported by this kernel have a 128 bytes cache + * line size so we don't have to peek that info from the datapage */ V_FUNCTION_BEGIN(__kernel_sync_dicache) .cfi_startproc - mflr r12 - .cfi_register lr,r12 - mr r11,r3 - bl __get_datapage@local - mtlr r12 - mr r10,r3 - - lwz r7,CFG_DCACHE_BLOCKSZ(r10) - addi r5,r7,-1 - andc r6,r11,r5 /* round low to line bdy */ + li r5,127 + andc r6,r3,r5 /* round low to line bdy */ subf r8,r6,r4 /* compute length */ add r8,r8,r5 /* ensure we get enough */ - lwz r9,CFG_DCACHE_LOGBLOCKSZ(r10) - srw. r8,r8,r9 /* compute line count */ + srwi. r8,r8,7 /* compute line count */ crclr cr0*4+so beqlr /* nothing to do? */ mtctr r8 -1: dcbst 0,r6 - add r6,r6,r7 + mr r3,r6 +1: dcbst 0,r3 + addi r3,r3,128 bdnz 1b sync - -/* Now invalidate the instruction cache */ - - lwz r7,CFG_ICACHE_BLOCKSZ(r10) - addi r5,r7,-1 - andc r6,r11,r5 /* round low to line bdy */ - subf r8,r6,r4 /* compute length */ - add r8,r8,r5 - lwz r9,CFG_ICACHE_LOGBLOCKSZ(r10) - srw. r8,r8,r9 /* compute line count */ - crclr cr0*4+so - beqlr /* nothing to do? */ mtctr r8 -2: icbi 0,r6 - add r6,r6,r7 - bdnz 2b +1: icbi 0,r6 + addi r6,r6,128 + bdnz 1b isync li r3,0 blr diff --git a/trunk/arch/powerpc/kernel/vdso64/cacheflush.S b/trunk/arch/powerpc/kernel/vdso64/cacheflush.S index 69c5af2b3c96..66a36d3cc6ad 100644 --- a/trunk/arch/powerpc/kernel/vdso64/cacheflush.S +++ b/trunk/arch/powerpc/kernel/vdso64/cacheflush.S @@ -23,46 +23,29 @@ * * Flushes the data cache & invalidate the instruction cache for the * provided range [start, end[ + * + * Note: all CPUs supported by this kernel have a 128 bytes cache + * line size so we don't have to peek that info from the datapage */ V_FUNCTION_BEGIN(__kernel_sync_dicache) .cfi_startproc - mflr r12 - .cfi_register lr,r12 - mr r11,r3 - bl V_LOCAL_FUNC(__get_datapage) - mtlr r12 - mr r10,r3 - - lwz r7,CFG_DCACHE_BLOCKSZ(r10) - addi r5,r7,-1 - andc r6,r11,r5 /* round low to line bdy */ + li r5,127 + andc r6,r3,r5 /* round low to line bdy */ subf r8,r6,r4 /* compute length */ add r8,r8,r5 /* ensure we get enough */ - lwz r9,CFG_DCACHE_LOGBLOCKSZ(r10) - srw. r8,r8,r9 /* compute line count */ + srwi. r8,r8,7 /* compute line count */ crclr cr0*4+so beqlr /* nothing to do? */ mtctr r8 -1: dcbst 0,r6 - add r6,r6,r7 + mr r3,r6 +1: dcbst 0,r3 + addi r3,r3,128 bdnz 1b sync - -/* Now invalidate the instruction cache */ - - lwz r7,CFG_ICACHE_BLOCKSZ(r10) - addi r5,r7,-1 - andc r6,r11,r5 /* round low to line bdy */ - subf r8,r6,r4 /* compute length */ - add r8,r8,r5 - lwz r9,CFG_ICACHE_LOGBLOCKSZ(r10) - srw. r8,r8,r9 /* compute line count */ - crclr cr0*4+so - beqlr /* nothing to do? */ mtctr r8 -2: icbi 0,r6 - add r6,r6,r7 - bdnz 2b +1: icbi 0,r6 + addi r6,r6,128 + bdnz 1b isync li r3,0 blr diff --git a/trunk/arch/powerpc/mm/stab.c b/trunk/arch/powerpc/mm/stab.c index 50448d5de9d2..9e85bda76216 100644 --- a/trunk/arch/powerpc/mm/stab.c +++ b/trunk/arch/powerpc/mm/stab.c @@ -20,7 +20,6 @@ #include #include #include -#include struct stab_entry { unsigned long esid_data; diff --git a/trunk/arch/powerpc/platforms/40x/walnut.c b/trunk/arch/powerpc/platforms/40x/walnut.c index ff6db2431798..eb0c136b1c44 100644 --- a/trunk/arch/powerpc/platforms/40x/walnut.c +++ b/trunk/arch/powerpc/platforms/40x/walnut.c @@ -17,13 +17,12 @@ */ #include -#include - #include #include #include #include #include +#include static struct of_device_id walnut_of_bus[] = { { .compatible = "ibm,plb3", }, diff --git a/trunk/arch/powerpc/platforms/44x/bamboo.c b/trunk/arch/powerpc/platforms/44x/bamboo.c index be23f112184f..470e1a3fd755 100644 --- a/trunk/arch/powerpc/platforms/44x/bamboo.c +++ b/trunk/arch/powerpc/platforms/44x/bamboo.c @@ -14,13 +14,12 @@ * option) any later version. */ #include -#include - #include #include #include #include #include +#include #include "44x.h" static struct of_device_id bamboo_of_bus[] = { diff --git a/trunk/arch/powerpc/platforms/44x/ebony.c b/trunk/arch/powerpc/platforms/44x/ebony.c index 6cd3476767cc..40e18fcb666c 100644 --- a/trunk/arch/powerpc/platforms/44x/ebony.c +++ b/trunk/arch/powerpc/platforms/44x/ebony.c @@ -17,13 +17,12 @@ */ #include -#include - #include #include #include #include #include +#include #include "44x.h" diff --git a/trunk/arch/powerpc/platforms/44x/sequoia.c b/trunk/arch/powerpc/platforms/44x/sequoia.c index 21a9dd14f297..30700b31d43b 100644 --- a/trunk/arch/powerpc/platforms/44x/sequoia.c +++ b/trunk/arch/powerpc/platforms/44x/sequoia.c @@ -14,13 +14,12 @@ * option) any later version. */ #include -#include - #include #include #include #include #include +#include #include "44x.h" static struct of_device_id sequoia_of_bus[] = { diff --git a/trunk/arch/powerpc/platforms/83xx/usb.c b/trunk/arch/powerpc/platforms/83xx/usb.c index eafe7605cdac..b45160f8d084 100644 --- a/trunk/arch/powerpc/platforms/83xx/usb.c +++ b/trunk/arch/powerpc/platforms/83xx/usb.c @@ -130,7 +130,7 @@ int mpc831x_usb_cfg(void) out_be32(immap + MPC83XX_SCCR_OFFS, temp); /* Configure pin mux for ULPI. There is no pin mux for UTMI */ - if (!strcmp(prop, "ulpi")) { + if (prop && !strcmp(prop, "ulpi")) { temp = in_be32(immap + MPC83XX_SICRL_OFFS); temp &= ~MPC831X_SICRL_USB_MASK; temp |= MPC831X_SICRL_USB_ULPI; @@ -153,13 +153,13 @@ int mpc831x_usb_cfg(void) usb_regs = ioremap(res.start, res.end - res.start + 1); /* Using on-chip PHY */ - if (!strcmp(prop, "utmi_wide") || - !strcmp(prop, "utmi")) { + if (prop && (!strcmp(prop, "utmi_wide") || + !strcmp(prop, "utmi"))) { /* Set UTMI_PHY_EN, REFSEL to 48MHZ */ out_be32(usb_regs + FSL_USB2_CONTROL_OFFS, CONTROL_UTMI_PHY_EN | CONTROL_REFSEL_48MHZ); /* Using external UPLI PHY */ - } else if (!strcmp(prop, "ulpi")) { + } else if (prop && !strcmp(prop, "ulpi")) { /* Set PHY_CLK_SEL to ULPI */ temp = CONTROL_PHY_CLK_SEL_ULPI; #ifdef CONFIG_USB_OTG diff --git a/trunk/arch/powerpc/platforms/cell/spufs/inode.c b/trunk/arch/powerpc/platforms/cell/spufs/inode.c index c0e968a4c211..0966d093db43 100644 --- a/trunk/arch/powerpc/platforms/cell/spufs/inode.c +++ b/trunk/arch/powerpc/platforms/cell/spufs/inode.c @@ -171,7 +171,6 @@ static int spufs_rmdir(struct inode *parent, struct dentry *dir) { /* remove all entries */ spufs_prune_dir(dir); - d_drop(dir); return simple_rmdir(parent, dir); } diff --git a/trunk/arch/powerpc/platforms/embedded6xx/prpmc2800.c b/trunk/arch/powerpc/platforms/embedded6xx/prpmc2800.c index 653a5eb91c90..e484cac75095 100644 --- a/trunk/arch/powerpc/platforms/embedded6xx/prpmc2800.c +++ b/trunk/arch/powerpc/platforms/embedded6xx/prpmc2800.c @@ -144,7 +144,6 @@ static int __init prpmc2800_probe(void) strncpy(prpmc2800_platform_name, m, min((int)len, PLATFORM_NAME_MAX - 1)); - _set_L2CR(_get_L2CR() | L2CR_L2E); return 1; } diff --git a/trunk/arch/powerpc/platforms/pasemi/setup.c b/trunk/arch/powerpc/platforms/pasemi/setup.c index 3d62060498b4..3a5d112af5e0 100644 --- a/trunk/arch/powerpc/platforms/pasemi/setup.c +++ b/trunk/arch/powerpc/platforms/pasemi/setup.c @@ -214,7 +214,7 @@ static __init void pas_init_IRQ(void) printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr); mpic = mpic_alloc(mpic_node, openpic_addr, - MPIC_PRIMARY|MPIC_LARGE_VECTORS, + MPIC_PRIMARY|MPIC_LARGE_VECTORS|MPIC_WANTS_RESET, 0, 0, " PAS-OPIC "); BUG_ON(!mpic); diff --git a/trunk/arch/powerpc/platforms/pseries/Kconfig b/trunk/arch/powerpc/platforms/pseries/Kconfig index 306a9d07491d..16e4e401b820 100644 --- a/trunk/arch/powerpc/platforms/pseries/Kconfig +++ b/trunk/arch/powerpc/platforms/pseries/Kconfig @@ -21,7 +21,7 @@ config PPC_SPLPAR config EEH bool "PCI Extended Error Handling (EEH)" if EMBEDDED - depends on PPC_PSERIES && PCI + depends on PPC_PSERIES default y if !EMBEDDED config SCANLOG diff --git a/trunk/arch/powerpc/platforms/pseries/setup.c b/trunk/arch/powerpc/platforms/pseries/setup.c index fdeefe54ea91..fdb9b1c8f977 100644 --- a/trunk/arch/powerpc/platforms/pseries/setup.c +++ b/trunk/arch/powerpc/platforms/pseries/setup.c @@ -507,8 +507,7 @@ define_machine(pseries) { .restart = rtas_restart, .power_off = pSeries_power_off, .halt = rtas_halt, - .panic = rtas_panic_msg, - .machine_shutdown = rtas_os_term, + .panic = rtas_os_term, .get_boot_time = rtas_get_boot_time, .get_rtc_time = rtas_get_rtc_time, .set_rtc_time = rtas_set_rtc_time, diff --git a/trunk/arch/powerpc/sysdev/uic.c b/trunk/arch/powerpc/sysdev/uic.c index 847a5496b869..5149716c734d 100644 --- a/trunk/arch/powerpc/sysdev/uic.c +++ b/trunk/arch/powerpc/sysdev/uic.c @@ -97,22 +97,6 @@ static void uic_ack_irq(unsigned int virq) spin_unlock_irqrestore(&uic->lock, flags); } -static void uic_mask_ack_irq(unsigned int virq) -{ - struct uic *uic = get_irq_chip_data(virq); - unsigned int src = uic_irq_to_hw(virq); - unsigned long flags; - u32 er, sr; - - sr = 1 << (31-src); - spin_lock_irqsave(&uic->lock, flags); - er = mfdcr(uic->dcrbase + UIC_ER); - er &= ~sr; - mtdcr(uic->dcrbase + UIC_ER, er); - mtdcr(uic->dcrbase + UIC_SR, sr); - spin_unlock_irqrestore(&uic->lock, flags); -} - static int uic_set_irq_type(unsigned int virq, unsigned int flow_type) { struct uic *uic = get_irq_chip_data(virq); @@ -168,7 +152,7 @@ static struct irq_chip uic_irq_chip = { .typename = " UIC ", .unmask = uic_unmask_irq, .mask = uic_mask_irq, - .mask_ack = uic_mask_ack_irq, +/* .mask_ack = uic_mask_irq_and_ack, */ .ack = uic_ack_irq, .set_type = uic_set_irq_type, }; diff --git a/trunk/arch/ppc/kernel/setup.c b/trunk/arch/ppc/kernel/setup.c index 5255bd80aa6b..aac88c2f3db9 100644 --- a/trunk/arch/ppc/kernel/setup.c +++ b/trunk/arch/ppc/kernel/setup.c @@ -312,14 +312,7 @@ early_init(int r3, int r4, int r5) * Identify the CPU type and fix up code sections * that depend on which cpu we have. */ -#if defined(CONFIG_440EP) && defined(CONFIG_PPC_FPU) - /* We pass the virtual PVR here for 440EP as 440EP and 440GR have - * identical PVRs and there is no reliable way to check for the FPU - */ - spec = identify_cpu(offset, (mfspr(SPRN_PVR) | 0x8)); -#else spec = identify_cpu(offset, mfspr(SPRN_PVR)); -#endif do_feature_fixups(spec->cpu_features, PTRRELOC(&__start___ftr_fixup), PTRRELOC(&__stop___ftr_fixup)); diff --git a/trunk/arch/ppc/platforms/4xx/yucca.c b/trunk/arch/ppc/platforms/4xx/yucca.c index 66a44ff0d926..a83b0baea011 100644 --- a/trunk/arch/ppc/platforms/4xx/yucca.c +++ b/trunk/arch/ppc/platforms/4xx/yucca.c @@ -211,7 +211,6 @@ static void __init yucca_setup_pcie_fpga_rootpoint(int port) break; default: - iounmap(pcie_reg_fpga_base); return; } diff --git a/trunk/arch/ppc/syslib/virtex_devices.c b/trunk/arch/ppc/syslib/virtex_devices.c index f658ff3b3890..ace4ec08de51 100644 --- a/trunk/arch/ppc/syslib/virtex_devices.c +++ b/trunk/arch/ppc/syslib/virtex_devices.c @@ -87,29 +87,6 @@ }, \ } -#define XPAR_AC97_CONTROLLER_REFERENCE(num) { \ - .name = "ml403_ac97cr", \ - .id = num, \ - .num_resources = 3, \ - .resource = (struct resource[]) { \ - { \ - .start = XPAR_OPB_AC97_CONTROLLER_REF_##num##_BASEADDR, \ - .end = XPAR_OPB_AC97_CONTROLLER_REF_##num##_HIGHADDR, \ - .flags = IORESOURCE_MEM, \ - }, \ - { \ - .start = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_PLAYBACK_INTERRUPT_INTR, \ - .end = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_PLAYBACK_INTERRUPT_INTR, \ - .flags = IORESOURCE_IRQ, \ - }, \ - { \ - .start = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_RECORD_INTERRUPT_INTR, \ - .end = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_RECORD_INTERRUPT_INTR, \ - .flags = IORESOURCE_IRQ, \ - }, \ - }, \ -} - /* UART 8250 driver platform data table */ struct plat_serial8250_port virtex_serial_platform_data[] = { #if defined(XPAR_UARTNS550_0_BASEADDR) @@ -196,14 +173,6 @@ struct platform_device virtex_platform_devices[] = { #if defined(XPAR_TFT_3_BASEADDR) XPAR_TFT(3), #endif - - /* AC97 Controller Reference instances */ -#if defined(XPAR_OPB_AC97_CONTROLLER_REF_0_BASEADDR) - XPAR_AC97_CONTROLLER_REFERENCE(0), -#endif -#if defined(XPAR_OPB_AC97_CONTROLLER_REF_1_BASEADDR) - XPAR_AC97_CONTROLLER_REFERENCE(1), -#endif }; /* Early serial support functions */ diff --git a/trunk/include/asm-powerpc/page_32.h b/trunk/include/asm-powerpc/page_32.h index 17110aff26e7..374d0db37e1c 100644 --- a/trunk/include/asm-powerpc/page_32.h +++ b/trunk/include/asm-powerpc/page_32.h @@ -6,10 +6,6 @@ #define PPC_MEMSTART 0 -#ifdef CONFIG_NOT_COHERENT_CACHE -#define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES -#endif - #ifndef __ASSEMBLY__ /* * The basic type of a PTE - 64 bits for those CPUs with > 32 bit diff --git a/trunk/include/asm-powerpc/pci-bridge.h b/trunk/include/asm-powerpc/pci-bridge.h index d8bdc79db12e..dc318458b5fe 100644 --- a/trunk/include/asm-powerpc/pci-bridge.h +++ b/trunk/include/asm-powerpc/pci-bridge.h @@ -246,6 +246,7 @@ static inline struct pci_controller *pci_bus_to_host(struct pci_bus *bus) return PCI_DN(busdn)->phb; } +extern void pcibios_free_controller(struct pci_controller *phb); extern void isa_bridge_find_early(struct pci_controller *hose); @@ -281,11 +282,9 @@ extern void pci_process_bridge_OF_ranges(struct pci_controller *hose, struct device_node *dev, int primary); -/* Allocate & free a PCI host bridge structure */ +/* Allocate a new PCI host bridge structure */ extern struct pci_controller * pcibios_alloc_controller(struct device_node *dev); -extern void pcibios_free_controller(struct pci_controller *phb); - #ifdef CONFIG_PCI extern unsigned long pci_address_to_pio(phys_addr_t address); extern int pcibios_vaddr_is_ioport(void __iomem *address); diff --git a/trunk/include/asm-powerpc/rtas.h b/trunk/include/asm-powerpc/rtas.h index 87db8728e82d..8eaa7b28d9d0 100644 --- a/trunk/include/asm-powerpc/rtas.h +++ b/trunk/include/asm-powerpc/rtas.h @@ -164,8 +164,7 @@ extern int rtas_call(int token, int, int, int *, ...); extern void rtas_restart(char *cmd); extern void rtas_power_off(void); extern void rtas_halt(void); -extern void rtas_panic_msg(char *str); -extern void rtas_os_term(void); +extern void rtas_os_term(char *str); extern int rtas_get_sensor(int sensor, int index, int *state); extern int rtas_get_power_level(int powerdomain, int *level); extern int rtas_set_power_level(int powerdomain, int level, int *setlevel); diff --git a/trunk/include/asm-powerpc/vdso_datapage.h b/trunk/include/asm-powerpc/vdso_datapage.h index f01393224b52..8a94f0eba5e9 100644 --- a/trunk/include/asm-powerpc/vdso_datapage.h +++ b/trunk/include/asm-powerpc/vdso_datapage.h @@ -77,10 +77,6 @@ struct vdso_data { /* those additional ones don't have to be located anywhere * special as they were not part of the original systemcfg */ - __u32 dcache_block_size; /* L1 d-cache block size */ - __u32 icache_block_size; /* L1 i-cache block size */ - __u32 dcache_log_block_size; /* L1 d-cache log block size */ - __u32 icache_log_block_size; /* L1 i-cache log block size */ __s32 wtom_clock_sec; /* Wall to monotonic clock */ __s32 wtom_clock_nsec; __u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of syscalls */ @@ -103,10 +99,6 @@ struct vdso_data { __s32 wtom_clock_sec; /* Wall to monotonic clock */ __s32 wtom_clock_nsec; __u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */ - __u32 dcache_block_size; /* L1 d-cache block size */ - __u32 icache_block_size; /* L1 i-cache block size */ - __u32 dcache_log_block_size; /* L1 d-cache log block size */ - __u32 icache_log_block_size; /* L1 i-cache log block size */ }; #endif /* CONFIG_PPC64 */