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.
This commit is contained in:
@@ -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,
|
|||||||
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,
|
|||||||
|
|
||||||
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,
|
|||||||
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,
|
|||||||
|
|
||||||
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:
|
|||||||
/* 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)
|
|||||||
|
|
||||||
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)
|
|||||||
"%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;
|
||||||
|
Reference in New Issue
Block a user