Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Feb 2016 12:01:33 +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: r295517 - head/sys/arm64/arm64
Message-ID:  <201602111201.u1BC1XXv050534@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: zbb
Date: Thu Feb 11 12:01:33 2016
New Revision: 295517
URL: https://svnweb.freebsd.org/changeset/base/295517

Log:
  Initially bind all interrupts to the boot CPU when using GICv3
  
  This should be done by routing all interrupts to CPU0,
  different assignment will be induced by either interrupts
  shuffling or bus_bind_intr().
  
  Reviewed by:   wma
  Obtained from: Semihalf
  Sponsored by:  Cavium
  Differential Revision: https://reviews.freebsd.org/D5229

Modified:
  head/sys/arm64/arm64/gic_v3.c
  head/sys/arm64/arm64/gic_v3_its.c

Modified: head/sys/arm64/arm64/gic_v3.c
==============================================================================
--- head/sys/arm64/arm64/gic_v3.c	Thu Feb 11 11:59:32 2016	(r295516)
+++ head/sys/arm64/arm64/gic_v3.c	Thu Feb 11 12:01:33 2016	(r295517)
@@ -565,7 +565,7 @@ gic_v3_dist_init(struct gic_v3_softc *sc
 	/*
 	 * 4. Route all interrupts to boot CPU.
 	 */
-	aff = CPU_AFFINITY(PCPU_GET(cpuid));
+	aff = CPU_AFFINITY(0);
 	for (i = GIC_FIRST_SPI; i < sc->gic_nirqs; i++)
 		gic_d_write(sc, 4, GICD_IROUTER(i), aff);
 

Modified: head/sys/arm64/arm64/gic_v3_its.c
==============================================================================
--- head/sys/arm64/arm64/gic_v3_its.c	Thu Feb 11 11:59:32 2016	(r295516)
+++ head/sys/arm64/arm64/gic_v3_its.c	Thu Feb 11 12:01:33 2016	(r295517)
@@ -1430,10 +1430,10 @@ its_device_alloc_locked(struct gic_v3_it
 	}
 
 	/*
-	 * XXX ARM64TODO: Currently all interrupts are going
-	 * to be bound to the CPU that performs the configuration.
+	 * Initially all interrupts go to CPU0 but can be moved
+	 * to another CPU by bus_bind_intr() or interrupts shuffling.
 	 */
-	cpuid = PCPU_GET(cpuid);
+	cpuid = 0;
 	newdev->col = sc->its_cols[cpuid];
 
 	TAILQ_INSERT_TAIL(&sc->its_dev_list, newdev, entry);



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