diff options
Diffstat (limited to 'arch/powerpc/kernel')
| -rw-r--r-- | arch/powerpc/kernel/entry_32.S | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/entry_64.S | 17 | ||||
| -rw-r--r-- | arch/powerpc/kernel/io-workarounds.c | 9 | ||||
| -rw-r--r-- | arch/powerpc/kernel/isa-bridge.c | 12 | ||||
| -rw-r--r-- | arch/powerpc/kernel/kgdb.c | 5 | ||||
| -rw-r--r-- | arch/powerpc/kernel/of_platform.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/pci-common.c | 28 | ||||
| -rw-r--r-- | arch/powerpc/kernel/pci_32.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/pci_64.c | 6 | ||||
| -rw-r--r-- | arch/powerpc/kernel/pci_dn.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/kernel/pci_of_scan.c | 12 | ||||
| -rw-r--r-- | arch/powerpc/kernel/rtas_pci.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/kernel/smp-tbsync.c | 8 | ||||
| -rw-r--r-- | arch/powerpc/kernel/smp.c | 8 | ||||
| -rw-r--r-- | arch/powerpc/kernel/time.c | 21 | ||||
| -rw-r--r-- | arch/powerpc/kernel/vio.c | 4 | 
16 files changed, 79 insertions, 65 deletions
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index d22e73e4618..e514de57a12 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S @@ -439,6 +439,8 @@ ret_from_fork:  ret_from_kernel_thread:  	REST_NVGPRS(r1)  	bl	schedule_tail +	li	r3,0 +	stw	r3,0(r1)  	mtlr	r14  	mr	r3,r15  	PPC440EP_ERR42 diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index b310a057362..ac057013f9f 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S @@ -94,7 +94,7 @@ system_call_common:  	addi	r9,r1,STACK_FRAME_OVERHEAD  	ld	r11,exception_marker@toc(r2)  	std	r11,-16(r9)		/* "regshere" marker */ -#if defined(CONFIG_VIRT_CPU_ACCOUNTING) && defined(CONFIG_PPC_SPLPAR) +#if defined(CONFIG_VIRT_CPU_ACCOUNTING_NATIVE) && defined(CONFIG_PPC_SPLPAR)  BEGIN_FW_FTR_SECTION  	beq	33f  	/* if from user, see if there are any DTL entries to process */ @@ -110,7 +110,7 @@ BEGIN_FW_FTR_SECTION  	addi	r9,r1,STACK_FRAME_OVERHEAD  33:  END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR) -#endif /* CONFIG_VIRT_CPU_ACCOUNTING && CONFIG_PPC_SPLPAR */ +#endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE && CONFIG_PPC_SPLPAR */  	/*  	 * A syscall should always be called with interrupts enabled @@ -664,6 +664,19 @@ resume_kernel:  	ld	r4,TI_FLAGS(r9)  	andi.	r0,r4,_TIF_NEED_RESCHED  	bne	1b + +	/* +	 * arch_local_irq_restore() from preempt_schedule_irq above may +	 * enable hard interrupt but we really should disable interrupts +	 * when we return from the interrupt, and so that we don't get +	 * interrupted after loading SRR0/1. +	 */ +#ifdef CONFIG_PPC_BOOK3E +	wrteei	0 +#else +	ld	r10,PACAKMSR(r13) /* Get kernel MSR without EE */ +	mtmsrd	r10,1		  /* Update machine state */ +#endif /* CONFIG_PPC_BOOK3E */  #endif /* CONFIG_PREEMPT */  	.globl	fast_exc_return_irq diff --git a/arch/powerpc/kernel/io-workarounds.c b/arch/powerpc/kernel/io-workarounds.c index 12d329bcbb9..50e90b7e713 100644 --- a/arch/powerpc/kernel/io-workarounds.c +++ b/arch/powerpc/kernel/io-workarounds.c @@ -118,7 +118,7 @@ static void iowa_##name at					\  #undef DEF_PCI_AC_RET  #undef DEF_PCI_AC_NORET -static const struct ppc_pci_io __devinitconst iowa_pci_io = { +static const struct ppc_pci_io iowa_pci_io = {  #define DEF_PCI_AC_RET(name, ret, at, al, space, aa)	.name = iowa_##name,  #define DEF_PCI_AC_NORET(name, at, al, space, aa)	.name = iowa_##name, @@ -146,7 +146,7 @@ static void __iomem *iowa_ioremap(phys_addr_t addr, unsigned long size,  }  /* Enable IO workaround */ -static void __devinit io_workaround_init(void) +static void io_workaround_init(void)  {  	static int io_workaround_inited; @@ -158,9 +158,8 @@ static void __devinit io_workaround_init(void)  }  /* Register new bus to support workaround */ -void __devinit iowa_register_bus(struct pci_controller *phb, -			struct ppc_pci_io *ops, -			int (*initfunc)(struct iowa_bus *, void *), void *data) +void iowa_register_bus(struct pci_controller *phb, struct ppc_pci_io *ops, +		       int (*initfunc)(struct iowa_bus *, void *), void *data)  {  	struct iowa_bus *bus;  	struct device_node *np = phb->dn; diff --git a/arch/powerpc/kernel/isa-bridge.c b/arch/powerpc/kernel/isa-bridge.c index d45ec58703c..0f199709796 100644 --- a/arch/powerpc/kernel/isa-bridge.c +++ b/arch/powerpc/kernel/isa-bridge.c @@ -41,8 +41,8 @@ EXPORT_SYMBOL_GPL(isa_bridge_pcidev);  #define ISA_SPACE_MASK 0x1  #define ISA_SPACE_IO 0x1 -static void __devinit pci_process_ISA_OF_ranges(struct device_node *isa_node, -						unsigned long phb_io_base_phys) +static void pci_process_ISA_OF_ranges(struct device_node *isa_node, +				      unsigned long phb_io_base_phys)  {  	/* We should get some saner parsing here and remove these structs */  	struct pci_address { @@ -170,8 +170,8 @@ void __init isa_bridge_find_early(struct pci_controller *hose)   * isa_bridge_find_late - Find and map the ISA IO space upon discovery of   *                        a new ISA bridge   */ -static void __devinit isa_bridge_find_late(struct pci_dev *pdev, -					   struct device_node *devnode) +static void isa_bridge_find_late(struct pci_dev *pdev, +				 struct device_node *devnode)  {  	struct pci_controller *hose = pci_bus_to_host(pdev->bus); @@ -215,8 +215,8 @@ static void isa_bridge_remove(void)  /**   * isa_bridge_notify - Get notified of PCI devices addition/removal   */ -static int __devinit isa_bridge_notify(struct notifier_block *nb, -				       unsigned long action, void *data) +static int isa_bridge_notify(struct notifier_block *nb, unsigned long action, +			     void *data)  {  	struct device *dev = data;  	struct pci_dev *pdev = to_pci_dev(dev); diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c index c470a40b29f..a7bc7521c06 100644 --- a/arch/powerpc/kernel/kgdb.c +++ b/arch/powerpc/kernel/kgdb.c @@ -154,12 +154,12 @@ static int kgdb_handle_breakpoint(struct pt_regs *regs)  static int kgdb_singlestep(struct pt_regs *regs)  {  	struct thread_info *thread_info, *exception_thread_info; -	struct thread_info *backup_current_thread_info = \ -		(struct thread_info *)kmalloc(sizeof(struct thread_info), GFP_KERNEL); +	struct thread_info *backup_current_thread_info;  	if (user_mode(regs))  		return 0; +	backup_current_thread_info = (struct thread_info *)kmalloc(sizeof(struct thread_info), GFP_KERNEL);  	/*  	 * On Book E and perhaps other processors, singlestep is handled on  	 * the critical exception stack.  This causes current_thread_info() @@ -185,6 +185,7 @@ static int kgdb_singlestep(struct pt_regs *regs)  		/* Restore current_thread_info lastly. */  		memcpy(exception_thread_info, backup_current_thread_info, sizeof *thread_info); +	kfree(backup_current_thread_info);  	return 1;  } diff --git a/arch/powerpc/kernel/of_platform.c b/arch/powerpc/kernel/of_platform.c index 9db8ec07ec9..07c12697d70 100644 --- a/arch/powerpc/kernel/of_platform.c +++ b/arch/powerpc/kernel/of_platform.c @@ -37,7 +37,7 @@   * lacking some bits needed here.   */ -static int __devinit of_pci_phb_probe(struct platform_device *dev) +static int of_pci_phb_probe(struct platform_device *dev)  {  	struct pci_controller *phb; diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index abc0d085699..7c37379ea9b 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c @@ -673,9 +673,8 @@ void pci_resource_to_user(const struct pci_dev *dev, int bar,   *   - Some 32 bits platforms such as 4xx can have physical space larger than   *     32 bits so we need to use 64 bits values for the parsing   */ -void __devinit pci_process_bridge_OF_ranges(struct pci_controller *hose, -					    struct device_node *dev, -					    int primary) +void pci_process_bridge_OF_ranges(struct pci_controller *hose, +				  struct device_node *dev, int primary)  {  	const u32 *ranges;  	int rlen; @@ -848,7 +847,7 @@ int pci_proc_domain(struct pci_bus *bus)  /* This header fixup will do the resource fixup for all devices as they are   * probed, but not for bridge ranges   */ -static void __devinit pcibios_fixup_resources(struct pci_dev *dev) +static void pcibios_fixup_resources(struct pci_dev *dev)  {  	struct pci_controller *hose = pci_bus_to_host(dev->bus);  	int i; @@ -902,8 +901,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pcibios_fixup_resources);   * things go more smoothly when it gets it right. It should covers cases such   * as Apple "closed" bridge resources and bare-metal pSeries unassigned bridges   */ -static int __devinit pcibios_uninitialized_bridge_resource(struct pci_bus *bus, -							   struct resource *res) +static int pcibios_uninitialized_bridge_resource(struct pci_bus *bus, +						 struct resource *res)  {  	struct pci_controller *hose = pci_bus_to_host(bus);  	struct pci_dev *dev = bus->self; @@ -967,7 +966,7 @@ static int __devinit pcibios_uninitialized_bridge_resource(struct pci_bus *bus,  }  /* Fixup resources of a PCI<->PCI bridge */ -static void __devinit pcibios_fixup_bridge(struct pci_bus *bus) +static void pcibios_fixup_bridge(struct pci_bus *bus)  {  	struct resource *res;  	int i; @@ -1007,7 +1006,7 @@ static void __devinit pcibios_fixup_bridge(struct pci_bus *bus)  	}  } -void __devinit pcibios_setup_bus_self(struct pci_bus *bus) +void pcibios_setup_bus_self(struct pci_bus *bus)  {  	/* Fix up the bus resources for P2P bridges */  	if (bus->self != NULL) @@ -1024,7 +1023,7 @@ void __devinit pcibios_setup_bus_self(struct pci_bus *bus)  		ppc_md.pci_dma_bus_setup(bus);  } -void __devinit pcibios_setup_bus_devices(struct pci_bus *bus) +void pcibios_setup_bus_devices(struct pci_bus *bus)  {  	struct pci_dev *dev; @@ -1063,7 +1062,7 @@ void pcibios_set_master(struct pci_dev *dev)  	/* No special bus mastering setup handling */  } -void __devinit pcibios_fixup_bus(struct pci_bus *bus) +void pcibios_fixup_bus(struct pci_bus *bus)  {  	/* When called from the generic PCI probe, read PCI<->PCI bridge  	 * bases. This is -not- called when generating the PCI tree from @@ -1080,7 +1079,7 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)  }  EXPORT_SYMBOL(pcibios_fixup_bus); -void __devinit pci_fixup_cardbus(struct pci_bus *bus) +void pci_fixup_cardbus(struct pci_bus *bus)  {  	/* Now fixup devices on that bus */  	pcibios_setup_bus_devices(bus); @@ -1264,7 +1263,7 @@ void pcibios_allocate_bus_resources(struct pci_bus *bus)  		pcibios_allocate_bus_resources(b);  } -static inline void __devinit alloc_resource(struct pci_dev *dev, int idx) +static inline void alloc_resource(struct pci_dev *dev, int idx)  {  	struct resource *pr, *r = &dev->resource[idx]; @@ -1500,7 +1499,8 @@ resource_size_t pcibios_io_space_offset(struct pci_controller *hose)  	return (unsigned long) hose->io_base_virt - _IO_BASE;  } -static void __devinit pcibios_setup_phb_resources(struct pci_controller *hose, struct list_head *resources) +static void pcibios_setup_phb_resources(struct pci_controller *hose, +					struct list_head *resources)  {  	struct resource *res;  	int i; @@ -1639,7 +1639,7 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)   * pci_scan_phb - Given a pci_controller, setup and scan the PCI bus   * @hose: Pointer to the PCI host controller instance structure   */ -void __devinit pcibios_scan_phb(struct pci_controller *hose) +void pcibios_scan_phb(struct pci_controller *hose)  {  	LIST_HEAD(resources);  	struct pci_bus *bus; diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c index 64f526a321f..e37c2152acf 100644 --- a/arch/powerpc/kernel/pci_32.c +++ b/arch/powerpc/kernel/pci_32.c @@ -213,7 +213,7 @@ pci_create_OF_bus_map(void)  	}  } -void __devinit pcibios_setup_phb_io_space(struct pci_controller *hose) +void pcibios_setup_phb_io_space(struct pci_controller *hose)  {  	unsigned long io_offset;  	struct resource *res = &hose->io_resource; diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c index 2cbe6768fdd..51a133a78a0 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c @@ -122,7 +122,7 @@ int pcibios_unmap_io_space(struct pci_bus *bus)  }  EXPORT_SYMBOL_GPL(pcibios_unmap_io_space); -static int __devinit pcibios_map_phb_io_space(struct pci_controller *hose) +static int pcibios_map_phb_io_space(struct pci_controller *hose)  {  	struct vm_struct *area;  	unsigned long phys_page; @@ -173,7 +173,7 @@ static int __devinit pcibios_map_phb_io_space(struct pci_controller *hose)  	return 0;  } -int __devinit pcibios_map_io_space(struct pci_bus *bus) +int pcibios_map_io_space(struct pci_bus *bus)  {  	WARN_ON(bus == NULL); @@ -193,7 +193,7 @@ int __devinit pcibios_map_io_space(struct pci_bus *bus)  }  EXPORT_SYMBOL_GPL(pcibios_map_io_space); -void __devinit pcibios_setup_phb_io_space(struct pci_controller *hose) +void pcibios_setup_phb_io_space(struct pci_controller *hose)  {  	pcibios_map_phb_io_space(hose);  } diff --git a/arch/powerpc/kernel/pci_dn.c b/arch/powerpc/kernel/pci_dn.c index dd9e4a04bf7..e7af165f8b9 100644 --- a/arch/powerpc/kernel/pci_dn.c +++ b/arch/powerpc/kernel/pci_dn.c @@ -36,7 +36,7 @@   * Traverse_func that inits the PCI fields of the device node.   * NOTE: this *must* be done before read/write config to the device.   */ -void * __devinit update_dn_pci_info(struct device_node *dn, void *data) +void *update_dn_pci_info(struct device_node *dn, void *data)  {  	struct pci_controller *phb = data;  	const int *type = @@ -129,7 +129,7 @@ void *traverse_pci_devices(struct device_node *start, traverse_func pre,   * subsystem is set up, before kmalloc is valid) and during the    * dynamic lpar operation of adding a PHB to a running system.   */ -void __devinit pci_devs_phb_init_dynamic(struct pci_controller *phb) +void pci_devs_phb_init_dynamic(struct pci_controller *phb)  {  	struct device_node *dn = phb->dn;  	struct pci_dn *pdn; diff --git a/arch/powerpc/kernel/pci_of_scan.c b/arch/powerpc/kernel/pci_of_scan.c index 30378a19f65..2a67e9baa59 100644 --- a/arch/powerpc/kernel/pci_of_scan.c +++ b/arch/powerpc/kernel/pci_of_scan.c @@ -204,7 +204,7 @@ EXPORT_SYMBOL(of_create_pci_dev);   * this routine in turn call of_scan_bus() recusively to scan for more child   * devices.   */ -void __devinit of_scan_pci_bridge(struct pci_dev *dev) +void of_scan_pci_bridge(struct pci_dev *dev)  {  	struct device_node *node = dev->dev.of_node;  	struct pci_bus *bus; @@ -299,8 +299,8 @@ EXPORT_SYMBOL(of_scan_pci_bridge);   * @bus: pci_bus structure for the PCI bus   * @rescan_existing: Flag indicating bus has already been set up   */ -static void __devinit __of_scan_bus(struct device_node *node, -				    struct pci_bus *bus, int rescan_existing) +static void __of_scan_bus(struct device_node *node, struct pci_bus *bus, +			  int rescan_existing)  {  	struct device_node *child;  	const u32 *reg; @@ -348,8 +348,7 @@ static void __devinit __of_scan_bus(struct device_node *node,   * @node: device tree node for the PCI bus   * @bus: pci_bus structure for the PCI bus   */ -void __devinit of_scan_bus(struct device_node *node, -			   struct pci_bus *bus) +void of_scan_bus(struct device_node *node, struct pci_bus *bus)  {  	__of_scan_bus(node, bus, 0);  } @@ -363,8 +362,7 @@ EXPORT_SYMBOL_GPL(of_scan_bus);   * Same as of_scan_bus, but for a pci_bus structure that has already been   * setup.   */ -void __devinit of_rescan_bus(struct device_node *node, -			     struct pci_bus *bus) +void of_rescan_bus(struct device_node *node, struct pci_bus *bus)  {  	__of_scan_bus(node, bus, 1);  } diff --git a/arch/powerpc/kernel/rtas_pci.c b/arch/powerpc/kernel/rtas_pci.c index 6de63e3250b..71cb20d6ec6 100644 --- a/arch/powerpc/kernel/rtas_pci.c +++ b/arch/powerpc/kernel/rtas_pci.c @@ -209,7 +209,7 @@ void __init init_pci_config_tokens (void)  	ibm_write_pci_config = rtas_token("ibm,write-pci-config");  } -unsigned long __devinit get_phb_buid (struct device_node *phb) +unsigned long get_phb_buid (struct device_node *phb)  {  	struct resource r; @@ -237,7 +237,7 @@ static int phb_set_bus_ranges(struct device_node *dev,  	return 0;  } -int __devinit rtas_setup_phb(struct pci_controller *phb) +int rtas_setup_phb(struct pci_controller *phb)  {  	struct device_node *dev = phb->dn; diff --git a/arch/powerpc/kernel/smp-tbsync.c b/arch/powerpc/kernel/smp-tbsync.c index 640de836e46..e68fd1ae727 100644 --- a/arch/powerpc/kernel/smp-tbsync.c +++ b/arch/powerpc/kernel/smp-tbsync.c @@ -36,13 +36,13 @@ static struct {  static volatile int		running; -static void __devinit enter_contest(u64 mark, long add) +static void enter_contest(u64 mark, long add)  {  	while (get_tb() < mark)  		tbsync->race_result = add;  } -void __devinit smp_generic_take_timebase(void) +void smp_generic_take_timebase(void)  {  	int cmd;  	u64 tb; @@ -75,7 +75,7 @@ void __devinit smp_generic_take_timebase(void)  	local_irq_restore(flags);  } -static int __devinit start_contest(int cmd, long offset, int num) +static int start_contest(int cmd, long offset, int num)  {  	int i, score=0;  	u64 tb; @@ -110,7 +110,7 @@ static int __devinit start_contest(int cmd, long offset, int num)  	return score;  } -void __devinit smp_generic_give_timebase(void) +void smp_generic_give_timebase(void)  {  	int i, score, score2, old, min=0, max=5000, offset=1000; diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index e5b133ebd8a..793401e6508 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c @@ -82,7 +82,7 @@ int smt_enabled_at_boot = 1;  static void (*crash_ipi_function_ptr)(struct pt_regs *) = NULL;  #ifdef CONFIG_PPC64 -int __devinit smp_generic_kick_cpu(int nr) +int smp_generic_kick_cpu(int nr)  {  	BUG_ON(nr < 0 || nr >= NR_CPUS); @@ -311,7 +311,7 @@ void smp_send_stop(void)  struct thread_info *current_set[NR_CPUS]; -static void __devinit smp_store_cpu_info(int id) +static void smp_store_cpu_info(int id)  {  	per_cpu(cpu_pvr, id) = mfspr(SPRN_PVR);  #ifdef CONFIG_PPC_FSL_BOOK3E @@ -355,7 +355,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)  		max_cpus = 1;  } -void __devinit smp_prepare_boot_cpu(void) +void smp_prepare_boot_cpu(void)  {  	BUG_ON(smp_processor_id() != boot_cpuid);  #ifdef CONFIG_PPC64 @@ -610,7 +610,7 @@ static struct device_node *cpu_to_l2cache(int cpu)  }  /* Activate a secondary processor. */ -void __devinit start_secondary(void *unused) +void start_secondary(void *unused)  {  	unsigned int cpu = smp_processor_id();  	struct device_node *l2_cache; diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index b3b14352b05..f77fa22754b 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c @@ -143,7 +143,7 @@ EXPORT_SYMBOL_GPL(ppc_proc_freq);  unsigned long ppc_tb_freq;  EXPORT_SYMBOL_GPL(ppc_tb_freq); -#ifdef CONFIG_VIRT_CPU_ACCOUNTING +#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE  /*   * Factors for converting from cputime_t (timebase ticks) to   * jiffies, microseconds, seconds, and clock_t (1/USER_HZ seconds). @@ -347,6 +347,7 @@ void vtime_account_system(struct task_struct *tsk)  	if (stolen)  		account_steal_time(stolen);  } +EXPORT_SYMBOL_GPL(vtime_account_system);  void vtime_account_idle(struct task_struct *tsk)  { @@ -377,7 +378,7 @@ void vtime_account_user(struct task_struct *tsk)  	account_user_time(tsk, utime, utimescaled);  } -#else /* ! CONFIG_VIRT_CPU_ACCOUNTING */ +#else /* ! CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */  #define calc_cputime_factors()  #endif @@ -494,10 +495,15 @@ void timer_interrupt(struct pt_regs * regs)  	set_dec(DECREMENTER_MAX);  	/* Some implementations of hotplug will get timer interrupts while -	 * offline, just ignore these +	 * offline, just ignore these and we also need to set +	 * decrementers_next_tb as MAX to make sure __check_irq_replay +	 * don't replay timer interrupt when return, otherwise we'll trap +	 * here infinitely :(  	 */ -	if (!cpu_online(smp_processor_id())) +	if (!cpu_online(smp_processor_id())) { +		*next_tb = ~(u64)0;  		return; +	}  	/* Conditionally hard-enable interrupts now that the DEC has been  	 * bumped to its maximum value @@ -663,7 +669,7 @@ int update_persistent_clock(struct timespec now)  	struct rtc_time tm;  	if (!ppc_md.set_rtc_time) -		return 0; +		return -ENODEV;  	to_tm(now.tv_sec + 1 + timezone_offset, &tm);  	tm.tm_year -= 1900; @@ -770,13 +776,8 @@ void update_vsyscall_old(struct timespec *wall_time, struct timespec *wtm,  void update_vsyscall_tz(void)  { -	/* Make userspace gettimeofday spin until we're done. */ -	++vdso_data->tb_update_count; -	smp_mb();  	vdso_data->tz_minuteswest = sys_tz.tz_minuteswest;  	vdso_data->tz_dsttime = sys_tz.tz_dsttime; -	smp_mb(); -	++vdso_data->tb_update_count;  }  static void __init clocksource_init(void) diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c index 201ba59738b..536016d792b 100644 --- a/arch/powerpc/kernel/vio.c +++ b/arch/powerpc/kernel/vio.c @@ -1289,7 +1289,7 @@ void vio_unregister_driver(struct vio_driver *viodrv)  EXPORT_SYMBOL(vio_unregister_driver);  /* vio_dev refcount hit 0 */ -static void __devinit vio_dev_release(struct device *dev) +static void vio_dev_release(struct device *dev)  {  	struct iommu_table *tbl = get_iommu_table_base(dev); @@ -1545,7 +1545,7 @@ static struct device_attribute vio_dev_attrs[] = {  	__ATTR_NULL  }; -void __devinit vio_unregister_device(struct vio_dev *viodev) +void vio_unregister_device(struct vio_dev *viodev)  {  	device_unregister(&viodev->dev);  }  |