Commit a9523f45 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus

* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
  MIPS: 64-bit: Fix system lockup.
  MIPS: IP28: Change to build with -mr10k-cache-barrier=store
  MIPS: IP22: Fix hang in power button interrupt handler
  MIPS: IP32: Fix hang on shutdown in power button interrupt handler.
parents 9fe02c03 a5e696e5
...@@ -473,12 +473,12 @@ endif ...@@ -473,12 +473,12 @@ endif
# Simplified: what IP22 does at 128MB+ in ksegN, IP28 does at 512MB+ in xkphys # Simplified: what IP22 does at 128MB+ in ksegN, IP28 does at 512MB+ in xkphys
# #
ifdef CONFIG_SGI_IP28 ifdef CONFIG_SGI_IP28
ifeq ($(call cc-option-yn,-mr10k-cache-barrier=1), n) ifeq ($(call cc-option-yn,-mr10k-cache-barrier=store), n)
$(error gcc doesn't support needed option -mr10k-cache-barrier=1) $(error gcc doesn't support needed option -mr10k-cache-barrier=store)
endif endif
endif endif
core-$(CONFIG_SGI_IP28) += arch/mips/sgi-ip22/ core-$(CONFIG_SGI_IP28) += arch/mips/sgi-ip22/
cflags-$(CONFIG_SGI_IP28) += -mr10k-cache-barrier=1 -I$(srctree)/arch/mips/include/asm/mach-ip28 cflags-$(CONFIG_SGI_IP28) += -mr10k-cache-barrier=store -I$(srctree)/arch/mips/include/asm/mach-ip28
load-$(CONFIG_SGI_IP28) += 0xa800000020004000 load-$(CONFIG_SGI_IP28) += 0xa800000020004000
# #
......
...@@ -82,8 +82,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, ...@@ -82,8 +82,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
int cpu = smp_processor_id(); int cpu = smp_processor_id();
if (cpu_context(cpu, mm) != 0) { if (cpu_context(cpu, mm) != 0) {
unsigned long flags; unsigned long size, flags;
int size;
#ifdef DEBUG_TLB #ifdef DEBUG_TLB
printk("[tlbrange<%lu,0x%08lx,0x%08lx>]", printk("[tlbrange<%lu,0x%08lx,0x%08lx>]",
...@@ -121,8 +120,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, ...@@ -121,8 +120,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
void local_flush_tlb_kernel_range(unsigned long start, unsigned long end) void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
{ {
unsigned long flags; unsigned long size, flags;
int size;
#ifdef DEBUG_TLB #ifdef DEBUG_TLB
printk("[tlbrange<%lu,0x%08lx,0x%08lx>]", start, end); printk("[tlbrange<%lu,0x%08lx,0x%08lx>]", start, end);
......
...@@ -117,8 +117,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, ...@@ -117,8 +117,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
int cpu = smp_processor_id(); int cpu = smp_processor_id();
if (cpu_context(cpu, mm) != 0) { if (cpu_context(cpu, mm) != 0) {
unsigned long flags; unsigned long size, flags;
int size;
ENTER_CRITICAL(flags); ENTER_CRITICAL(flags);
size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
...@@ -160,8 +159,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, ...@@ -160,8 +159,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
void local_flush_tlb_kernel_range(unsigned long start, unsigned long end) void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
{ {
unsigned long flags; unsigned long size, flags;
int size;
ENTER_CRITICAL(flags); ENTER_CRITICAL(flags);
size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
......
...@@ -111,8 +111,7 @@ out_restore: ...@@ -111,8 +111,7 @@ out_restore:
/* Usable for KV1 addresses only! */ /* Usable for KV1 addresses only! */
void local_flush_tlb_kernel_range(unsigned long start, unsigned long end) void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
{ {
unsigned long flags; unsigned long size, flags;
int size;
size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
size = (size + 1) >> 1; size = (size + 1) >> 1;
......
...@@ -148,7 +148,7 @@ static irqreturn_t panel_int(int irq, void *dev_id) ...@@ -148,7 +148,7 @@ static irqreturn_t panel_int(int irq, void *dev_id)
if (sgint->istat1 & SGINT_ISTAT1_PWR) { if (sgint->istat1 & SGINT_ISTAT1_PWR) {
/* Wait until interrupt goes away */ /* Wait until interrupt goes away */
disable_irq(SGI_PANEL_IRQ); disable_irq_nosync(SGI_PANEL_IRQ);
init_timer(&debounce_timer); init_timer(&debounce_timer);
debounce_timer.function = debounce; debounce_timer.function = debounce;
debounce_timer.expires = jiffies + 5; debounce_timer.expires = jiffies + 5;
......
...@@ -145,7 +145,7 @@ static irqreturn_t ip32_rtc_int(int irq, void *dev_id) ...@@ -145,7 +145,7 @@ static irqreturn_t ip32_rtc_int(int irq, void *dev_id)
"%s: RTC IRQ without RTC_IRQF\n", __func__); "%s: RTC IRQ without RTC_IRQF\n", __func__);
} }
/* Wait until interrupt goes away */ /* Wait until interrupt goes away */
disable_irq(MACEISA_RTC_IRQ); disable_irq_nosync(MACEISA_RTC_IRQ);
init_timer(&debounce_timer); init_timer(&debounce_timer);
debounce_timer.function = debounce; debounce_timer.function = debounce;
debounce_timer.expires = jiffies + 50; debounce_timer.expires = jiffies + 50;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment