[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [PATCH anaconda/master] Add support to determine the ARM processor variety and select the correct kernel to install.



Signed-off-by: David A. Marlin <dmarlin redhat com>
---
diff --git a/pyanaconda/iutil.py b/pyanaconda/iutil.py
index 8fe818d..b0d9adc 100644
--- a/pyanaconda/iutil.py
+++ b/pyanaconda/iutil.py
@@ -621,6 +621,42 @@ def getPPCMacBook():
         return 1
     return 0
 
+## Get the ARM processor variety.
+# @return The ARM processor variety type, or 0 if not ARM.
+def getARMMachine():
+    if not isARM():
+        return 0
+
+    armMachine = None
+    machine = None
+
+    # ARM machine hash
+    armType = {
+                'OMAP'                : 'omap',
+                'trimslice'           : 'tegra',
+                'Marvell Armada XP'   : 'mvebu',
+                'Marvell GuruPlug'    : 'kirkwood',
+                'Efika MX'            : 'imx',
+                'Highbank'            : 'highbank',
+              }
+
+    f = open('/proc/cpuinfo', 'r')
+    lines = f.readlines()
+    f.close()
+    for line in lines:
+        if line.find('Hardware') != -1:
+            machine = line.split(':')[1]
+            break
+
+    if machine is not None:
+        for type in armType.items():
+            if machine.find(type[0]) != -1:
+                armMachine = type[1]
+                break
+
+    return armMachine
+
+
 cell = None
 ## Determine if the hardware is the Cell platform.
 # @return True if so, False otherwise.
diff --git a/pyanaconda/platform.py b/pyanaconda/platform.py
index 8870374..1611797 100644
--- a/pyanaconda/platform.py
+++ b/pyanaconda/platform.py
@@ -335,6 +335,7 @@ class Sparc(Platform):
         return start+1
 
 class ARM(Platform):
+    _armMachine = iutil.getARMMachine()
     _bootloaderClass = bootloader.GRUB2
     _boot_stage1_device_types = ["disk"]
     _boot_mbr_description = N_("Master Boot Record")
@@ -343,6 +344,10 @@ class ARM(Platform):
 
     _disklabel_types = ["msdos"]
 
+    @property
+    def armMachine(self):
+        return self._armMachine
+
 def getPlatform(anaconda):
     """Check the architecture of the system and return an instance of a
        Platform subclass to match.  If the architecture could not be determined,
diff --git a/pyanaconda/yuminstall.py b/pyanaconda/yuminstall.py
index 0ca534b..63d077d 100644
--- a/pyanaconda/yuminstall.py
+++ b/pyanaconda/yuminstall.py
@@ -1465,6 +1465,11 @@ reposdir=/etc/anaconda.repos.d,/tmp/updates/anaconda.repos.d,/tmp/product/anacon
             if selectKernel("kernel-PAE"):
                 foundkernel = True
 
+        if not foundkernel and iutil.isARM():
+            if anaconda.platform.armMachine is not None:
+                selectKernel("kernel-" + anaconda.platform.armMachine)
+                foundkernel = True
+
         if not foundkernel:
             selectKernel("kernel")
 

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]