Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a9523f45 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* '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
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -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


#
#
+2 −4
Original line number Original line Diff line number Diff line
@@ -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);
+2 −4
Original line number Original line Diff line number Diff line
@@ -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;
+1 −2
Original line number Original line Diff line number Diff line
@@ -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;
+1 −1
Original line number Original line Diff line number Diff line
@@ -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;
Loading