Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Jul 2015 11:59:44 +0000 (UTC)
From:      Zbigniew Bodek <zbb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r285533 - head/sys/arm64/arm64
Message-ID:  <201507141159.t6EBxioW053506@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: zbb
Date: Tue Jul 14 11:59:43 2015
New Revision: 285533
URL: https://svnweb.freebsd.org/changeset/base/285533

Log:
  Fix intr_machdep.c for ARM64
  
  On ARMv8 IPIs are mapped to 0-15. Incrementing the number by 16
  is wrong, because it sets a reserved bit in the IPI register.
  This patch removes all "+16" to comply with specs.
  
  Obtained from: Semihalf
  Sponsored by:  The FreeBSD Foundation
  Differential Revision: https://reviews.freebsd.org/D3029

Modified:
  head/sys/arm64/arm64/intr_machdep.c

Modified: head/sys/arm64/arm64/intr_machdep.c
==============================================================================
--- head/sys/arm64/arm64/intr_machdep.c	Tue Jul 14 11:37:26 2015	(r285532)
+++ head/sys/arm64/arm64/intr_machdep.c	Tue Jul 14 11:59:43 2015	(r285533)
@@ -451,8 +451,7 @@ void
 arm_setup_ipihandler(driver_filter_t *filt, u_int ipi)
 {
 
-	/* ARM64TODO: The hard coded 16 will be fixed with am_intrng */
-	arm_setup_intr("ipi", filt, NULL, (void *)((uintptr_t)ipi | 1<<16), ipi + 16,
+	arm_setup_intr("ipi", filt, NULL, (void *)((uintptr_t)ipi | 1<<16), ipi,
 	    INTR_TYPE_MISC | INTR_EXCL, NULL);
 	arm_unmask_ipi(ipi);
 }
@@ -460,7 +459,8 @@ arm_setup_ipihandler(driver_filter_t *fi
 void
 arm_unmask_ipi(u_int ipi)
 {
-	PIC_UNMASK(root_pic, ipi + 16);
+
+	PIC_UNMASK(root_pic, ipi);
 }
 
 void
@@ -494,9 +494,6 @@ ipi_cpu(int cpu, u_int ipi)
 	CPU_ZERO(&cpus);
 	CPU_SET(cpu, &cpus);
 
-	/* ARM64TODO: This will be fixed with arm_intrng */
-	ipi += 16;
-
 	CTR2(KTR_SMP, "ipi_cpu: cpu: %d, ipi: %x", cpu, ipi);
 	PIC_IPI_SEND(root_pic, cpus, ipi);
 }
@@ -505,9 +502,6 @@ void
 ipi_selected(cpuset_t cpus, u_int ipi)
 {
 
-	/* ARM64TODO: This will be fixed with arm_intrng */
-	ipi += 16;
-
 	CTR1(KTR_SMP, "ipi_selected: ipi: %x", ipi);
 	PIC_IPI_SEND(root_pic, cpus, ipi);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201507141159.t6EBxioW053506>