svn commit: r231022 - stable/9/sys/powerpc/ps3

Nathan Whitehorn nwhitehorn at FreeBSD.org
Sun Feb 5 16:17:15 UTC 2012


Author: nwhitehorn
Date: Sun Feb  5 16:17:14 2012
New Revision: 231022
URL: http://svn.freebsd.org/changeset/base/231022

Log:
  Pick a constant high IRQ value for the PS3 IPI, which lets PS3 devices be
  usefully loaded and unloaded as modules.
  
  Submitted by:	geoffrey dot levand at mail dot ru

Modified:
  stable/9/sys/powerpc/ps3/ps3pic.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/amd64/include/xen/   (props changed)
  stable/9/sys/boot/   (props changed)
  stable/9/sys/boot/i386/efi/   (props changed)
  stable/9/sys/boot/ia64/efi/   (props changed)
  stable/9/sys/boot/ia64/ski/   (props changed)
  stable/9/sys/boot/powerpc/boot1.chrp/   (props changed)
  stable/9/sys/boot/powerpc/ofw/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)
  stable/9/sys/conf/   (props changed)
  stable/9/sys/contrib/dev/acpica/   (props changed)
  stable/9/sys/contrib/octeon-sdk/   (props changed)
  stable/9/sys/contrib/pf/   (props changed)
  stable/9/sys/contrib/x86emu/   (props changed)
  stable/9/sys/modules/sound/driver/emu10k1/   (props changed)
  stable/9/sys/modules/sound/driver/emu10kx/   (props changed)
  stable/9/sys/modules/sound/driver/maestro3/   (props changed)

Modified: stable/9/sys/powerpc/ps3/ps3pic.c
==============================================================================
--- stable/9/sys/powerpc/ps3/ps3pic.c	Sun Feb  5 16:14:23 2012	(r231021)
+++ stable/9/sys/powerpc/ps3/ps3pic.c	Sun Feb  5 16:17:14 2012	(r231022)
@@ -62,6 +62,7 @@ struct ps3pic_softc {
 	volatile uint64_t *mask_thread1;
 
 	uint64_t	sc_ipi_outlet[2];
+	uint64_t	sc_ipi_virq;
 	int		sc_vector[64];
 };
 
@@ -131,20 +132,23 @@ ps3pic_attach(device_t dev)
 	thread = 32 - fls(mfctrl());
 	lv1_configure_irq_state_bitmap(ppe, thread,
 	    vtophys(sc->bitmap_thread0));
+
+	sc->sc_ipi_virq = 63;
+
 #ifdef SMP
 	lv1_configure_irq_state_bitmap(ppe, !thread,
 	    vtophys(sc->bitmap_thread1));
 
 	/* Map both IPIs to the same VIRQ to avoid changes in intr_machdep */
 	lv1_construct_event_receive_port(&sc->sc_ipi_outlet[0]);
-	lv1_connect_irq_plug_ext(ppe, thread, sc->sc_ipi_outlet[0],
+	lv1_connect_irq_plug_ext(ppe, thread, sc->sc_ipi_virq,
 	    sc->sc_ipi_outlet[0], 0);
 	lv1_construct_event_receive_port(&sc->sc_ipi_outlet[1]);
-	lv1_connect_irq_plug_ext(ppe, !thread, sc->sc_ipi_outlet[0],
+	lv1_connect_irq_plug_ext(ppe, !thread, sc->sc_ipi_virq,
 	    sc->sc_ipi_outlet[1], 0);
 #endif
 
-	powerpc_register_pic(dev, 0, sc->sc_ipi_outlet[0], 1, FALSE);
+	powerpc_register_pic(dev, 0, sc->sc_ipi_virq, 1, FALSE);
 	return (0);
 }
 
@@ -216,7 +220,7 @@ ps3pic_mask(device_t dev, u_int irq)
 	sc = device_get_softc(dev);
 
 	/* Do not mask IPIs! */
-	if (irq == sc->sc_ipi_outlet[0])
+	if (irq == sc->sc_ipi_virq)
 		return;
 
 	atomic_clear_64(&sc->mask_thread0[0], 1UL << (63 - irq));


More information about the svn-src-stable-9 mailing list