svn commit: r302849 - head/sys/arm64/arm64

Andrew Turner andrew at FreeBSD.org
Thu Jul 14 17:10:56 UTC 2016


Author: andrew
Date: Thu Jul 14 17:10:54 2016
New Revision: 302849
URL: https://svnweb.freebsd.org/changeset/base/302849

Log:
  Move structures only used by the GICv3 ITS driver from a shared header to
  the ITS driver file. There is no need for other drivers to need to know
  about these structures.
  
  Obtained from:	ABT Systems Ltd
  MFC after:	1 month
  Sponsored by:	The FreeBSD Foundation

Modified:
  head/sys/arm64/arm64/gic_v3_var.h
  head/sys/arm64/arm64/gicv3_its.c

Modified: head/sys/arm64/arm64/gic_v3_var.h
==============================================================================
--- head/sys/arm64/arm64/gic_v3_var.h	Thu Jul 14 17:05:25 2016	(r302848)
+++ head/sys/arm64/arm64/gic_v3_var.h	Thu Jul 14 17:10:54 2016	(r302849)
@@ -108,87 +108,6 @@ void gic_r_write_4(device_t, bus_size_t,
 void gic_r_write_8(device_t, bus_size_t, uint64_t var);
 
 /*
- * ITS
- */
-
-/* LPI chunk owned by ITS device */
-struct lpi_chunk {
-	u_int	lpi_base;
-	u_int	lpi_free;	/* First free LPI in set */
-	u_int	lpi_num;	/* Total number of LPIs in chunk */
-	u_int	lpi_busy;	/* Number of busy LPIs in chink */
-};
-
-/* ITS device */
-struct its_dev {
-	TAILQ_ENTRY(its_dev)	entry;
-	/* PCI device */
-	device_t		pci_dev;
-	/* Device ID (i.e. PCI device ID) */
-	uint32_t		devid;
-	/* List of assigned LPIs */
-	struct lpi_chunk	lpis;
-	/* Virtual address of ITT */
-	vm_offset_t		itt;
-	size_t			itt_size;
-};
-
-/*
- * ITS command descriptor.
- * Idea for command description passing taken from Linux.
- */
-struct its_cmd_desc {
-	uint8_t cmd_type;
-
-	union {
-		struct {
-			struct its_dev *its_dev;
-			struct its_col *col;
-			uint32_t id;
-		} cmd_desc_movi;
-
-		struct {
-			struct its_col *col;
-		} cmd_desc_sync;
-
-		struct {
-			struct its_col *col;
-			uint8_t valid;
-		} cmd_desc_mapc;
-
-		struct {
-			struct its_dev *its_dev;
-			struct its_col *col;
-			uint32_t pid;
-			uint32_t id;
-		} cmd_desc_mapvi;
-
-		struct {
-			struct its_dev *its_dev;
-			struct its_col *col;
-			uint32_t pid;
-		} cmd_desc_mapi;
-
-		struct {
-			struct its_dev *its_dev;
-			uint8_t valid;
-		} cmd_desc_mapd;
-
-		struct {
-			struct its_dev *its_dev;
-			struct its_col *col;
-			uint32_t pid;
-		} cmd_desc_inv;
-
-		struct {
-			struct its_col *col;
-		} cmd_desc_invall;
-	};
-};
-
-#define	ITS_TARGET_NONE		0xFBADBEEF
-
-/*
  * GIC Distributor accessors.
  * Notice that only GIC sofc can be passed.
  */

Modified: head/sys/arm64/arm64/gicv3_its.c
==============================================================================
--- head/sys/arm64/arm64/gicv3_its.c	Thu Jul 14 17:05:25 2016	(r302848)
+++ head/sys/arm64/arm64/gicv3_its.c	Thu Jul 14 17:10:54 2016	(r302849)
@@ -123,6 +123,83 @@ MALLOC_DEFINE(M_GICV3_ITS, "GICv3 ITS",
 #define	CMD_VALID_SHIFT		(63)
 #define	CMD_VALID_MASK		(1UL << CMD_VALID_SHIFT)
 
+#define	ITS_TARGET_NONE		0xFBADBEEF
+
+/* LPI chunk owned by ITS device */
+struct lpi_chunk {
+	u_int	lpi_base;
+	u_int	lpi_free;	/* First free LPI in set */
+	u_int	lpi_num;	/* Total number of LPIs in chunk */
+	u_int	lpi_busy;	/* Number of busy LPIs in chink */
+};
+
+/* ITS device */
+struct its_dev {
+	TAILQ_ENTRY(its_dev)	entry;
+	/* PCI device */
+	device_t		pci_dev;
+	/* Device ID (i.e. PCI device ID) */
+	uint32_t		devid;
+	/* List of assigned LPIs */
+	struct lpi_chunk	lpis;
+	/* Virtual address of ITT */
+	vm_offset_t		itt;
+	size_t			itt_size;
+};
+
+/*
+ * ITS command descriptor.
+ * Idea for command description passing taken from Linux.
+ */
+struct its_cmd_desc {
+	uint8_t cmd_type;
+
+	union {
+		struct {
+			struct its_dev *its_dev;
+			struct its_col *col;
+			uint32_t id;
+		} cmd_desc_movi;
+
+		struct {
+			struct its_col *col;
+		} cmd_desc_sync;
+
+		struct {
+			struct its_col *col;
+			uint8_t valid;
+		} cmd_desc_mapc;
+
+		struct {
+			struct its_dev *its_dev;
+			struct its_col *col;
+			uint32_t pid;
+			uint32_t id;
+		} cmd_desc_mapvi;
+
+		struct {
+			struct its_dev *its_dev;
+			struct its_col *col;
+			uint32_t pid;
+		} cmd_desc_mapi;
+
+		struct {
+			struct its_dev *its_dev;
+			uint8_t valid;
+		} cmd_desc_mapd;
+
+		struct {
+			struct its_dev *its_dev;
+			struct its_col *col;
+			uint32_t pid;
+		} cmd_desc_inv;
+
+		struct {
+			struct its_col *col;
+		} cmd_desc_invall;
+	};
+};
+
 /* ITS command. Each command is 32 bytes long */
 struct its_cmd {
 	uint64_t	cmd_dword[4];	/* ITS command double word */


More information about the svn-src-head mailing list