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

Commit 12a37b5e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
  sparc64: Fix crash with /proc/iomem
  sparc64: Reschedule KGDB capture to a software interrupt.
  sbus: Auto-load openprom module when device opened.
parents 53da1d94 0702b30d
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@
#define PIL_DEVICE_IRQ		5
#define PIL_DEVICE_IRQ		5
#define PIL_SMP_CALL_FUNC_SNGL	6
#define PIL_SMP_CALL_FUNC_SNGL	6
#define PIL_DEFERRED_PCR_WORK	7
#define PIL_DEFERRED_PCR_WORK	7
#define PIL_KGDB_CAPTURE	8
#define PIL_NORMAL_MAX		14
#define PIL_NORMAL_MAX		14
#define PIL_NMI			15
#define PIL_NMI			15


+1 −1
Original line number Original line Diff line number Diff line
@@ -108,7 +108,7 @@ void gdb_regs_to_pt_regs(unsigned long *gdb_regs, struct pt_regs *regs)
}
}


#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
void smp_kgdb_capture_client(struct pt_regs *regs)
void smp_kgdb_capture_client(int irq, struct pt_regs *regs)
{
{
	unsigned long flags;
	unsigned long flags;


+1 −1
Original line number Original line Diff line number Diff line
@@ -368,7 +368,7 @@ static void pci_register_iommu_region(struct pci_pbm_info *pbm)
	const u32 *vdma = of_get_property(pbm->op->node, "virtual-dma", NULL);
	const u32 *vdma = of_get_property(pbm->op->node, "virtual-dma", NULL);


	if (vdma) {
	if (vdma) {
		struct resource *rp = kmalloc(sizeof(*rp), GFP_KERNEL);
		struct resource *rp = kzalloc(sizeof(*rp), GFP_KERNEL);


		if (!rp) {
		if (!rp) {
			prom_printf("Cannot allocate IOMMU resource.\n");
			prom_printf("Cannot allocate IOMMU resource.\n");
+6 −1
Original line number Original line Diff line number Diff line
@@ -64,7 +64,12 @@ tl0_irq6: TRAP_IRQ(smp_call_function_single_client, 6)
tl0_irq6:	BTRAP(0x46)
tl0_irq6:	BTRAP(0x46)
#endif
#endif
tl0_irq7:	TRAP_IRQ(deferred_pcr_work_irq, 7)
tl0_irq7:	TRAP_IRQ(deferred_pcr_work_irq, 7)
tl0_irq8:	BTRAP(0x48) BTRAP(0x49)
#ifdef CONFIG_KGDB
tl0_irq8:	TRAP_IRQ(smp_kgdb_capture_client, 8)
#else
tl0_irq8:	BTRAP(0x48)
#endif
tl0_irq9:	BTRAP(0x49)
tl0_irq10:	BTRAP(0x4a) BTRAP(0x4b) BTRAP(0x4c) BTRAP(0x4d)
tl0_irq10:	BTRAP(0x4a) BTRAP(0x4b) BTRAP(0x4c) BTRAP(0x4d)
tl0_irq14:	TRAP_IRQ(timer_interrupt, 14)
tl0_irq14:	TRAP_IRQ(timer_interrupt, 14)
tl0_irq15:	TRAP_NMI_IRQ(perfctr_irq, 15)
tl0_irq15:	TRAP_NMI_IRQ(perfctr_irq, 15)
+2 −22
Original line number Original line Diff line number Diff line
@@ -679,28 +679,8 @@ xcall_new_mmu_context_version:
#ifdef CONFIG_KGDB
#ifdef CONFIG_KGDB
	.globl		xcall_kgdb_capture
	.globl		xcall_kgdb_capture
xcall_kgdb_capture:
xcall_kgdb_capture:
661:	rdpr		%pstate, %g2
	wr		%g0, (1 << PIL_KGDB_CAPTURE), %set_softint
	wrpr		%g2, PSTATE_IG | PSTATE_AG, %pstate
	retry
	.section	.sun4v_2insn_patch, "ax"
	.word		661b
	nop
	nop
	.previous

	rdpr		%pil, %g2
	wrpr		%g0, PIL_NORMAL_MAX, %pil
	sethi		%hi(109f), %g7
	ba,pt		%xcc, etrap_irq
109:	 or		%g7, %lo(109b), %g7
#ifdef CONFIG_TRACE_IRQFLAGS
	call		trace_hardirqs_off
	 nop
#endif
	call		smp_kgdb_capture_client
	 add		%sp, PTREGS_OFF, %o0
	/* Has to be a non-v9 branch due to the large distance. */
	ba		rtrap_xcall
	 ldx		[%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
#endif
#endif


#endif /* CONFIG_SMP */
#endif /* CONFIG_SMP */
Loading