Merge tag 'arc-4.6-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc
Pull ARC fixes from Vineet Gupta: - lockdep now works for ARCv2 builds - enable DT reserved-memory binding (for forthcoming HDMI driver) * tag 'arc-4.6-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc: ARC: add support for reserved memory defined by device tree ARC: support generic per-device coherent dma mem Documentation: dt: arc: fix spelling mistakes ARCv2: Enable LOCKDEP
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
The ARC HS can be configured with a pipeline performance monitor for counting
|
The ARC HS can be configured with a pipeline performance monitor for counting
|
||||||
CPU and cache events like cache misses and hits. Like conventional PCT there
|
CPU and cache events like cache misses and hits. Like conventional PCT there
|
||||||
are 100+ hardware conditions dynamically mapped to upto 32 counters.
|
are 100+ hardware conditions dynamically mapped to up to 32 counters.
|
||||||
It also supports overflow interrupts.
|
It also supports overflow interrupts.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
The ARC700 can be configured with a pipeline performance monitor for counting
|
The ARC700 can be configured with a pipeline performance monitor for counting
|
||||||
CPU and cache events like cache misses and hits. Like conventional PCT there
|
CPU and cache events like cache misses and hits. Like conventional PCT there
|
||||||
are 100+ hardware conditions dynamically mapped to upto 32 counters
|
are 100+ hardware conditions dynamically mapped to up to 32 counters
|
||||||
|
|
||||||
Note that:
|
Note that:
|
||||||
* The ARC 700 PCT does not support interrupts; although HW events may be
|
* The ARC 700 PCT does not support interrupts; although HW events may be
|
||||||
|
@ -35,8 +35,10 @@ config ARC
|
|||||||
select NO_BOOTMEM
|
select NO_BOOTMEM
|
||||||
select OF
|
select OF
|
||||||
select OF_EARLY_FLATTREE
|
select OF_EARLY_FLATTREE
|
||||||
|
select OF_RESERVED_MEM
|
||||||
select PERF_USE_VMALLOC
|
select PERF_USE_VMALLOC
|
||||||
select HAVE_DEBUG_STACKOVERFLOW
|
select HAVE_DEBUG_STACKOVERFLOW
|
||||||
|
select HAVE_GENERIC_DMA_COHERENT
|
||||||
|
|
||||||
config MIGHT_HAVE_PCI
|
config MIGHT_HAVE_PCI
|
||||||
bool
|
bool
|
||||||
|
@ -18,6 +18,12 @@
|
|||||||
#define STATUS_AD_MASK (1<<STATUS_AD_BIT)
|
#define STATUS_AD_MASK (1<<STATUS_AD_BIT)
|
||||||
#define STATUS_IE_MASK (1<<STATUS_IE_BIT)
|
#define STATUS_IE_MASK (1<<STATUS_IE_BIT)
|
||||||
|
|
||||||
|
/* status32 Bits as encoded/expected by CLRI/SETI */
|
||||||
|
#define CLRI_STATUS_IE_BIT 4
|
||||||
|
|
||||||
|
#define CLRI_STATUS_E_MASK 0xF
|
||||||
|
#define CLRI_STATUS_IE_MASK (1 << CLRI_STATUS_IE_BIT)
|
||||||
|
|
||||||
#define AUX_USER_SP 0x00D
|
#define AUX_USER_SP 0x00D
|
||||||
#define AUX_IRQ_CTRL 0x00E
|
#define AUX_IRQ_CTRL 0x00E
|
||||||
#define AUX_IRQ_ACT 0x043 /* Active Intr across all levels */
|
#define AUX_IRQ_ACT 0x043 /* Active Intr across all levels */
|
||||||
@ -100,6 +106,13 @@ static inline long arch_local_save_flags(void)
|
|||||||
:
|
:
|
||||||
: "memory");
|
: "memory");
|
||||||
|
|
||||||
|
/* To be compatible with irq_save()/irq_restore()
|
||||||
|
* encode the irq bits as expected by CLRI/SETI
|
||||||
|
* (this was needed to make CONFIG_TRACE_IRQFLAGS work)
|
||||||
|
*/
|
||||||
|
temp = (1 << 5) |
|
||||||
|
((!!(temp & STATUS_IE_MASK)) << CLRI_STATUS_IE_BIT) |
|
||||||
|
(temp & CLRI_STATUS_E_MASK);
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,7 +121,7 @@ static inline long arch_local_save_flags(void)
|
|||||||
*/
|
*/
|
||||||
static inline int arch_irqs_disabled_flags(unsigned long flags)
|
static inline int arch_irqs_disabled_flags(unsigned long flags)
|
||||||
{
|
{
|
||||||
return !(flags & (STATUS_IE_MASK));
|
return !(flags & CLRI_STATUS_IE_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int arch_irqs_disabled(void)
|
static inline int arch_irqs_disabled(void)
|
||||||
@ -128,11 +141,32 @@ static inline void arc_softirq_clear(int irq)
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||||
|
|
||||||
|
.macro TRACE_ASM_IRQ_DISABLE
|
||||||
|
bl trace_hardirqs_off
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro TRACE_ASM_IRQ_ENABLE
|
||||||
|
bl trace_hardirqs_on
|
||||||
|
.endm
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
.macro TRACE_ASM_IRQ_DISABLE
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro TRACE_ASM_IRQ_ENABLE
|
||||||
|
.endm
|
||||||
|
|
||||||
|
#endif
|
||||||
.macro IRQ_DISABLE scratch
|
.macro IRQ_DISABLE scratch
|
||||||
clri
|
clri
|
||||||
|
TRACE_ASM_IRQ_DISABLE
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro IRQ_ENABLE scratch
|
.macro IRQ_ENABLE scratch
|
||||||
|
TRACE_ASM_IRQ_ENABLE
|
||||||
seti
|
seti
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
@ -69,8 +69,11 @@ ENTRY(handle_interrupt)
|
|||||||
|
|
||||||
clri ; To make status32.IE agree with CPU internal state
|
clri ; To make status32.IE agree with CPU internal state
|
||||||
|
|
||||||
lr r0, [ICAUSE]
|
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||||
|
TRACE_ASM_IRQ_DISABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
lr r0, [ICAUSE]
|
||||||
mov blink, ret_from_exception
|
mov blink, ret_from_exception
|
||||||
|
|
||||||
b.d arch_do_IRQ
|
b.d arch_do_IRQ
|
||||||
@ -169,6 +172,11 @@ END(EV_TLBProtV)
|
|||||||
|
|
||||||
.Lrestore_regs:
|
.Lrestore_regs:
|
||||||
|
|
||||||
|
# Interrpts are actually disabled from this point on, but will get
|
||||||
|
# reenabled after we return from interrupt/exception.
|
||||||
|
# But irq tracer needs to be told now...
|
||||||
|
TRACE_ASM_IRQ_ENABLE
|
||||||
|
|
||||||
ld r0, [sp, PT_status32] ; U/K mode at time of entry
|
ld r0, [sp, PT_status32] ; U/K mode at time of entry
|
||||||
lr r10, [AUX_IRQ_ACT]
|
lr r10, [AUX_IRQ_ACT]
|
||||||
|
|
||||||
|
@ -341,6 +341,9 @@ END(call_do_page_fault)
|
|||||||
|
|
||||||
.Lrestore_regs:
|
.Lrestore_regs:
|
||||||
|
|
||||||
|
# Interrpts are actually disabled from this point on, but will get
|
||||||
|
# reenabled after we return from interrupt/exception.
|
||||||
|
# But irq tracer needs to be told now...
|
||||||
TRACE_ASM_IRQ_ENABLE
|
TRACE_ASM_IRQ_ENABLE
|
||||||
|
|
||||||
lr r10, [status32]
|
lr r10, [status32]
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#ifdef CONFIG_BLK_DEV_INITRD
|
#ifdef CONFIG_BLK_DEV_INITRD
|
||||||
#include <linux/initrd.h>
|
#include <linux/initrd.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <linux/of_fdt.h>
|
||||||
#include <linux/swap.h>
|
#include <linux/swap.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/highmem.h>
|
#include <linux/highmem.h>
|
||||||
@ -136,6 +137,9 @@ void __init setup_arch_memory(void)
|
|||||||
memblock_reserve(__pa(initrd_start), initrd_end - initrd_start);
|
memblock_reserve(__pa(initrd_start), initrd_end - initrd_start);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
early_init_fdt_reserve_self();
|
||||||
|
early_init_fdt_scan_reserved_mem();
|
||||||
|
|
||||||
memblock_dump_all();
|
memblock_dump_all();
|
||||||
|
|
||||||
/*----------------- node/zones setup --------------------------*/
|
/*----------------- node/zones setup --------------------------*/
|
||||||
|
Reference in New Issue
Block a user