From 1cd256dbaf85e4abaf8fb4250e0cb029be43e89a Mon Sep 17 00:00:00 2001 From: Alexandru Avadanii Date: Fri, 2 Jun 2017 18:37:10 +0200 Subject: nailgun-agent: AArch64: Allow platform bus storage While at it, transform all Armband patche for fuel-nailgun-agent into Debian patches. Change-Id: I3147ea151244158d2a4bef875008ef2fa0e49377 Signed-off-by: Alexandru Avadanii --- .../0003-AArch64-Add-CPU-details-detection.patch | 254 ++++++++++++--------- 1 file changed, 146 insertions(+), 108 deletions(-) (limited to 'patches/fuel-nailgun-agent/0003-AArch64-Add-CPU-details-detection.patch') diff --git a/patches/fuel-nailgun-agent/0003-AArch64-Add-CPU-details-detection.patch b/patches/fuel-nailgun-agent/0003-AArch64-Add-CPU-details-detection.patch index 0463023f..d1691d0e 100644 --- a/patches/fuel-nailgun-agent/0003-AArch64-Add-CPU-details-detection.patch +++ b/patches/fuel-nailgun-agent/0003-AArch64-Add-CPU-details-detection.patch @@ -7,7 +7,7 @@ : http://www.apache.org/licenses/LICENSE-2.0 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: From: Alexandru Avadanii -Date: Sun, 15 Jan 2017 08:09:10 +0100 +Date: Fri, 19 May 2017 20:37:13 +0200 Subject: [PATCH] AArch64: Add CPU details detection [ Alexandru Avadanii ] @@ -25,114 +25,152 @@ arm64 CPU, it is just a suggestion. Signed-off-by: Stanislaw Kardach Signed-off-by: Alexandru Avadanii --- - agent | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 90 insertions(+) + .../0003-AArch64-Add-CPU-details-detection.patch | 130 +++++++++++++++++++++ + debian/patches/series | 1 + + 2 files changed, 131 insertions(+) + create mode 100644 debian/patches/0003-AArch64-Add-CPU-details-detection.patch -diff --git a/agent b/agent -index 0c56264..eeb4d26 100755 ---- a/agent -+++ b/agent -@@ -340,6 +340,15 @@ class NodeAgent - end - - def _get_detailed_cpuinfo -+ case `uname -m` -+ when /aarch64.*/ -+ _get_detailed_cpuinfo_for_arm64 -+ else # default to x86 -+ _get_detailed_cpuinfo_for_x86 -+ end -+ end +diff --git a/debian/patches/0003-AArch64-Add-CPU-details-detection.patch b/debian/patches/0003-AArch64-Add-CPU-details-detection.patch +new file mode 100644 +index 0000000..b9f41f7 +--- /dev/null ++++ b/debian/patches/0003-AArch64-Add-CPU-details-detection.patch +@@ -0,0 +1,130 @@ ++From: Alexandru Avadanii ++Date: Sun, 15 Jan 2017 08:09:10 +0100 ++Subject: [PATCH 2/4] AArch64: Add CPU details detection + -+ def _get_detailed_cpuinfo_for_x86 - real = {} - info = {} - info[:total] = 0 -@@ -371,6 +380,87 @@ class NodeAgent - info - end - -+ def _get_detailed_cpuinfo_for_arm64 -+ cpu_implementers = { -+ "0x41" => "ARM", -+ "0x53" => "Samsung", -+ "0x51" => "Qualcom", -+ "0x43" => "Cavium", -+ "0x50" => "APM" -+ } -+ core_models = { -+ "0xd04" => "cortex-a35", -+ "0xd03" => "cortex-a53", -+ "0xd07" => "cortex-a57", -+ "0xd08" => "cortex-a72", -+ "0x001" => "exynos-m1", -+ "0x800" => "qdf24xx", -+ "0x0a1" => "thunderx", -+ "0x000" => "xgene1", -+ "0xd07.0xd03" => "cortex-a57.cortex-a53", -+ "0xd08.0xd03" => "cortex-a72.cortex-a53" -+ } -+ cpuinfo = {} -+ real_cpus = {} -+ cpu_number = -1 -+ current_cpu = nil -+ `dmidecode -t 4 -q`.each_line do |line| -+ case line -+ when /Processor Information/ -+ cpu_number +=1 -+ real_cpus[cpu_number] = {} -+ when /\s*Manufacturer:\s(.+)/ -+ real_cpus[cpu_number][:vendor_id] = $1 -+ when /\s*Family:\s(.+)/ -+ real_cpus[cpu_number][:family] = $1 -+ when /\s*Max Speed:\s(.+)\s*MHz/ -+ real_cpus[cpu_number][:mhz] = $1.strip -+ when /\s*Core Enabled:\s(.+)/ -+ real_cpus[cpu_number][:cores] = $1 -+ end -+ end ++[ Alexandru Avadanii ] ++Based on Stan's previous patch for ohai, extend fuel-nailgun-agent ++to properly support AArch64 CPUs. ++ ++[ Stanislaw Kardach ] ++There is currently little human readable detail in /proc/cpuinfo on ++arm64 so this patch tries to enchance this information by parsing the ++DMI data (using `dmidecode`) and fail gracefully to empty strings ++if no information could not be read from there. By no means this ++parsing is to be taken as a standardised way of discovering an ++arm64 CPU, it is just a suggestion. ++ ++Signed-off-by: Stanislaw Kardach ++Signed-off-by: Alexandru Avadanii ++--- ++ agent | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++ 1 file changed, 90 insertions(+) ++ ++diff --git a/agent b/agent ++index 2c041ec..c3f5d28 100755 ++--- a/agent +++++ b/agent ++@@ -288,6 +288,15 @@ class NodeAgent ++ end + -+ cpu_number = 0 -+ File.open("/proc/cpuinfo").each do |line| -+ case line -+ when /processor\s+:\s(.+)/ -+ cpuinfo[$1] = {} -+ current_cpu = $1 -+ cpu_number += 1 -+ phys_id = File.read( -+ "/sys/devices/system/cpu/cpu%d/topology/physical_package_id" % -+ $1).strip -+ i = phys_id.to_i -+ cpuinfo[$1][:core_id] = -+ File.read("/sys/devices/system/cpu/cpu%d/topology/core_id" % -+ $1).strip rescue "" -+ cpuinfo[$1][:physical_id] = phys_id if not phys_id.empty? -+ if real_cpus[i].nil? -+ i = 0 -+ end -+ if not real_cpus[i].nil? -+ cpuinfo[$1][:family] = real_cpus[i][:family] rescue "" -+ cpuinfo[$1][:cores] = real_cpus[i][:cores] rescue "" -+ cpuinfo[$1][:mhz] = real_cpus[i][:mhz] rescue "" -+ end -+ when /CPU implementer\s+:\s(.+)/ -+ cpuinfo[current_cpu][:vendor_id] = cpu_implementers[$1] -+ cpuinfo[current_cpu][:vendor_id] ||= real_cpus[cpuinfo[current_cpu][:physical_id].to_i][:vendor_id] rescue nil -+ cpuinfo[current_cpu][:vendor_id] ||= real_cpus[0][:vendor_id] rescue nil -+ cpuinfo[current_cpu][:vendor_id] ||= $1 -+ when /CPU part\s+:\s(.+)/ -+ cpuinfo[current_cpu][:model] = $1 -+ cpuinfo[current_cpu][:model_name] = core_models[$1] -+ cpuinfo[current_cpu][:model_name] ||= "" -+ when /Features\s+:\s(.+)/ -+ cpuinfo[current_cpu][:flags] = $1.split(' ') -+ end -+ end -+ cpuinfo[:total] = cpu_number -+ cpuinfo[:real] = real_cpus.keys.length -+ cpuinfo -+ end ++ def _get_detailed_cpuinfo +++ case `uname -m` +++ when /aarch64.*/ +++ _get_detailed_cpuinfo_for_arm64 +++ else # default to x86 +++ _get_detailed_cpuinfo_for_x86 +++ end +++ end +++ +++ def _get_detailed_cpuinfo_for_x86 ++ real = {} ++ info = {} ++ info[:total] = 0 ++@@ -319,6 +328,87 @@ class NodeAgent ++ info ++ end + - def _get_blkdev_info - info = {} - if File.directory?('/sys/block/') +++ def _get_detailed_cpuinfo_for_arm64 +++ cpu_implementers = { +++ "0x41" => "ARM", +++ "0x53" => "Samsung", +++ "0x51" => "Qualcom", +++ "0x43" => "Cavium", +++ "0x50" => "APM" +++ } +++ core_models = { +++ "0xd04" => "cortex-a35", +++ "0xd03" => "cortex-a53", +++ "0xd07" => "cortex-a57", +++ "0xd08" => "cortex-a72", +++ "0x001" => "exynos-m1", +++ "0x800" => "qdf24xx", +++ "0x0a1" => "thunderx", +++ "0x000" => "xgene1", +++ "0xd07.0xd03" => "cortex-a57.cortex-a53", +++ "0xd08.0xd03" => "cortex-a72.cortex-a53" +++ } +++ cpuinfo = {} +++ real_cpus = {} +++ cpu_number = -1 +++ current_cpu = nil +++ `dmidecode -t 4 -q`.each_line do |line| +++ case line +++ when /Processor Information/ +++ cpu_number +=1 +++ real_cpus[cpu_number] = {} +++ when /\s*Manufacturer:\s(.+)/ +++ real_cpus[cpu_number][:vendor_id] = $1 +++ when /\s*Family:\s(.+)/ +++ real_cpus[cpu_number][:family] = $1 +++ when /\s*Max Speed:\s(.+)\s*MHz/ +++ real_cpus[cpu_number][:mhz] = $1.strip +++ when /\s*Core Enabled:\s(.+)/ +++ real_cpus[cpu_number][:cores] = $1 +++ end +++ end +++ +++ cpu_number = 0 +++ File.open("/proc/cpuinfo").each do |line| +++ case line +++ when /processor\s+:\s(.+)/ +++ cpuinfo[$1] = {} +++ current_cpu = $1 +++ cpu_number += 1 +++ phys_id = File.read( +++ "/sys/devices/system/cpu/cpu%d/topology/physical_package_id" % +++ $1).strip +++ i = phys_id.to_i +++ cpuinfo[$1][:core_id] = +++ File.read("/sys/devices/system/cpu/cpu%d/topology/core_id" % +++ $1).strip rescue "" +++ cpuinfo[$1][:physical_id] = phys_id if not phys_id.empty? +++ if real_cpus[i].nil? +++ i = 0 +++ end +++ if not real_cpus[i].nil? +++ cpuinfo[$1][:family] = real_cpus[i][:family] rescue "" +++ cpuinfo[$1][:cores] = real_cpus[i][:cores] rescue "" +++ cpuinfo[$1][:mhz] = real_cpus[i][:mhz] rescue "" +++ end +++ when /CPU implementer\s+:\s(.+)/ +++ cpuinfo[current_cpu][:vendor_id] = cpu_implementers[$1] +++ cpuinfo[current_cpu][:vendor_id] ||= real_cpus[cpuinfo[current_cpu][:physical_id].to_i][:vendor_id] rescue nil +++ cpuinfo[current_cpu][:vendor_id] ||= real_cpus[0][:vendor_id] rescue nil +++ cpuinfo[current_cpu][:vendor_id] ||= $1 +++ when /CPU part\s+:\s(.+)/ +++ cpuinfo[current_cpu][:model] = $1 +++ cpuinfo[current_cpu][:model_name] = core_models[$1] +++ cpuinfo[current_cpu][:model_name] ||= "" +++ when /Features\s+:\s(.+)/ +++ cpuinfo[current_cpu][:flags] = $1.split(' ') +++ end +++ end +++ cpuinfo[:total] = cpu_number +++ cpuinfo[:real] = real_cpus.keys.length +++ cpuinfo +++ end +++ ++ def _get_blkdev_info ++ info = {} ++ if File.directory?('/sys/block/') +diff --git a/debian/patches/series b/debian/patches/series +index 3980c60..fa57b98 100644 +--- a/debian/patches/series ++++ b/debian/patches/series +@@ -1,2 +1,3 @@ + 0001-ohai-Support-reading-L1-info-from-ethtool.patch + 0002-Temporary-SR-IOV-Fix-VNICs-broken-filter.patch ++0003-AArch64-Add-CPU-details-detection.patch -- cgit 1.2.3-korg