diff options
Diffstat (limited to 'arch/mn10300')
25 files changed, 35 insertions, 92 deletions
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig index 6aaa1607001..a648de1b109 100644 --- a/arch/mn10300/Kconfig +++ b/arch/mn10300/Kconfig @@ -181,17 +181,16 @@ endmenu  config SMP  	bool "Symmetric multi-processing support"  	default y -	select USE_GENERIC_SMP_HELPERS  	depends on MN10300_PROC_MN2WS0038 || MN10300_PROC_MN2WS0050  	---help---  	  This enables support for systems with more than one CPU. If you have -	  a system with only one CPU, like most personal computers, say N. If -	  you have a system with more than one CPU, say Y. +	  a system with only one CPU, say N. If you have a system with more +	  than one CPU, say Y. -	  If you say N here, the kernel will run on single and multiprocessor +	  If you say N here, the kernel will run on uni- and multiprocessor  	  machines, but will use only one CPU of a multiprocessor machine. If  	  you say Y here, the kernel will run on many, but not all, -	  singleprocessor machines. On a singleprocessor machine, the kernel +	  uniprocessor machines. On a uniprocessor machine, the kernel  	  will run faster if you say N here.  	  See also <file:Documentation/x86/i386/IO-APIC.txt>, diff --git a/arch/mn10300/Makefile b/arch/mn10300/Makefile index a3d0fef3b12..3f1ea5ddc40 100644 --- a/arch/mn10300/Makefile +++ b/arch/mn10300/Makefile @@ -92,14 +92,6 @@ define archhelp    echo  '* zImage        - Compressed kernel image (arch/$(ARCH)/boot/zImage)'  endef -# If you make sure the .S files get compiled with debug info, -# uncomment the following to disable optimisations -# that are unhelpful whilst debugging. -ifdef CONFIG_DEBUG_INFO -#KBUILD_CFLAGS	+= -O1 -KBUILD_AFLAGS	+= -Wa,--gdwarf2 -endif -  #  # include the appropriate processor- and unit-specific headers  # diff --git a/arch/mn10300/include/asm/Kbuild b/arch/mn10300/include/asm/Kbuild index c5d76702830..654d5ba6e31 100644 --- a/arch/mn10300/include/asm/Kbuild +++ b/arch/mn10300/include/asm/Kbuild @@ -1,4 +1,9 @@ +generic-y += barrier.h  generic-y += clkdev.h +generic-y += cputime.h  generic-y += exec.h +generic-y += hash.h +generic-y += mcs_spinlock.h +generic-y += preempt.h  generic-y += trace_clock.h diff --git a/arch/mn10300/include/asm/atomic.h b/arch/mn10300/include/asm/atomic.h index 975e1841ca6..cadeb1e2cdf 100644 --- a/arch/mn10300/include/asm/atomic.h +++ b/arch/mn10300/include/asm/atomic.h @@ -13,6 +13,7 @@  #include <asm/irqflags.h>  #include <asm/cmpxchg.h> +#include <asm/barrier.h>  #ifndef CONFIG_SMP  #include <asm-generic/atomic.h> @@ -234,12 +235,6 @@ static inline void atomic_set_mask(unsigned long mask, unsigned long *addr)  #endif  } -/* Atomic operations are already serializing on MN10300??? */ -#define smp_mb__before_atomic_dec()	barrier() -#define smp_mb__after_atomic_dec()	barrier() -#define smp_mb__before_atomic_inc()	barrier() -#define smp_mb__after_atomic_inc()	barrier() -  #endif /* __KERNEL__ */  #endif /* CONFIG_SMP */  #endif /* _ASM_ATOMIC_H */ diff --git a/arch/mn10300/include/asm/barrier.h b/arch/mn10300/include/asm/barrier.h deleted file mode 100644 index 2bd97a5c8af..00000000000 --- a/arch/mn10300/include/asm/barrier.h +++ /dev/null @@ -1,37 +0,0 @@ -/* MN10300 memory barrier definitions - * - * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. - * Written by David Howells (dhowells@redhat.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public Licence - * as published by the Free Software Foundation; either version - * 2 of the Licence, or (at your option) any later version. - */ -#ifndef _ASM_BARRIER_H -#define _ASM_BARRIER_H - -#define nop()	asm volatile ("nop") - -#define mb()	asm volatile ("": : :"memory") -#define rmb()	mb() -#define wmb()	asm volatile ("": : :"memory") - -#ifdef CONFIG_SMP -#define smp_mb()	mb() -#define smp_rmb()	rmb() -#define smp_wmb()	wmb() -#define set_mb(var, value)  do { xchg(&var, value); } while (0) -#else  /* CONFIG_SMP */ -#define smp_mb()	barrier() -#define smp_rmb()	barrier() -#define smp_wmb()	barrier() -#define set_mb(var, value)  do { var = value;  mb(); } while (0) -#endif /* CONFIG_SMP */ - -#define set_wmb(var, value) do { var = value; wmb(); } while (0) - -#define read_barrier_depends()		do {} while (0) -#define smp_read_barrier_depends()	do {} while (0) - -#endif /* _ASM_BARRIER_H */ diff --git a/arch/mn10300/include/asm/bitops.h b/arch/mn10300/include/asm/bitops.h index 596bb2706d8..fe6f8e2c361 100644 --- a/arch/mn10300/include/asm/bitops.h +++ b/arch/mn10300/include/asm/bitops.h @@ -18,9 +18,7 @@  #define __ASM_BITOPS_H  #include <asm/cpu-regs.h> - -#define smp_mb__before_clear_bit()	barrier() -#define smp_mb__after_clear_bit()	barrier() +#include <asm/barrier.h>  /*   * set bit diff --git a/arch/mn10300/include/asm/cputime.h b/arch/mn10300/include/asm/cputime.h deleted file mode 100644 index 6d68ad7e0ea..00000000000 --- a/arch/mn10300/include/asm/cputime.h +++ /dev/null @@ -1 +0,0 @@ -#include <asm-generic/cputime.h> diff --git a/arch/mn10300/include/asm/highmem.h b/arch/mn10300/include/asm/highmem.h index 7c137cd8aa3..2fbbe4d920a 100644 --- a/arch/mn10300/include/asm/highmem.h +++ b/arch/mn10300/include/asm/highmem.h @@ -70,7 +70,7 @@ static inline void kunmap(struct page *page)   * be used in IRQ contexts, so in some (very limited) cases we need   * it.   */ -static inline unsigned long kmap_atomic(struct page *page) +static inline void *kmap_atomic(struct page *page)  {  	unsigned long vaddr;  	int idx, type; @@ -89,7 +89,7 @@ static inline unsigned long kmap_atomic(struct page *page)  	set_pte(kmap_pte - idx, mk_pte(page, kmap_prot));  	local_flush_tlb_one(vaddr); -	return vaddr; +	return (void *)vaddr;  }  static inline void __kunmap_atomic(unsigned long vaddr) diff --git a/arch/mn10300/include/asm/mmu_context.h b/arch/mn10300/include/asm/mmu_context.h index c67c2b5365a..75dbe696f83 100644 --- a/arch/mn10300/include/asm/mmu_context.h +++ b/arch/mn10300/include/asm/mmu_context.h @@ -71,7 +71,7 @@ static inline unsigned long allocate_mmu_context(struct mm_struct *mm)  		local_flush_tlb_all();  		/* fix the TLB version if needed (we avoid version #0 so as to -		 * distingush MMU_NO_CONTEXT) */ +		 * distinguish MMU_NO_CONTEXT) */  		if (!mc)  			*pmc = mc = MMU_CONTEXT_FIRST_VERSION;  	} diff --git a/arch/mn10300/include/asm/pci.h b/arch/mn10300/include/asm/pci.h index 6f31cc0f1a8..5f70af25c7d 100644 --- a/arch/mn10300/include/asm/pci.h +++ b/arch/mn10300/include/asm/pci.h @@ -44,12 +44,10 @@ extern void unit_pci_init(void);  #define pcibios_assign_all_busses()	0  #endif -extern unsigned long pci_mem_start;  #define PCIBIOS_MIN_IO		0xBE000004  #define PCIBIOS_MIN_MEM		0xB8000000  void pcibios_set_master(struct pci_dev *dev); -void pcibios_penalize_isa_irq(int irq);  /* Dynamic DMA mapping stuff.   * i386 has everything mapped statically. diff --git a/arch/mn10300/include/asm/pgalloc.h b/arch/mn10300/include/asm/pgalloc.h index 146bacf193e..0f25d5fa86f 100644 --- a/arch/mn10300/include/asm/pgalloc.h +++ b/arch/mn10300/include/asm/pgalloc.h @@ -46,6 +46,7 @@ static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)  static inline void pte_free(struct mm_struct *mm, struct page *pte)  { +	pgtable_page_dtor(pte);  	__free_page(pte);  } diff --git a/arch/mn10300/include/asm/thread_info.h b/arch/mn10300/include/asm/thread_info.h index 224b4262486..bf280eaccd3 100644 --- a/arch/mn10300/include/asm/thread_info.h +++ b/arch/mn10300/include/asm/thread_info.h @@ -16,8 +16,6 @@  #include <asm/page.h> -#define PREEMPT_ACTIVE		0x10000000 -  #ifdef CONFIG_4KSTACKS  #define THREAD_SIZE		(4096)  #define THREAD_SIZE_ORDER	(0) diff --git a/arch/mn10300/include/asm/unistd.h b/arch/mn10300/include/asm/unistd.h index 9d4e2d1ef90..0522468f488 100644 --- a/arch/mn10300/include/asm/unistd.h +++ b/arch/mn10300/include/asm/unistd.h @@ -26,7 +26,6 @@  #define __ARCH_WANT_SYS_GETHOSTNAME  #define __ARCH_WANT_SYS_IPC  #define __ARCH_WANT_SYS_PAUSE -#define __ARCH_WANT_SYS_SGETMASK  #define __ARCH_WANT_SYS_SIGNAL  #define __ARCH_WANT_SYS_TIME  #define __ARCH_WANT_SYS_UTIME diff --git a/arch/mn10300/include/uapi/asm/socket.h b/arch/mn10300/include/uapi/asm/socket.h index e2a2b203eb0..6aa3ce1854a 100644 --- a/arch/mn10300/include/uapi/asm/socket.h +++ b/arch/mn10300/include/uapi/asm/socket.h @@ -76,4 +76,8 @@  #define SO_BUSY_POLL		46 +#define SO_MAX_PACING_RATE	47 + +#define SO_BPF_EXTENSIONS	48 +  #endif /* _ASM_SOCKET_H */ diff --git a/arch/mn10300/kernel/cevt-mn10300.c b/arch/mn10300/kernel/cevt-mn10300.c index ccce35e3e17..60f64ca1752 100644 --- a/arch/mn10300/kernel/cevt-mn10300.c +++ b/arch/mn10300/kernel/cevt-mn10300.c @@ -113,7 +113,7 @@ int __init init_clockevents(void)  	cd->set_next_event	= next_event;  	iact = &per_cpu(timer_irq, cpu); -	iact->flags = IRQF_DISABLED | IRQF_SHARED | IRQF_TIMER; +	iact->flags = IRQF_SHARED | IRQF_TIMER;  	iact->handler = timer_interrupt;  	clockevents_register_device(cd); diff --git a/arch/mn10300/kernel/mn10300-serial.c b/arch/mn10300/kernel/mn10300-serial.c index bf6e949a2f8..7ecf69879e2 100644 --- a/arch/mn10300/kernel/mn10300-serial.c +++ b/arch/mn10300/kernel/mn10300-serial.c @@ -985,17 +985,17 @@ static int mn10300_serial_startup(struct uart_port *_port)  	irq_set_chip(port->tm_irq, &mn10300_serial_pic);  	if (request_irq(port->rx_irq, mn10300_serial_interrupt, -			IRQF_DISABLED | IRQF_NOBALANCING, +			IRQF_NOBALANCING,  			port->rx_name, port) < 0)  		goto error;  	if (request_irq(port->tx_irq, mn10300_serial_interrupt, -			IRQF_DISABLED | IRQF_NOBALANCING, +			IRQF_NOBALANCING,  			port->tx_name, port) < 0)  		goto error2;  	if (request_irq(port->tm_irq, mn10300_serial_interrupt, -			IRQF_DISABLED | IRQF_NOBALANCING, +			IRQF_NOBALANCING,  			port->tm_name, port) < 0)  		goto error3;  	mn10300_serial_mask_ack(port->tm_irq); diff --git a/arch/mn10300/kernel/mn10300-watchdog.c b/arch/mn10300/kernel/mn10300-watchdog.c index db64a7166c0..a2d8e6938d6 100644 --- a/arch/mn10300/kernel/mn10300-watchdog.c +++ b/arch/mn10300/kernel/mn10300-watchdog.c @@ -142,7 +142,7 @@ void watchdog_interrupt(struct pt_regs *regs, enum exception_code excep)  	NMICR = NMICR_WDIF;  	nmi_count(smp_processor_id())++; -	kstat_incr_irqs_this_cpu(irq, irq_to_desc(irq)); +	kstat_incr_irq_this_cpu(irq);  	for_each_online_cpu(cpu) { diff --git a/arch/mn10300/kernel/setup.c b/arch/mn10300/kernel/setup.c index ebac9c11f79..2ad7f32fa12 100644 --- a/arch/mn10300/kernel/setup.c +++ b/arch/mn10300/kernel/setup.c @@ -35,9 +35,6 @@  struct mn10300_cpuinfo boot_cpu_data; -/* For PCI or other memory-mapped resources */ -unsigned long pci_mem_start = 0x18000000; -  static char __initdata cmd_line[COMMAND_LINE_SIZE];  char redboot_command_line[COMMAND_LINE_SIZE] =  	"console=ttyS0,115200 root=/dev/mtdblock3 rw"; diff --git a/arch/mn10300/kernel/smp.c b/arch/mn10300/kernel/smp.c index a17f9c9c14c..f984193718b 100644 --- a/arch/mn10300/kernel/smp.c +++ b/arch/mn10300/kernel/smp.c @@ -143,7 +143,7 @@ static struct irqaction call_function_ipi = {  static irqreturn_t smp_ipi_timer_interrupt(int irq, void *dev_id);  static struct irqaction local_timer_ipi = {  	.handler	= smp_ipi_timer_interrupt, -	.flags		= IRQF_DISABLED | IRQF_NOBALANCING, +	.flags		= IRQF_NOBALANCING,  	.name		= "smp local timer IPI"  };  #endif diff --git a/arch/mn10300/mm/pgtable.c b/arch/mn10300/mm/pgtable.c index bd9ada693f9..e77a7c72808 100644 --- a/arch/mn10300/mm/pgtable.c +++ b/arch/mn10300/mm/pgtable.c @@ -78,8 +78,13 @@ struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address)  #else  	pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT, 0);  #endif -	if (pte) -		clear_highpage(pte); +	if (!pte) +		return NULL; +	clear_highpage(pte); +	if (!pgtable_page_ctor(pte)) { +		__free_page(pte); +		return NULL; +	}  	return pte;  } diff --git a/arch/mn10300/mm/tlb-smp.c b/arch/mn10300/mm/tlb-smp.c index 3e57faf0408..e5d0ef722bf 100644 --- a/arch/mn10300/mm/tlb-smp.c +++ b/arch/mn10300/mm/tlb-smp.c @@ -78,9 +78,9 @@ void smp_flush_tlb(void *unused)  	else  		local_flush_tlb_page(flush_mm, flush_va); -	smp_mb__before_clear_bit(); +	smp_mb__before_atomic();  	cpumask_clear_cpu(cpu_id, &flush_cpumask); -	smp_mb__after_clear_bit(); +	smp_mb__after_atomic();  out:  	put_cpu();  } diff --git a/arch/mn10300/unit-asb2305/pci-asb2305.h b/arch/mn10300/unit-asb2305/pci-asb2305.h index 7fa66a0e462..9e17aca5a2a 100644 --- a/arch/mn10300/unit-asb2305/pci-asb2305.h +++ b/arch/mn10300/unit-asb2305/pci-asb2305.h @@ -35,7 +35,6 @@ extern void pcibios_resource_survey(void);  /* pci.c */ -extern int pcibios_last_bus;  extern struct pci_ops *pci_root_ops;  extern struct irq_routing_table *pcibios_get_irq_routing_table(void); diff --git a/arch/mn10300/unit-asb2305/pci-irq.c b/arch/mn10300/unit-asb2305/pci-irq.c index 77439da0467..fcb28ceb824 100644 --- a/arch/mn10300/unit-asb2305/pci-irq.c +++ b/arch/mn10300/unit-asb2305/pci-irq.c @@ -40,10 +40,6 @@ void __init pcibios_fixup_irqs(void)  	}  } -void __init pcibios_penalize_isa_irq(int irq) -{ -} -  void pcibios_enable_irq(struct pci_dev *dev)  {  	pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq); diff --git a/arch/mn10300/unit-asb2305/pci.c b/arch/mn10300/unit-asb2305/pci.c index e37fac0461f..6b4339f8c9c 100644 --- a/arch/mn10300/unit-asb2305/pci.c +++ b/arch/mn10300/unit-asb2305/pci.c @@ -24,7 +24,6 @@  unsigned int pci_probe = 1; -int pcibios_last_bus = -1;  struct pci_ops *pci_root_ops;  /* @@ -392,10 +391,6 @@ char *__init pcibios_setup(char *str)  	if (!strcmp(str, "off")) {  		pci_probe = 0;  		return NULL; - -	} else if (!strncmp(str, "lastbus=", 8)) { -		pcibios_last_bus = simple_strtol(str+8, NULL, 0); -		return NULL;  	}  	return str; diff --git a/arch/mn10300/unit-asb2364/irq-fpga.c b/arch/mn10300/unit-asb2364/irq-fpga.c index e16c216f31d..073e2ccc4a4 100644 --- a/arch/mn10300/unit-asb2364/irq-fpga.c +++ b/arch/mn10300/unit-asb2364/irq-fpga.c @@ -76,7 +76,7 @@ static irqreturn_t fpga_interrupt(int irq, void *_mask)  static struct irqaction fpga_irq[]  = {  	[0] = {  		.handler	= fpga_interrupt, -		.flags		= IRQF_DISABLED | IRQF_SHARED, +		.flags		= IRQF_SHARED,  		.name		= "fpga",  	},  };  | 
