meta-fii: meta-kudo: Modify virtual sensor config

Add CPU detect to support 1p/2p virtual sensor json configuration
Add new thermal sensors
Add virtual sensor json selection support based on NBM chipset version

Signed-off-by: Mustafa Shehabi <mustafa.shehabi@fii-na.com>
Signed-off-by: Avenash Asai Thambi <avenash.thambi@fii-usa.com>
Change-Id: Ib5a442cc35f2402c521557d908a90a86dd091cc0
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/cpu_detect_virtual.service b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/cpu_detect_virtual.service
new file mode 100644
index 0000000..2bc76d5
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/cpu_detect_virtual.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Detect CPUs to change config
+Before=phosphor-virtual-sensor.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-virtual-sensor/cpu_detect_virtual.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/cpu_detect_virtual.sh b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/cpu_detect_virtual.sh
new file mode 100644
index 0000000..72cff4a
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/cpu_detect_virtual.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# Provide source directive to shellcheck.
+# shellcheck source=meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh
+source /usr/libexec/kudo-fw/kudo-lib.sh
+
+CPU1_STATUS_N=$(get_gpio_ctrl "$GPIO_CPU1_STATUS_N")
+sleep 60
+sensor_name=$(busctl get-property xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/chassis/NBM4G/CPU0_NBM4G_TMP_V xyz.openbmc_project.Configuration.ADC Name | awk '{print $2}')
+sensor="\"CPU0_NBM4G_TMP_V\""
+
+#4G sensor is found only in 1 CPU systems, so enough to check 4G for 1p alone
+if [[ "$sensor_name" == "$sensor" ]]; then
+    cp -f /etc/virtual-sensor/configurations/virtual_sensor_config1p4G.json /usr/share/phosphor-virtual-sensor/virtual_sensor_config.json
+else
+    if [[ $CPU1_STATUS_N == 1 ]]; then
+        cp -f /etc/virtual-sensor/configurations/virtual_sensor_config1p2G.json /usr/share/phosphor-virtual-sensor/virtual_sensor_config.json
+    else
+        cp -f /etc/virtual-sensor/configurations/virtual_sensor_config2p2G.json /usr/share/phosphor-virtual-sensor/virtual_sensor_config.json
+    fi
+fi
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config.json b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config.json
deleted file mode 100644
index 5ee9143..0000000
--- a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config.json
+++ /dev/null
@@ -1,491 +0,0 @@
-[
-    {
-        "Desc":
-        {
-            "Name": "CPU0_NBM_T",
-            "SensorType": "temperature",
-            "MinValue": 0,
-            "MaxValue": 160
-        },
-        "Threshold" :
-        {
-            "CriticalHigh": 86,
-            "CriticalLow": 0,
-            "WarningHigh": 85,
-            "WarningLow": 0
-        },
-        "Associations":
-        [
-            [
-                "chassis",
-                "all_sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ],
-            [
-                "inventory",
-                "sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ]
-        ],
-        "Params":
-        {
-            "DbusParam":
-            [
-                {
-                    "ParamName": "V1",
-                    "Desc":
-                    {
-                        "Name": "CPU0_NBM_TEMP_V",
-                        "SensorType": "voltage"
-                    }
-                }
-            ]
-        },
-        "Expression": "(V1 == V1) ? (V1 - 2.73) * 100 : NULL"
-    },
-    {
-        "Desc":
-        {
-            "Name": "CPU1_NBM_T",
-            "SensorType": "temperature",
-            "MinValue": 0,
-            "MaxValue": 160
-        },
-        "Threshold" :
-        {
-            "CriticalHigh": 86,
-            "CriticalLow": 0,
-            "WarningHigh": 85,
-            "WarningLow": 0
-        },
-        "Associations":
-        [
-            [
-                "chassis",
-                "all_sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ],
-            [
-                "inventory",
-                "sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ]
-        ],
-        "Params":
-        {
-            "DbusParam":
-            [
-                {
-                    "ParamName": "V2",
-                    "Desc":
-                    {
-                        "Name": "CPU1_NBM_TEMP_V",
-                        "SensorType": "voltage"
-                    }
-                }
-            ]
-        },
-        "Expression": "(V2 == V2) ? (V2 - 2.73) * 100 : NULL"
-    },
-    {
-        "Desc":
-        {
-            "Name": "CPU0_DIMMG_T",
-            "SensorType": "temperature",
-            "MinValue": 0,
-            "MaxValue": 255
-        },
-        "Threshold" :
-        {
-            "CriticalHigh": 90,
-            "CriticalLow": 0,
-            "WarningHigh": 85,
-            "WarningLow": 0
-        },
-        "Associations":
-        [
-            [
-                "chassis",
-                "all_sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ],
-            [
-                "inventory",
-                "sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ]
-        ],
-        "Params":
-        {
-            "DbusParam":
-            [
-                {
-                    "ParamName": "CH0",
-                    "Desc":
-                    {
-                        "Name": "CPU0_CH0DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH1",
-                    "Desc":
-                    {
-                        "Name": "CPU0_CH1DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH2",
-                    "Desc":
-                    {
-                        "Name": "CPU0_CH2DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH3",
-                    "Desc":
-                    {
-                        "Name": "CPU0_CH3DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH4",
-                    "Desc":
-                    {
-                        "Name": "CPU0_CH4DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH5",
-                    "Desc":
-                    {
-                        "Name": "CPU0_CH5DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH6",
-                    "Desc":
-                    {
-                        "Name": "CPU0_CH6DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH7",
-                    "Desc":
-                    {
-                        "Name": "CPU0_CH7DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                }
-            ]
-        },
-        "Expression": "max((CH0 == CH0) ? CH0 : NULL,(CH1 == CH1) ? CH1 : NULL,(CH2 == CH2) ? CH2 : NULL,(CH3 == CH3) ? CH3 : NULL,(CH4 == CH4) ? CH4 : NULL,(CH5 == CH5) ? CH5 : NULL,(CH6 == CH6) ? CH6 : NULL,(CH7 == CH7) ? CH7 : NULL)"
-    },
-    {
-        "Desc":
-        {
-            "Name": "CPU1_DIMMG_T",
-            "SensorType": "temperature",
-            "MinValue": 0,
-            "MaxValue": 255
-        },
-        "Threshold" :
-        {
-            "CriticalHigh": 90,
-            "CriticalLow": 0,
-            "WarningHigh": 85,
-            "WarningLow": 0
-        },
-        "Associations":
-        [
-            [
-                "chassis",
-                "all_sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ],
-            [
-                "inventory",
-                "sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ]
-        ],
-        "Params":
-        {
-            "DbusParam":
-            [
-                {
-                    "ParamName": "CH0",
-                    "Desc":
-                    {
-                        "Name": "CPU1_CH0DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH1",
-                    "Desc":
-                    {
-                        "Name": "CPU1_CH1DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH2",
-                    "Desc":
-                    {
-                        "Name": "CPU1_CH2DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH3",
-                    "Desc":
-                    {
-                        "Name": "CPU1_CH3DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH4",
-                    "Desc":
-                    {
-                        "Name": "CPU1_CH4DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH5",
-                    "Desc":
-                    {
-                        "Name": "CPU1_CH5DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH6",
-                    "Desc":
-                    {
-                        "Name": "CPU1_CH6DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                },
-                {
-                    "ParamName": "CH7",
-                    "Desc":
-                    {
-                        "Name": "CPU1_CH7DIMM_T",
-                        "SensorType": "temperature"
-                    }
-                }
-            ]
-        },
-        "Expression": "max((CH0 == CH0) ? CH0 : NULL,(CH1 == CH1) ? CH1 : NULL,(CH2 == CH2) ? CH2 : NULL,(CH3 == CH3) ? CH3 : NULL,(CH4 == CH4) ? CH4 : NULL,(CH5 == CH5) ? CH5 : NULL,(CH6 == CH6) ? CH6 : NULL,(CH7 == CH7) ? CH7 : NULL)"
-    },
-    {
-        "Desc":
-        {
-            "Name": "CPU0_DIMM_DDR_V",
-            "SensorType": "voltage",
-            "MinValue": 0,
-            "MaxValue": 5
-        },
-        "Threshold" :
-        {
-            "CriticalHigh": 2.999,
-            "CriticalLow": 0
-        },
-        "Associations":
-        [
-            [
-                "chassis",
-                "all_sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ],
-            [
-                "inventory",
-                "sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ]
-        ],
-        "Params":
-        {
-            "DbusParam":
-            [
-                {
-                    "ParamName": "V1",
-                    "Desc":
-                    {
-                        "Name": "CPU0_DIMM_VR1_V",
-                        "SensorType": "voltage"
-                    }
-                },
-                {
-                    "ParamName": "V2",
-                    "Desc":
-                    {
-                        "Name": "CPU0_DIMM_VR2_V",
-                        "SensorType": "voltage"
-                    }
-                }
-            ]
-        },
-        "Expression": "(V1 + V2) >= 0 ? (V1 + V2) : NULL"
-    },
-    {
-        "Desc":
-        {
-            "Name": "CPU1_DIMM_DDR_V",
-            "SensorType": "voltage",
-            "MinValue": 0,
-            "MaxValue": 5
-        },
-        "Threshold" :
-        {
-            "CriticalHigh": 2.999,
-            "CriticalLow": 0
-        },
-        "Associations":
-        [
-            [
-                "chassis",
-                "all_sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ],
-            [
-                "inventory",
-                "sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ]
-        ],
-        "Params":
-        {
-            "DbusParam":
-            [
-                {
-                    "ParamName": "V1",
-                    "Desc":
-                    {
-                        "Name": "CPU1_DIMM_VR1_V",
-                        "SensorType": "voltage"
-                    }
-                },
-                {
-                    "ParamName": "V2",
-                    "Desc":
-                    {
-                        "Name": "CPU1_DIMM_VR2_V",
-                        "SensorType": "voltage"
-                    }
-                }
-            ]
-        },
-        "Expression": "(V1 + V2) >= 0 ? (V1 + V2) : NULL"
-    },
-    {
-        "Desc":
-        {
-            "Name": "CPU0_MEM_PW",
-            "SensorType": "power",
-            "MinValue": 0,
-            "MaxValue": 80
-        },
-        "Threshold" :
-        {
-            "CriticalHigh": 29.987,
-            "CriticalLow": 0
-        },
-        "Associations":
-        [
-            [
-                "chassis",
-                "all_sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ],
-            [
-                "inventory",
-                "sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ]
-        ],
-        "Params":
-        {
-            "DbusParam":
-            [
-                {
-                    "ParamName": "P1",
-                    "Desc":
-                    {
-                        "Name": "CPU0_DIMM_VR1_PW",
-                        "SensorType": "power"
-                    }
-                },
-                {
-                    "ParamName": "P2",
-                    "Desc":
-                    {
-                        "Name": "CPU0_DIMM_VR2_PW",
-                        "SensorType": "power"
-                    }
-                }
-            ]
-        },
-        "Expression": "(P1 + P2) >= 0 ? (P1 + P2) : NULL"
-    },
-    {
-        "Desc":
-        {
-            "Name": "CPU1_MEM_PW",
-            "SensorType": "power",
-            "MinValue": 0,
-            "MaxValue": 80
-        },
-        "Threshold" :
-        {
-            "CriticalHigh": 29.987,
-            "CriticalLow": 0
-        },
-        "Associations":
-        [
-            [
-                "chassis",
-                "all_sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ],
-            [
-                "inventory",
-                "sensors",
-                "/xyz/openbmc_project/inventory/system/board/Kudo_MB"
-            ]
-        ],
-        "Params":
-        {
-            "DbusParam":
-            [
-                {
-                    "ParamName": "P1",
-                    "Desc":
-                    {
-                        "Name": "CPU1_DIMM_VR1_PW",
-                        "SensorType": "power"
-                    }
-                },
-                {
-                    "ParamName": "P2",
-                    "Desc":
-                    {
-                        "Name": "CPU1_DIMM_VR2_PW",
-                        "SensorType": "power"
-                    }
-                }
-            ]
-        },
-        "Expression": "(P1 + P2) >= 0 ? (P1 + P2) : NULL"
-    }
-]
-
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config1p2G.json b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config1p2G.json
new file mode 100644
index 0000000..8dbd1b9
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config1p2G.json
@@ -0,0 +1,295 @@
+[
+    {
+       "Desc":{
+          "Name":"CPU0_NBM_T",
+          "SensorType":"temperature",
+          "MinValue":0,
+          "MaxValue":160
+       },
+       "Threshold":
+       {
+          "CriticalHigh":110,
+          "WarningHigh":108
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_NBM2G_TMP_V",
+                "Desc":{
+                   "Name":"CPU0_NBM2G_TMP_V",
+                   "SensorType":"voltage"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_NBM2G_TMP_V == CPU0_NBM2G_TMP_V) ? (CPU0_NBM2G_TMP_V - 2.73) * 100 : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_DIMMG_T",
+          "SensorType":"temperature",
+          "MinValue":0,
+          "MaxValue":255
+       },
+       "Threshold":
+       {
+          "CriticalHigh":90,
+          "WarningHigh":85
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_CH0",
+                "Desc":{
+                   "Name":"CPU0_CH0DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH1",
+                "Desc":{
+                   "Name":"CPU0_CH1DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH2",
+                "Desc":{
+                   "Name":"CPU0_CH2DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH3",
+                "Desc":{
+                   "Name":"CPU0_CH3DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH4",
+                "Desc":{
+                   "Name":"CPU0_CH4DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH5",
+                "Desc":{
+                   "Name":"CPU0_CH5DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH6",
+                "Desc":{
+                   "Name":"CPU0_CH6DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH7",
+                "Desc":{
+                   "Name":"CPU0_CH7DIMM_T",
+                   "SensorType":"temperature"
+                }
+             }
+          ]
+       },
+        "Expression":"var x := max((CPU0_CH0 == CPU0_CH0) ? CPU0_CH0 : 0,(CPU0_CH1 == CPU0_CH1) ? CPU0_CH1 : 0,(CPU0_CH2 == CPU0_CH2) ? CPU0_CH2 : 0,(CPU0_CH3 == CPU0_CH3) ? CPU0_CH3 : 0,(CPU0_CH4 == CPU0_CH4) ? CPU0_CH4 : 0,(CPU0_CH5 == CPU0_CH5) ? CPU0_CH5 : 0,(CPU0_CH6 == CPU0_CH6) ? CPU0_CH6 : 0,(CPU0_CH7 == CPU0_CH7) ? CPU0_CH7 : 0); x == 0 ? NULL : x"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_DIMM_DDR_V",
+          "SensorType":"voltage",
+          "MinValue":0,
+          "MaxValue":5
+       },
+       "Threshold":
+       {
+          "CriticalHigh":2.999
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_DIMM_VR1_V",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR1_V",
+                   "SensorType":"voltage"
+                }
+             },
+             {
+                "ParamName":"CPU0_DIMM_VR2_V",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR2_V",
+                   "SensorType":"voltage"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_DIMM_VR1_V + CPU0_DIMM_VR2_V) >= 0 ? (CPU0_DIMM_VR1_V + CPU0_DIMM_VR2_V) : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_MEM_PW",
+          "SensorType":"power",
+          "MinValue":0,
+          "MaxValue":80
+       },
+       "Threshold":
+       {
+          "CriticalHigh":29.987
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_DIMM_VR1_PW",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR1_PW",
+                   "SensorType":"power"
+                }
+             },
+             {
+                "ParamName":"CPU0_DIMM_VR2_PW",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR2_PW",
+                   "SensorType":"power"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_DIMM_VR1_PW + CPU0_DIMM_VR2_PW) >= 0 ? (CPU0_DIMM_VR1_PW + CPU0_DIMM_VR2_PW) : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_CPU_PW",
+          "SensorType":"power",
+          "MinValue":0,
+          "MaxValue":550
+       },
+       "Threshold":
+       {
+          "CriticalHigh":500
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_Core_VRD_PW",
+                "Desc":{
+                   "Name":"CPU0_Core_VRD_PW",
+                   "SensorType":"power"
+                }
+             },
+             {
+                "ParamName":"CPU0_SOC_PW",
+                "Desc":{
+                   "Name":"CPU0_SOC_PW",
+                   "SensorType":"power"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_Core_VRD_PW + CPU0_SOC_PW) >= 0 ? (CPU0_Core_VRD_PW + CPU0_SOC_PW) : NULL"
+    },
+    {
+        "Desc":
+        {
+            "Name": "zone0_temp",
+            "SensorType": "temperature",
+            "MinValue": 0,
+            "MaxValue": 300
+        },
+        "Threshold" :
+        {
+            "CriticalHigh": 200,
+            "WarningHigh": 198
+        },
+        "Associations":[
+         [
+            "chassis",
+            "all_sensors",
+            "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+         ],
+         [
+            "inventory",
+            "sensors",
+            "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+         ]
+      ],
+        "Params":
+        {
+            "DbusParam":
+            [
+                {
+                    "ParamName": "margin0",
+                    "Desc":
+                    {
+                        "Name": "thermal_zone0",
+                        "SensorType": "temperature"
+                    }
+                }
+            ]
+        },
+        "Expression": "(200 - margin0)"
+    }
+ ]
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config1p4G.json b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config1p4G.json
new file mode 100644
index 0000000..0343dd0
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config1p4G.json
@@ -0,0 +1,295 @@
+[
+    {
+       "Desc":{
+          "Name":"CPU0_NBM_T",
+          "SensorType":"temperature",
+          "MinValue":0,
+          "MaxValue":160
+       },
+       "Threshold":
+       {
+          "CriticalHigh":110,
+          "WarningHigh":108
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_NBM4G_TMP_V",
+                "Desc":{
+                   "Name":"CPU0_NBM4G_TMP_V",
+                   "SensorType":"voltage"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_NBM4G_TMP_V == CPU0_NBM4G_TMP_V) ? (CPU0_NBM4G_TMP_V - 1.911) / 0.007 : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_DIMMG_T",
+          "SensorType":"temperature",
+          "MinValue":0,
+          "MaxValue":255
+       },
+       "Threshold":
+       {
+          "CriticalHigh":90,
+          "WarningHigh":85
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_CH0",
+                "Desc":{
+                   "Name":"CPU0_CH0DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH1",
+                "Desc":{
+                   "Name":"CPU0_CH1DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH2",
+                "Desc":{
+                   "Name":"CPU0_CH2DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH3",
+                "Desc":{
+                   "Name":"CPU0_CH3DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH4",
+                "Desc":{
+                   "Name":"CPU0_CH4DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH5",
+                "Desc":{
+                   "Name":"CPU0_CH5DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH6",
+                "Desc":{
+                   "Name":"CPU0_CH6DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH7",
+                "Desc":{
+                   "Name":"CPU0_CH7DIMM_T",
+                   "SensorType":"temperature"
+                }
+             }
+          ]
+       },
+        "Expression":"var x := max((CPU0_CH0 == CPU0_CH0) ? CPU0_CH0 : 0,(CPU0_CH1 == CPU0_CH1) ? CPU0_CH1 : 0,(CPU0_CH2 == CPU0_CH2) ? CPU0_CH2 : 0,(CPU0_CH3 == CPU0_CH3) ? CPU0_CH3 : 0,(CPU0_CH4 == CPU0_CH4) ? CPU0_CH4 : 0,(CPU0_CH5 == CPU0_CH5) ? CPU0_CH5 : 0,(CPU0_CH6 == CPU0_CH6) ? CPU0_CH6 : 0,(CPU0_CH7 == CPU0_CH7) ? CPU0_CH7 : 0); x == 0 ? NULL : x"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_DIMM_DDR_V",
+          "SensorType":"voltage",
+          "MinValue":0,
+          "MaxValue":5
+       },
+       "Threshold":
+       {
+          "CriticalHigh":2.999
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_DIMM_VR1_V",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR1_V",
+                   "SensorType":"voltage"
+                }
+             },
+             {
+                "ParamName":"CPU0_DIMM_VR2_V",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR2_V",
+                   "SensorType":"voltage"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_DIMM_VR1_V + CPU0_DIMM_VR2_V) >= 0 ? (CPU0_DIMM_VR1_V + CPU0_DIMM_VR2_V) : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_MEM_PW",
+          "SensorType":"power",
+          "MinValue":0,
+          "MaxValue":80
+       },
+       "Threshold":
+       {
+          "CriticalHigh":29.987
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_DIMM_VR1_PW",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR1_PW",
+                   "SensorType":"power"
+                }
+             },
+             {
+                "ParamName":"CPU0_DIMM_VR2_PW",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR2_PW",
+                   "SensorType":"power"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_DIMM_VR1_PW + CPU0_DIMM_VR2_PW) >= 0 ? (CPU0_DIMM_VR1_PW + CPU0_DIMM_VR2_PW) : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_CPU_PW",
+          "SensorType":"power",
+          "MinValue":0,
+          "MaxValue":550
+       },
+       "Threshold":
+       {
+          "CriticalHigh":500
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_Core_VRD_PW",
+                "Desc":{
+                   "Name":"CPU0_Core_VRD_PW",
+                   "SensorType":"power"
+                }
+             },
+             {
+                "ParamName":"CPU0_SOC_PW",
+                "Desc":{
+                   "Name":"CPU0_SOC_PW",
+                   "SensorType":"power"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_Core_VRD_PW + CPU0_SOC_PW) >= 0 ? (CPU0_Core_VRD_PW + CPU0_SOC_PW) : NULL"
+    },
+    {
+        "Desc":
+        {
+            "Name": "zone0_temp",
+            "SensorType": "temperature",
+            "MinValue": 0,
+            "MaxValue": 300
+        },
+        "Threshold" :
+        {
+            "CriticalHigh": 200,
+            "WarningHigh": 198
+        },
+        "Associations":[
+         [
+            "chassis",
+            "all_sensors",
+            "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+         ],
+         [
+            "inventory",
+            "sensors",
+            "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+         ]
+      ],
+        "Params":
+        {
+            "DbusParam":
+            [
+                {
+                    "ParamName": "margin0",
+                    "Desc":
+                    {
+                        "Name": "thermal_zone0",
+                        "SensorType": "temperature"
+                    }
+                }
+            ]
+        },
+        "Expression": "(200 - margin0)"
+    }
+ ]
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config2p2G.json b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config2p2G.json
new file mode 100644
index 0000000..8516173
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config2p2G.json
@@ -0,0 +1,588 @@
+[
+    {
+       "Desc":{
+          "Name":"CPU0_NBM_T",
+          "SensorType":"temperature",
+          "MinValue":0,
+          "MaxValue":160
+       },
+       "Threshold":
+       {
+          "CriticalHigh":110,
+          "WarningHigh":108
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_NBM4G_TMP_V",
+                "Desc":{
+                   "Name":"CPU0_NBM4G_TMP_V",
+                   "SensorType":"voltage"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_NBM4G_TMP_V == CPU0_NBM4G_TMP_V) ? (CPU0_NBM4G_TMP_V - 2.73) * 100 : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU1_NBM_T",
+          "SensorType":"temperature",
+          "MinValue":0,
+          "MaxValue":160
+       },
+       "Threshold":
+       {
+          "CriticalHigh":110,
+          "WarningHigh":108
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU1_NBM4G_TMP_V",
+                "Desc":{
+                   "Name":"CPU1_NBM4G_TMP_V",
+                   "SensorType":"voltage"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU1_NBM4G_TMP_V == CPU1_NBM4G_TMP_V) ? (CPU1_NBM4G_TMP_V - 2.73) * 100 : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_DIMMG_T",
+          "SensorType":"temperature",
+          "MinValue":0,
+          "MaxValue":255
+       },
+       "Threshold":
+       {
+          "CriticalHigh":90,
+          "WarningHigh":85
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_CH0",
+                "Desc":{
+                   "Name":"CPU0_CH0DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH1",
+                "Desc":{
+                   "Name":"CPU0_CH1DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH2",
+                "Desc":{
+                   "Name":"CPU0_CH2DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH3",
+                "Desc":{
+                   "Name":"CPU0_CH3DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH4",
+                "Desc":{
+                   "Name":"CPU0_CH4DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH5",
+                "Desc":{
+                   "Name":"CPU0_CH5DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH6",
+                "Desc":{
+                   "Name":"CPU0_CH6DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU0_CH7",
+                "Desc":{
+                   "Name":"CPU0_CH7DIMM_T",
+                   "SensorType":"temperature"
+                }
+             }
+          ]
+       },
+       "Expression":"var x := max((CPU0_CH0 == CPU0_CH0) ? CPU0_CH0 : 0,(CPU0_CH1 == CPU0_CH1) ? CPU0_CH1 : 0,(CPU0_CH2 == CPU0_CH2) ? CPU0_CH2 : 0,(CPU0_CH3 == CPU0_CH3) ? CPU0_CH3 : 0,(CPU0_CH4 == CPU0_CH4) ? CPU0_CH4 : 0,(CPU0_CH5 == CPU0_CH5) ? CPU0_CH5 : 0,(CPU0_CH6 == CPU0_CH6) ? CPU0_CH6 : 0,(CPU0_CH7 == CPU0_CH7) ? CPU0_CH7 : 0); x == 0 ? NULL : x"
+    },
+    {
+       "Desc":{
+          "Name":"CPU1_DIMMG_T",
+          "SensorType":"temperature",
+          "MinValue":0,
+          "MaxValue":255
+       },
+       "Threshold":
+       {
+          "CriticalHigh":90,
+          "WarningHigh":85
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU1_CH0",
+                "Desc":{
+                   "Name":"CPU1_CH0DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU1_CH1",
+                "Desc":{
+                   "Name":"CPU1_CH1DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU1_CH2",
+                "Desc":{
+                   "Name":"CPU1_CH2DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU1_CH3",
+                "Desc":{
+                   "Name":"CPU1_CH3DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU1_CH4",
+                "Desc":{
+                   "Name":"CPU1_CH4DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU1_CH5",
+                "Desc":{
+                   "Name":"CPU1_CH5DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU1_CH6",
+                "Desc":{
+                   "Name":"CPU1_CH6DIMM_T",
+                   "SensorType":"temperature"
+                }
+             },
+             {
+                "ParamName":"CPU1_CH7",
+                "Desc":{
+                   "Name":"CPU1_CH7DIMM_T",
+                   "SensorType":"temperature"
+                }
+             }
+          ]
+       },
+       "Expression":"var x := max((CPU1_CH0 == CPU1_CH0) ? CPU1_CH0 : 0,(CPU1_CH1 == CPU1_CH1) ? CPU1_CH1 : 0,(CPU1_CH2 == CPU1_CH2) ? CPU1_CH2 : 0,(CPU1_CH3 == CPU1_CH3) ? CPU1_CH3 : 0,(CPU1_CH4 == CPU1_CH4) ? CPU1_CH4 : 0,(CPU1_CH5 == CPU1_CH5) ? CPU1_CH5 : 0,(CPU1_CH6 == CPU1_CH6) ? CPU1_CH6 : 0,(CPU1_CH7 == CPU1_CH7) ? CPU1_CH7 : 0); x == 0 ? NULL : x"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_DIMM_DDR_V",
+          "SensorType":"voltage",
+          "MinValue":0,
+          "MaxValue":5
+       },
+       "Threshold":
+       {
+          "CriticalHigh":2.999
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_DIMM_VR1_V",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR1_V",
+                   "SensorType":"voltage"
+                }
+             },
+             {
+                "ParamName":"CPU0_DIMM_VR2_V",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR2_V",
+                   "SensorType":"voltage"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_DIMM_VR1_V + CPU0_DIMM_VR2_V) >= 0 ? (CPU0_DIMM_VR1_V + CPU0_DIMM_VR2_V) : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU1_DIMM_DDR_V",
+          "SensorType":"voltage",
+          "MinValue":0,
+          "MaxValue":5
+       },
+       "Threshold":
+       {
+          "CriticalHigh":2.999
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU1_DIMM_VR1_V",
+                "Desc":{
+                   "Name":"CPU1_DIMM_VR1_V",
+                   "SensorType":"voltage"
+                }
+             },
+             {
+                "ParamName":"CPU1_DIMM_VR2_V",
+                "Desc":{
+                   "Name":"CPU1_DIMM_VR2_V",
+                   "SensorType":"voltage"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU1_DIMM_VR1_V + CPU1_DIMM_VR2_V) >= 0 ? (CPU1_DIMM_VR1_V + CPU1_DIMM_VR2_V) : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_MEM_PW",
+          "SensorType":"power",
+          "MinValue":0,
+          "MaxValue":80
+       },
+       "Threshold":
+       {
+          "CriticalHigh":29.987
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_DIMM_VR1_PW",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR1_PW",
+                   "SensorType":"power"
+                }
+             },
+             {
+                "ParamName":"CPU0_DIMM_VR2_PW",
+                "Desc":{
+                   "Name":"CPU0_DIMM_VR2_PW",
+                   "SensorType":"power"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_DIMM_VR1_PW + CPU0_DIMM_VR2_PW) >= 0 ? (CPU0_DIMM_VR1_PW + CPU0_DIMM_VR2_PW) : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU1_MEM_PW",
+          "SensorType":"power",
+          "MinValue":0,
+          "MaxValue":255
+       },
+       "Threshold":
+       {
+          "CriticalHigh":29.987
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU1_DIMM_VR1_PW",
+                "Desc":{
+                   "Name":"CPU1_DIMM_VR1_PW",
+                   "SensorType":"power"
+                }
+             },
+             {
+                "ParamName":"CPU1_DIMM_VR2_PW",
+                "Desc":{
+                   "Name":"CPU1_DIMM_VR2_PW",
+                   "SensorType":"power"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU1_DIMM_VR1_PW + CPU1_DIMM_VR2_PW) >= 0 ? (CPU1_DIMM_VR1_PW + CPU1_DIMM_VR2_PW) : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU0_CPU_PW",
+          "SensorType":"power",
+          "MinValue":0,
+          "MaxValue":550
+       },
+       "Threshold":
+       {
+          "CriticalHigh":500
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU0_Core_VRD_PW",
+                "Desc":{
+                   "Name":"CPU0_Core_VRD_PW",
+                   "SensorType":"power"
+                }
+             },
+             {
+                "ParamName":"CPU0_SOC_PW",
+                "Desc":{
+                   "Name":"CPU0_SOC_PW",
+                   "SensorType":"power"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU0_Core_VRD_PW + CPU0_SOC_PW) >= 0 ? (CPU0_Core_VRD_PW + CPU0_SOC_PW) : NULL"
+    },
+    {
+       "Desc":{
+          "Name":"CPU1_CPU_PW",
+          "SensorType":"power",
+          "MinValue":0,
+          "MaxValue":550
+       },
+       "Threshold":
+       {
+          "CriticalHigh":500
+       },
+       "Associations":[
+          [
+             "chassis",
+             "all_sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ],
+          [
+             "inventory",
+             "sensors",
+             "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+          ]
+       ],
+       "Params":{
+          "DbusParam":[
+             {
+                "ParamName":"CPU1_Core_VRD_PW",
+                "Desc":{
+                   "Name":"CPU1_Core_VRD_PW",
+                   "SensorType":"power"
+                }
+             },
+             {
+                "ParamName":"CPU1_SOC_PW",
+                "Desc":{
+                   "Name":"CPU1_SOC_PW",
+                   "SensorType":"power"
+                }
+             }
+          ]
+       },
+       "Expression":"(CPU1_Core_VRD_PW + CPU1_SOC_PW) >= 0 ? (CPU1_Core_VRD_PW + CPU1_SOC_PW) : NULL"
+    },
+    {
+        "Desc":
+        {
+            "Name": "zone0_temp",
+            "SensorType": "temperature",
+            "MinValue": 0,
+            "MaxValue": 300
+        },
+        "Threshold" :
+        {
+            "CriticalHigh": 200,
+            "WarningHigh": 198
+        },
+        "Associations":[
+         [
+            "chassis",
+            "all_sensors",
+            "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+         ],
+         [
+            "inventory",
+            "sensors",
+            "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+         ]
+      ],
+        "Params":
+        {
+            "DbusParam":
+            [
+                {
+                    "ParamName": "margin0",
+                    "Desc":
+                    {
+                        "Name": "thermal_zone0",
+                        "SensorType": "temperature"
+                    }
+                }
+            ]
+        },
+        "Expression": "(200 - margin0)"
+    },
+    {
+        "Desc":
+        {
+            "Name": "zone1_temp",
+            "SensorType": "temperature",
+            "MinValue": 0,
+            "MaxValue": 300
+        },
+        "Threshold" :
+        {
+            "CriticalHigh": 200,
+            "WarningHigh": 198
+        },
+        "Associations":[
+         [
+            "chassis",
+            "all_sensors",
+            "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+         ],
+         [
+            "inventory",
+            "sensors",
+            "/xyz/openbmc_project/inventory/system/board/Kudo_Motherboard"
+         ]
+      ],
+        "Params":
+        {
+            "DbusParam":
+            [
+                {
+                    "ParamName": "margin1",
+                    "Desc":
+                    {
+                        "Name": "thermal_zone1",
+                        "SensorType": "temperature"
+                    }
+                }
+            ]
+        },
+        "Expression": "(200 - margin1)"
+         }
+ ]
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend
index 17a0dfb..1d0ecb6 100644
--- a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend
+++ b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend
@@ -2,22 +2,29 @@
 
 inherit systemd
 RDEPENDS:${PN} += "bash"
-SYSTEMD_SERVICE:${PN}:append:kudo = " tla2024-enable.service"
+SYSTEMD_SERVICE:${PN}:append:kudo = " tla2024-enable.service \
+                                      cpu_detect_virtual.service \
+                                    "
 
 SRC_URI:append:kudo = " \
-    file://virtual_sensor_config.json \
+    file://virtual_sensor_config1p2G.json \
+    file://virtual_sensor_config2p2G.json \
+    file://virtual_sensor_config1p4G.json \
     file://tla2024-enable.service \
     file://tla2024-enable.sh \
+    file://cpu_detect_virtual.sh \
+    file://cpu_detect_virtual.service \
     "
-FILES:${PN}:append:kudo = " ${bindir}/tla2024-enable.sh"
-
 do_install:append:kudo() {
-    install -d ${D}${datadir}/${PN}
-    install -m 0644 ${WORKDIR}/virtual_sensor_config.json ${D}${datadir}/${PN}/virtual_sensor_config.json
-
     install -d ${D}${libexecdir}/${PN}
     install -m 0755 ${WORKDIR}/tla2024-enable.sh ${D}${libexecdir}/${PN}/tla2024-enable.sh
-
+    install -d ${D}${sysconfdir}/virtual-sensor/configurations/
+    install -m 0644 ${WORKDIR}/virtual_sensor_config1p2G.json ${D}${sysconfdir}/virtual-sensor/configurations/virtual_sensor_config1p2G.json
+    install -m 0644 ${WORKDIR}/virtual_sensor_config2p2G.json ${D}${sysconfdir}/virtual-sensor/configurations/virtual_sensor_config2p2G.json
+    install -m 0644 ${WORKDIR}/virtual_sensor_config1p4G.json ${D}${sysconfdir}/virtual-sensor/configurations/virtual_sensor_config1p4G.json
+    install -m 0755 ${WORKDIR}/cpu_detect_virtual.sh ${D}${libexecdir}/${PN}/cpu_detect_virtual.sh
     install -d ${D}${systemd_system_unitdir}
     install -m 0644 ${WORKDIR}/tla2024-enable.service ${D}${systemd_system_unitdir}/tla2024-enable.service
+    install -m 0644 ${WORKDIR}/cpu_detect_virtual.service ${D}${systemd_system_unitdir}/cpu_detect_virtual.service
 }
+