powerpc/pseries: Move architecture vector definitions to prom.h
authorNathan Fontenot <nfont@linux.vnet.ibm.com>
Wed, 24 Apr 2013 05:53:10 +0000 (05:53 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 26 Apr 2013 06:08:21 +0000 (16:08 +1000)
As part of handling of PRRN events we need to check vector 5 of the
architecture vector bits reported in the device tree to ensure PRRN event
handling is enabled. To do this firmware_has_feature() is updated (in a
subsequent patch) to make this check vector 5 bits. To avoid having to
re-define bits in the architecture vector the bit definitions are moved
to prom.h.

Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/include/asm/prom.h
arch/powerpc/kernel/prom_init.c

index 99c92d5..811b780 100644 (file)
@@ -74,6 +74,77 @@ struct of_drconf_cell {
 #define DRCONF_MEM_AI_INVALID  0x00000040
 #define DRCONF_MEM_RESERVED    0x00000080
 
+/*
+ * There are two methods for telling firmware what our capabilities are.
+ * Newer machines have an "ibm,client-architecture-support" method on the
+ * root node.  For older machines, we have to call the "process-elf-header"
+ * method in the /packages/elf-loader node, passing it a fake 32-bit
+ * ELF header containing a couple of PT_NOTE sections that contain
+ * structures that contain various information.
+ */
+
+/* New method - extensible architecture description vector. */
+
+/* Option vector bits - generic bits in byte 1 */
+#define OV_IGNORE              0x80    /* ignore this vector */
+#define OV_CESSATION_POLICY    0x40    /* halt if unsupported option present*/
+
+/* Option vector 1: processor architectures supported */
+#define OV1_PPC_2_00           0x80    /* set if we support PowerPC 2.00 */
+#define OV1_PPC_2_01           0x40    /* set if we support PowerPC 2.01 */
+#define OV1_PPC_2_02           0x20    /* set if we support PowerPC 2.02 */
+#define OV1_PPC_2_03           0x10    /* set if we support PowerPC 2.03 */
+#define OV1_PPC_2_04           0x08    /* set if we support PowerPC 2.04 */
+#define OV1_PPC_2_05           0x04    /* set if we support PowerPC 2.05 */
+#define OV1_PPC_2_06           0x02    /* set if we support PowerPC 2.06 */
+#define OV1_PPC_2_07           0x01    /* set if we support PowerPC 2.07 */
+
+/* Option vector 2: Open Firmware options supported */
+#define OV2_REAL_MODE          0x20    /* set if we want OF in real mode */
+
+/* Option vector 3: processor options supported */
+#define OV3_FP                 0x80    /* floating point */
+#define OV3_VMX                        0x40    /* VMX/Altivec */
+#define OV3_DFP                        0x20    /* decimal FP */
+
+/* Option vector 4: IBM PAPR implementation */
+#define OV4_MIN_ENT_CAP                0x01    /* minimum VP entitled capacity */
+
+/* Option vector 5: PAPR/OF options supported */
+#define OV5_LPAR               0x80    /* logical partitioning supported */
+#define OV5_SPLPAR             0x40    /* shared-processor LPAR supported */
+/* ibm,dynamic-reconfiguration-memory property supported */
+#define OV5_DRCONF_MEMORY      0x20
+#define OV5_LARGE_PAGES                0x10    /* large pages supported */
+#define OV5_DONATE_DEDICATE_CPU        0x02    /* donate dedicated CPU support */
+/* PCIe/MSI support.  Without MSI full PCIe is not supported */
+#ifdef CONFIG_PCI_MSI
+#define OV5_MSI                        0x01    /* PCIe/MSI support */
+#else
+#define OV5_MSI                        0x00
+#endif /* CONFIG_PCI_MSI */
+#ifdef CONFIG_PPC_SMLPAR
+#define OV5_CMO                        0x80    /* Cooperative Memory Overcommitment */
+#define OV5_XCMO               0x40    /* Page Coalescing */
+#else
+#define OV5_CMO                        0x00
+#define OV5_XCMO               0x00
+#endif
+#define OV5_TYPE1_AFFINITY     0x80    /* Type 1 NUMA affinity */
+#define OV5_PFO_HW_RNG         0x80    /* PFO Random Number Generator */
+#define OV5_PFO_HW_842         0x40    /* PFO Compression Accelerator */
+#define OV5_PFO_HW_ENCR                0x20    /* PFO Encryption Accelerator */
+#define OV5_SUB_PROCESSORS     0x01    /* 1,2,or 4 Sub-Processors supported */
+
+/* Option Vector 6: IBM PAPR hints */
+#define OV6_LINUX              0x02    /* Linux is our OS */
+
+/*
+ * The architecture vector has an array of PVR mask/value pairs,
+ * followed by # option vectors - 1, followed by the option vectors.
+ */
+extern unsigned char ibm_architecture_vec[];
+
 /* These includes are put at the bottom because they may contain things
  * that are overridden by this file.  Ideally they shouldn't be included
  * by this file, but there are a bunch of .c files that currently depend
index 13f8d16..4a9e50c 100644 (file)
@@ -627,16 +627,11 @@ static void __init early_cmdline_parse(void)
 
 #if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV)
 /*
- * There are two methods for telling firmware what our capabilities are.
- * Newer machines have an "ibm,client-architecture-support" method on the
- * root node.  For older machines, we have to call the "process-elf-header"
- * method in the /packages/elf-loader node, passing it a fake 32-bit
- * ELF header containing a couple of PT_NOTE sections that contain
- * structures that contain various information.
- */
-
-/*
- * New method - extensible architecture description vector.
+ * The architecture vector has an array of PVR mask/value pairs,
+ * followed by # option vectors - 1, followed by the option vectors.
+ *
+ * See prom.h for the definition of the bits specified in the
+ * architecture vector.
  *
  * Because the description vector contains a mix of byte and word
  * values, we declare it as an unsigned char array, and use this
@@ -645,65 +640,7 @@ static void __init early_cmdline_parse(void)
 #define W(x)   ((x) >> 24) & 0xff, ((x) >> 16) & 0xff, \
                ((x) >> 8) & 0xff, (x) & 0xff
 
-/* Option vector bits - generic bits in byte 1 */
-#define OV_IGNORE              0x80    /* ignore this vector */
-#define OV_CESSATION_POLICY    0x40    /* halt if unsupported option present*/
-
-/* Option vector 1: processor architectures supported */
-#define OV1_PPC_2_00           0x80    /* set if we support PowerPC 2.00 */
-#define OV1_PPC_2_01           0x40    /* set if we support PowerPC 2.01 */
-#define OV1_PPC_2_02           0x20    /* set if we support PowerPC 2.02 */
-#define OV1_PPC_2_03           0x10    /* set if we support PowerPC 2.03 */
-#define OV1_PPC_2_04           0x08    /* set if we support PowerPC 2.04 */
-#define OV1_PPC_2_05           0x04    /* set if we support PowerPC 2.05 */
-#define OV1_PPC_2_06           0x02    /* set if we support PowerPC 2.06 */
-#define OV1_PPC_2_07           0x01    /* set if we support PowerPC 2.07 */
-
-/* Option vector 2: Open Firmware options supported */
-#define OV2_REAL_MODE          0x20    /* set if we want OF in real mode */
-
-/* Option vector 3: processor options supported */
-#define OV3_FP                 0x80    /* floating point */
-#define OV3_VMX                        0x40    /* VMX/Altivec */
-#define OV3_DFP                        0x20    /* decimal FP */
-
-/* Option vector 4: IBM PAPR implementation */
-#define OV4_MIN_ENT_CAP                0x01    /* minimum VP entitled capacity */
-
-/* Option vector 5: PAPR/OF options supported */
-#define OV5_LPAR               0x80    /* logical partitioning supported */
-#define OV5_SPLPAR             0x40    /* shared-processor LPAR supported */
-/* ibm,dynamic-reconfiguration-memory property supported */
-#define OV5_DRCONF_MEMORY      0x20
-#define OV5_LARGE_PAGES                0x10    /* large pages supported */
-#define OV5_DONATE_DEDICATE_CPU 0x02   /* donate dedicated CPU support */
-/* PCIe/MSI support.  Without MSI full PCIe is not supported */
-#ifdef CONFIG_PCI_MSI
-#define OV5_MSI                        0x01    /* PCIe/MSI support */
-#else
-#define OV5_MSI                        0x00
-#endif /* CONFIG_PCI_MSI */
-#ifdef CONFIG_PPC_SMLPAR
-#define OV5_CMO                        0x80    /* Cooperative Memory Overcommitment */
-#define OV5_XCMO                       0x40    /* Page Coalescing */
-#else
-#define OV5_CMO                        0x00
-#define OV5_XCMO                       0x00
-#endif
-#define OV5_TYPE1_AFFINITY     0x80    /* Type 1 NUMA affinity */
-#define OV5_PFO_HW_RNG         0x80    /* PFO Random Number Generator */
-#define OV5_PFO_HW_842         0x40    /* PFO Compression Accelerator */
-#define OV5_PFO_HW_ENCR                0x20    /* PFO Encryption Accelerator */
-#define OV5_SUB_PROCESSORS     0x01    /* 1,2,or 4 Sub-Processors supported */
-
-/* Option Vector 6: IBM PAPR hints */
-#define OV6_LINUX              0x02    /* Linux is our OS */
-
-/*
- * The architecture vector has an array of PVR mask/value pairs,
- * followed by # option vectors - 1, followed by the option vectors.
- */
-static unsigned char ibm_architecture_vec[] = {
+unsigned char ibm_architecture_vec[] = {
        W(0xfffe0000), W(0x003a0000),   /* POWER5/POWER5+ */
        W(0xffff0000), W(0x003e0000),   /* POWER6 */
        W(0xffff0000), W(0x003f0000),   /* POWER7 */