diff options
author | Andrey V.Kosteltsev <AKosteltsev@IBS.RU> | 2022-07-21 17:38:10 +0300 |
---|---|---|
committer | Andrey V.Kosteltsev <AKosteltsev@IBS.RU> | 2022-07-21 17:38:10 +0300 |
commit | 07938591500c1620071fced89aaa9a232b087a83 (patch) | |
tree | 7aaf1a1ab8a42e83a7478eb6074a90c6c64f25f1 | |
parent | 62aaf008397e61af69ea398b59fb7fb0881d924d (diff) | |
parent | c94ad6d6a8eeac50663af152f868da8877a620cc (diff) | |
download | openbmc-07938591500c1620071fced89aaa9a232b087a83.tar.xz |
merged sila@c94ad6d6a8eeac50663af152f868da8877a620cc
52 files changed, 3043 insertions, 1671 deletions
diff --git a/meta-ibs/meta-ast2500/conf/machine/include/sila-ast2500-64mb.inc b/meta-ibs/meta-ast2500/conf/machine/include/sila-ast2500-64mb.inc new file mode 100644 index 0000000000..778f2b63d7 --- /dev/null +++ b/meta-ibs/meta-ast2500/conf/machine/include/sila-ast2500-64mb.inc @@ -0,0 +1,24 @@ + +KMACHINE = "aspeed" +KERNEL_DEVICETREE = "${KMACHINE}-bmc-${FACTORY}-${MACHINE}.dtb" + +PREFERRED_PROVIDER_virtual/bootloader = "u-boot-aspeed" +PREFERRED_PROVIDER_u-boot = "u-boot-aspeed" +PREFERRED_PROVIDER_u-boot-fw-utils = "u-boot-fw-utils-aspeed" + +UBOOT_MACHINE = "ast_g5_phy_config" + +require conf/machine/include/ast2500.inc +require conf/machine/include/obmc-bsp-common.inc +require conf/machine/include/ibs.inc + +include conf/machine/include/obmc-bsp-sila-common.inc + +SERIAL_CONSOLES = "115200;ttyS3 115200;ttyS4" + +FLASH_SIZE = "65536" +FLASH_KERNEL_OFFSET:flash-65536 = "512" +FLASH_ROFS_OFFSET:flash-65536 = "9216" +FLASH_RWFS_OFFSET:flash-65536 = "49152" + +IMAGE_FEATURES += "allow-root-login" diff --git a/meta-ibs/meta-ast2500/conf/machine/include/sila-ast2500.inc b/meta-ibs/meta-ast2500/conf/machine/include/sila-ast2500.inc index 6cededa6e6..91ddd82705 100644 --- a/meta-ibs/meta-ast2500/conf/machine/include/sila-ast2500.inc +++ b/meta-ibs/meta-ast2500/conf/machine/include/sila-ast2500.inc @@ -18,6 +18,6 @@ SERIAL_CONSOLES = "115200;ttyS3 115200;ttyS4" FLASH_SIZE = "32768" FLASH_ROFS_OFFSET = "5632" -FLASH_RWFS_OFFSET = "29696" +FLASH_RWFS_OFFSET = "30720" IMAGE_FEATURES += "allow-root-login" diff --git a/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed/aspeed-bmc-sila-cp2-5422-64mb.dts b/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed/aspeed-bmc-sila-cp2-5422-64mb.dts new file mode 100644 index 0000000000..7bc45260cc --- /dev/null +++ b/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed/aspeed-bmc-sila-cp2-5422-64mb.dts @@ -0,0 +1,537 @@ +/dts-v1/; + +#include "aspeed-g5.dtsi" +#include <dt-bindings/gpio/aspeed-gpio.h> +#include <dt-bindings/i2c/i2c.h> + +/ { + model = "CP2-5422 BMC"; + compatible = "sila,cp2-5422-bmc", "aspeed,ast2500"; + + aliases { + serial4 = &uart5; + serial5 = &vuart; + }; + + chosen { + stdout-path = &uart5; + bootargs = "console=ttyS4,115200 earlyprintk"; + }; + + memory@80000000 { + reg = <0x80000000 0x20000000>; + }; + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + vga_memory: framebuffer@7f000000 { + no-map; + phandle = <0xf6>; + reg = <0x7f000000 0x01000000>; /* 16M */ + }; + + gfx_memory: framebuffer { + reusable; + compatible = "shared-dma-pool"; + alignment = <0x01000000>; + size = <0x01000000>; + phandle = <0x0a>; + }; + + video_engine_memory: jpegbuffer { + reusable; + compatible = "shared-dma-pool"; + alignment = <0x01000000>; + size = <0x02000000>; /* 32M */ + phandle = <0x0d>; + }; + + ramoops@9eff0000{ + compatible = "ramoops"; + record-size = <0x2000>; + console-size = <0x2000>; + reg = <0x9eff0000 0x10000>; + }; + }; + + vga-shared-memory { + compatible = "aspeed,ast2500-vga-sharedmem"; + reg = <0x9ff00000 0x100000>; + }; + + iio-hwmon { + compatible = "iio-hwmon"; + io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>, + <&adc 4>, <&adc 5>, <&adc 6>, <&adc 7>, + <&adc 8>, <&adc 9>, <&adc 10>, <&adc 11>, + <&adc 12>, <&adc 13>, <&adc 14>, <&adc 15>; + }; + + leds { + compatible = "gpio-leds"; + + identify { + default-state = "off"; + gpios = <&gpio ASPEED_GPIO(S, 6) GPIO_ACTIVE_LOW>; + }; + + status_amber { + default-state = "off"; + gpios = <&gpio ASPEED_GPIO(S, 5) GPIO_ACTIVE_LOW>; + }; + + status_green { + default-state = "keep"; + gpios = <&gpio ASPEED_GPIO(S, 4) GPIO_ACTIVE_LOW>; + }; + + cpu0fault { + default-state = "off"; + gpios = <&gpio ASPEED_GPIO(F, 4) GPIO_ACTIVE_HIGH>; + }; + + cpu1fault { + default-state = "off"; + gpios = <&gpio ASPEED_GPIO(F, 5) GPIO_ACTIVE_HIGH>; + }; + }; + + beeper { + compatible = "pwm-beeper"; + pwms = <&timer 6 1000000 0>; + }; +}; + +&fmc { + status = "okay"; + flash@0 { + status = "okay"; + m25p,fast-read; + label = "bmc"; +#include "openbmc-flash-layout-64MB.dtsi" + }; +}; + +&espi { + status = "okay"; +}; + +&jtag { + status = "okay"; +}; + +&peci0 { + status = "okay"; + gpios = <&gpio ASPEED_GPIO(F, 6) 0>; +}; + +&syscon { + uart-clock-high-speed; + status = "okay"; + + misc_control { + compatible = "aspeed,bmc-misc"; + uart_port_debug { + offset = <0x2c>; + bit-mask = <0x1>; + bit-shift = <10>; + read-only; + }; + p2a-bridge { + offset = <0x180>; + bit-mask = <0x1>; + bit-shift = <1>; + read-only; + }; + boot-2nd-flash { + offset = <0x70>; + bit-mask = <0x1>; + bit-shift = <17>; + read-only; + }; + chip_id { + offset = <0x150>; + bit-mask = <0x0fffffff 0xffffffff>; + bit-shift = <0>; + read-only; + reg-width = <64>; + hash-data = "d44f9b804976fa23c2e25d62f16154d26520a7e24c5555095fd1b55c027804f1570dcd16189739c640cd7d9a6ce14944a2c4eaf1dc429eed6940e8a83498a474"; + }; + silicon_id { + offset = <0x7c>; + bit-mask = <0xffffffff>; + bit-shift = <0>; + read-only; + reg-width = <32>; + }; + }; +}; + +&adc { + status = "okay"; +}; + +&gpio { + status = "okay"; + /* Enable GPIOE0 and GPIOE2 pass-through by default */ + pinctrl-names = "pass-through"; + pinctrl-0 = <&pinctrl_gpie0_default + &pinctrl_gpie2_default>; + gpio-line-names = + /*A0-A7*/ "","","","","","","","", + /*B0-B7*/ "","","","","","","","", + /*C0-C7*/ "","","","","","","","", + /*D0-D7*/ "","","","","","","","", + /*E0-E7*/ "RESET_BUTTON","RESET_OUT","POWER_BUTTON","POWER_OUT","","","","", + /*F0-F7*/ "NMI_OUT","","","","CPU_ERR0","CPU_ERR1","","", + /*G0-G7*/ "CPU_ERR2","CPU_CATERR","PCH_BMC_THERMTRIP","LCP_ENTER_BUTTON","LCP_LEFT_BUTTON","FM_BMC_BOARD_SKU_ID5_N","","", + /*H0-H7*/ "","","","FM_NODE_ID_1","FM_NODE_ID_2","FM_NODE_ID_3","FM_NODE_ID_4","FM_240VA_STATUS", + /*I0-I7*/ "FM_SYS_FAN0_PRSNT_D_N","FM_SYS_FAN1_PRSNT_D_N","FM_SYS_FAN2_PRSNT_D_N","FM_SYS_FAN3_PRSNT_D_N","FM_SYS_FAN4_PRSNT_D_N","FM_SYS_FAN5_PRSNT_D_N","","", + /*J0-J7*/ "","","","","","","","", + /*K0-K7*/ "","","","","","","","", + /*L0-L7*/ "","","","","","","","", + /*M0-M7*/ "","","","","","","","", + /*N0-N7*/ "","","","","","","","", + /*O0-O7*/ "","","","","","","","", + /*P0-P7*/ "","","","","","","","", + /*Q0-Q7*/ "","","","","","","","PWR_DEBUG_N", + /*R0-R7*/ "","XDP_PRST_N","","","","","","CHASSIS_INTRUSION", + /*S0-S7*/ "REMOTE_DEBUG_ENABLE","SYSPWROK","RSMRST_N","","","","","", + /*T0-T7*/ "","","","","","","","", + /*U0-U7*/ "","","","","","","","", + /*V0-V7*/ "","","","","","","","", + /*W0-W7*/ "","","","","","","","", + /*X0-X7*/ "","","","","","","","", + /*Y0-Y7*/ "SIO_S3","SIO_S5","","SIO_ONCONTROL","","","","", + /*Z0-Z7*/ "","SIO_POWER_GOOD","","","","","","", + /*AA0-AA7*/ "P3VBAT_BRIDGE_EN","","","","PREQ_N","TCK_MUX_SEL","SMI","POST_COMPLETE", + /*AB0-AB7*/ "","NMI_BUTTON","ID_BUTTON","PS_PWROK","","","","", + /*AC0-AC7*/ "","","","","","","",""; +}; + +&sgpio { + ngpios = <80>; + bus-frequency = <2000000>; + status = "okay"; + /* SGPIO lines. even: input, odd: output */ + gpio-line-names = + /*A0-A7*/ "CPU1_PRESENCE","","CPU1_THERMTRIP","","CPU1_VRHOT","","CPU1_FIVR_FAULT","","CPU1_MEM_ABCD_VRHOT","","CPU1_MEM_EFGH_VRHOT","","","","","", + /*B0-B7*/ "CPU1_MISMATCH","LED_CPU1_CH1_DIMM1_FAULT","CPU1_MEM_THERM_EVENT","LED_CPU1_CH1_DIMM2_FAULT","CPU2_PRESENCE","LED_CPU1_CH2_DIMM1_FAULT","CPU2_THERMTRIP","LED_CPU1_CH2_DIMM2_FAULT","CPU2_VRHOT","LED_CPU1_CH3_DIMM1_FAULT","CPU2_FIVR_FAULT","LED_CPU1_CH3_DIMM2_FAULT","CPU2_MEM_ABCD_VRHOT","LED_CPU1_CH4_DIMM1_FAULT","CPU2_MEM_EFGH_VRHOT","LED_CPU1_CH4_DIMM2_FAULT", + /*C0-C7*/ "","LED_CPU1_CH5_DIMM1_FAULT","","LED_CPU1_CH5_DIMM2_FAULT","CPU2_MISMATCH","LED_CPU1_CH6_DIMM1_FAULT","CPU2_MEM_THERM_EVENT","LED_CPU1_CH6_DIMM2_FAULT","","LED_FAN1_FAULT","","LED_FAN2_FAULT","","LED_FAN3_FAULT","","LED_FAN4_FAULT", + /*D0-D7*/ "","LED_FAN5_FAULT","","LED_FAN6_FAULT","","LED_FAN7_FAULT","","LED_FAN8_FAULT","","LED_CPU2_CH1_DIMM1_FAULT","","LED_CPU2_CH1_DIMM2_FAULT","","LED_CPU2_CH2_DIMM1_FAULT","","LED_CPU2_CH2_DIMM2_FAULT", + /*E0-E7*/ "","LED_CPU2_CH3_DIMM1_FAULT","","LED_CPU2_CH3_DIMM2_FAULT","","LED_CPU2_CH4_DIMM1_FAULT","","LED_CPU2_CH4_DIMM2_FAULT","","LED_CPU2_CH5_DIMM1_FAULT","","LED_CPU2_CH5_DIMM2_FAULT","","LED_CPU2_CH6_DIMM1_FAULT","","LED_CPU2_CH6_DIMM2_FAULT", + /*F0-F7*/ "SGPIO_PLD_MINOR_REV_BIT0","LED_CPU3_CH1_DIMM1_FAULT","SGPIO_PLD_MINOR_REV_BIT1","LED_CPU3_CH1_DIMM2_FAULT","SGPIO_PLD_MINOR_REV_BIT2","LED_CPU3_CH2_DIMM1_FAULT","SGPIO_PLD_MINOR_REV_BIT3","LED_CPU3_CH2_DIMM2_FAULT","SGPIO_PLD_MAJOR_REV_BIT0","LED_CPU3_CH3_DIMM1_FAULT","SGPIO_PLD_MAJOR_REV_BIT1","LED_CPU3_CH3_DIMM2_FAULT","SGPIO_PLD_MAJOR_REV_BIT2","LED_CPU3_CH4_DIMM1_FAULT","SGPIO_PLD_MAJOR_REV_BIT3","LED_CPU3_CH4_DIMM2_FAULT", + /*G0-G7*/ "MAIN_PLD_MINOR_REV_BIT0","LED_CPU3_CH5_DIMM1_FAULT","MAIN_PLD_MINOR_REV_BIT1","LED_CPU3_CH5_DIMM2_FAULT","MAIN_PLD_MINOR_REV_BIT2","LED_CPU3_CH6_DIMM1_FAULT","MAIN_PLD_MINOR_REV_BIT3","LED_CPU3_CH6_DIMM2_FAULT","MAIN_PLD_MAJOR_REV_BIT0","LED_CPU4_CH1_DIMM1_FAULT","MAIN_PLD_MAJOR_REV_BIT1","LED_CPU4_CH1_DIMM2_FAULT","MAIN_PLD_MAJOR_REV_BIT2","LED_CPU4_CH2_DIMM1_FAULT","MAIN_PLD_MAJOR_REV_BIT3","LED_CPU4_CH2_DIMM2_FAULT", + /*H0-H7*/ "","LED_CPU4_CH3_DIMM1_FAULT","","LED_CPU4_CH3_DIMM2_FAULT","","LED_CPU4_CH4_DIMM1_FAULT","","LED_CPU4_CH4_DIMM2_FAULT","","LED_CPU4_CH5_DIMM1_FAULT","","LED_CPU4_CH5_DIMM2_FAULT","","LED_CPU4_CH6_DIMM1_FAULT","","LED_CPU4_CH6_DIMM2_FAULT", + /*I0-I7*/ "","","","","","","","","","","","","","","","", + /*J0-J7*/ "","","","","","","","","","","","","","","",""; +#if 0 + status = "okay"; + gpio-line-names = + /* SGPIO output lines */ + /*OA0-OA7*/ "","","","","","","","", + /*OB0-OB7*/ "LED_CPU1_CH1_DIMM1_FAULT","LED_CPU1_CH1_DIMM2_FAULT","LED_CPU1_CH2_DIMM1_FAULT","LED_CPU1_CH2_DIMM2_FAULT","LED_CPU1_CH3_DIMM1_FAULT","LED_CPU1_CH3_DIMM2_FAULT","LED_CPU1_CH4_DIMM1_FAULT","LED_CPU1_CH4_DIMM2_FAULT", + /*OC0-OC7*/ "LED_CPU1_CH5_DIMM1_FAULT","LED_CPU1_CH5_DIMM2_FAULT","LED_CPU1_CH6_DIMM1_FAULT","LED_CPU1_CH6_DIMM2_FAULT","LED_FAN1_FAULT","LED_FAN2_FAULT","LED_FAN3_FAULT","LED_FAN4_FAULT", + /*OD0-OD7*/ "LED_FAN5_FAULT","LED_FAN6_FAULT","LED_FAN7_FAULT","LED_FAN8_FAULT","LED_CPU2_CH1_DIMM1_FAULT","LED_CPU1_CH1_DIMM2_FAULT","LED_CPU2_CH2_DIMM1_FAULT","LED_CPU2_CH2_DIMM2_FAULT", + /*OE0-OE7*/ "LED_CPU2_CH3_DIMM1_FAULT","LED_CPU2_CH3_DIMM2_FAULT","LED_CPU2_CH4_DIMM1_FAULT","LED_CPU2_CH4_DIMM2_FAULT","LED_CPU2_CH5_DIMM1_FAULT","LED_CPU2_CH5_DIMM2_FAULT","LED_CPU2_CH6_DIMM1_FAULT","LED_CPU2_CH6_DIMM2_FAULT", + /*OF0-OF7*/ "LED_CPU3_CH1_DIMM1_FAULT","LED_CPU3_CH1_DIMM2_FAULT","LED_CPU3_CH2_DIMM1_FAULT","LED_CPU3_CH2_DIMM2_FAULT","LED_CPU3_CH3_DIMM1_FAULT","LED_CPU3_CH3_DIMM2_FAULT","LED_CPU3_CH4_DIMM1_FAULT","LED_CPU3_CH4_DIMM2_FAULT", + /*OG0-OG7*/ "LED_CPU3_CH5_DIMM1_FAULT","LED_CPU3_CH5_DIMM2_FAULT","LED_CPU3_CH6_DIMM1_FAULT","LED_CPU3_CH6_DIMM2_FAULT","LED_CPU4_CH1_DIMM1_FAULT","LED_CPU4_CH1_DIMM2_FAULT","LED_CPU4_CH2_DIMM1_FAULT","LED_CPU4_CH2_DIMM2_FAULT", + /*OH0-OH7*/ "LED_CPU4_CH3_DIMM1_FAULT","LED_CPU4_CH3_DIMM2_FAULT","LED_CPU4_CH4_DIMM1_FAULT","LED_CPU4_CH4_DIMM2_FAULT","LED_CPU4_CH5_DIMM1_FAULT","LED_CPU4_CH5_DIMM2_FAULT","LED_CPU4_CH6_DIMM1_FAULT","LED_CPU4_CH6_DIMM2_FAULT", + /*OI0-OI7*/ "","","","","","","","", + /*OJ0-OJ7*/ "","","","","","","","", + /*DUMMY*/ "","","","","","","","", + /*DUMMY*/ "","","","","","","","", + + /* SGPIO input lines */ + /*IA0-IA7*/ "CPU1_PRESENCE","CPU1_THERMTRIP","CPU1_VRHOT","CPU1_FIVR_FAULT","CPU1_MEM_ABCD_VRHOT","CPU1_MEM_EFGH_VRHOT","","", + /*IB0-IB7*/ "CPU1_MISMATCH","CPU1_MEM_THERM_EVENT","CPU2_PRESENCE","CPU2_THERMTRIP","CPU2_VRHOT","CPU2_FIVR_FAULT","CPU2_MEM_ABCD_VRHOT","CPU2_MEM_EFGH_VRHOT", + /*IC0-IC7*/ "","","CPU2_MISMATCH","CPU2_MEM_THERM_EVENT","","","","", + /*ID0-ID7*/ "","","","","","","","", + /*IE0-IE7*/ "","","","","","","","", + /*IF0-IF7*/ "SGPIO_PLD_MINOR_REV_BIT0","SGPIO_PLD_MINOR_REV_BIT1","SGPIO_PLD_MINOR_REV_BIT2","SGPIO_PLD_MINOR_REV_BIT3","SGPIO_PLD_MAJOR_REV_BIT0","SGPIO_PLD_MAJOR_REV_BIT1","SGPIO_PLD_MAJOR_REV_BIT2","SGPIO_PLD_MAJOR_REV_BIT3", + /*IG0-IG7*/ "MAIN_PLD_MINOR_REV_BIT0","MAIN_PLD_MINOR_REV_BIT1","MAIN_PLD_MINOR_REV_BIT2","MAIN_PLD_MINOR_REV_BIT3","MAIN_PLD_MAJOR_REV_BIT0","MAIN_PLD_MAJOR_REV_BIT1","MAIN_PLD_MAJOR_REV_BIT2","MAIN_PLD_MAJOR_REV_BIT3", + /*IH0-IH7*/ "","","","","","","","", + /*II0-II7*/ "","","","","","","","", + /*IJ0-IJ7*/ "","","","","","","",""; +#endif +}; + +&kcs3 { + aspeed,lpc-io-reg = <0xCA2>; + status = "okay"; +}; + +&kcs4 { + aspeed,lpc-io-reg = <0xCA4>; + status = "okay"; +}; + +&sio_regs { + status = "okay"; + sio_status { + offset = <0x10C>; + bit-mask = <0x1F>; + bit-shift = <4>; + }; +}; + +&lpc_sio { + status = "okay"; +}; + +&lpc_snoop { + snoop-ports = <0x80>; + status = "okay"; +}; + +&mbox { + status = "okay"; +}; + +&uart_routing { + status = "okay"; +}; + +/** + * SAFS through SPI1 is available only on Wilson Point. + * These pins are used as fan presence checking gpios in WFP + * so commenting it out for now. + * &spi1 { + * status = "okay"; + * + * flash@0 { + * m25p,fast-read; + * status = "okay"; + * }; + *}; + */ + +&uart1 { + //Host Console + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_txd1_default + &pinctrl_rxd1_default + &pinctrl_nrts1_default + &pinctrl_ndtr1_default + &pinctrl_ndsr1_default + &pinctrl_ncts1_default + &pinctrl_ndcd1_default + &pinctrl_nri1_default>; +}; + +&uart2 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_txd2_default + &pinctrl_rxd2_default + &pinctrl_nrts2_default + &pinctrl_ndtr2_default + &pinctrl_ndsr2_default + &pinctrl_ncts2_default + &pinctrl_ndcd2_default + &pinctrl_nri2_default>; +}; + +&uart3 { + status = "okay"; +}; + +&uart4 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <>; +}; + +&uart5 { + //BMC Console + status = "okay"; +}; + +&mac1 { + status = "okay"; + + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>; +}; + +&mac0 { + status = "okay"; + + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_rmii1_default>; + use-ncsi; +}; + +&i2c0 { + multi-master; + general-call; + aspeed,dma-buf-size = <4095>; + aspeed,hw-timeout-ms = <300>; + status = "okay"; +}; + +&i2c1 { + multi-master; + aspeed,dma-buf-size = <4095>; + aspeed,hw-timeout-ms = <300>; + status = "okay"; +}; + +&i2c2 { + multi-master; + aspeed,dma-buf-size = <4095>; + aspeed,hw-timeout-ms = <300>; + status = "okay"; +}; + +&i2c3 { + multi-master; + aspeed,dma-buf-size = <4095>; + aspeed,hw-timeout-ms = <300>; + status = "okay"; + + rtc-pch@44 { + compatible = "rtc,pchc620"; + reg = <0x44>; + }; +}; + +&i2c4 { + multi-master; + aspeed,dma-buf-size = <4095>; + aspeed,hw-timeout-ms = <300>; + status = "okay"; +}; + +&i2c5 { + bus-frequency = <1000000>; + multi-master; + aspeed,dma-buf-size = <4095>; + aspeed,hw-timeout-ms = <300>; + status = "okay"; +}; + +&i2c6 { + multi-master; + aspeed,dma-buf-size = <4095>; + aspeed,hw-timeout-ms = <300>; + status = "okay"; +}; + +&i2c7 { + multi-master; + #retries = <3>; + aspeed,dma-buf-size = <4095>; + aspeed,hw-timeout-ms = <300>; + status = "okay"; +}; + +&i2c9 { + multi-master; + aspeed,dma-buf-size = <4095>; + aspeed,hw-timeout-ms = <300>; + status = "okay"; +}; + +&i2c11 { + multi-master; + aspeed,dma-buf-size = <4095>; + aspeed,hw-timeout-ms = <300>; + status = "okay"; +}; + +&i2c13 { + multi-master; + aspeed,dma-buf-size = <4095>; + aspeed,hw-timeout-ms = <300>; + status = "okay"; +}; + +&gfx { + status = "okay"; + memory-region = <&gfx_memory>; +}; + +&vuart { + status = "okay"; + + /* We enable the VUART here, but leave it in a state that does + * not interfere with the SuperIO. The goal is to have both the + * VUART and the SuperIO available and decide at runtime whether + * the VUART should actually be used. For that reason, configure + * an "invalid" IO address and an IRQ that is not used by the + * BMC. + */ + aspeed,lpc-io-reg = <0xffff>; + aspeed,lpc-interrupts = <15>; +}; + +&pwm_tacho { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pwm0_default &pinctrl_pwm1_default + &pinctrl_pwm2_default &pinctrl_pwm3_default + &pinctrl_pwm4_default &pinctrl_pwm5_default + &pinctrl_pwm6_default &pinctrl_pwm7_default>; + + fan@0 { + reg = <0x00>; + aspeed,fan-tach-ch = /bits/ 8 <0x00 0x01>; + }; + fan@1 { + reg = <0x01>; + aspeed,fan-tach-ch = /bits/ 8 <0x02 0x03>; + }; + fan@2 { + reg = <0x02>; + aspeed,fan-tach-ch = /bits/ 8 <0x04 0x05>; + }; + fan@3 { + reg = <0x03>; + aspeed,fan-tach-ch = /bits/ 8 <0x06 0x07>; + }; + fan@4 { + reg = <0x04>; + aspeed,fan-tach-ch = /bits/ 8 <0x08 0x09>; + }; + fan@5 { + reg = <0x05>; + aspeed,fan-tach-ch = /bits/ 8 <0x0A 0x0B>; + }; + fan@6 { + reg = <0x06>; + aspeed,fan-tach-ch = /bits/ 8 <0x0C 0x0D>; + }; + fan@7 { + reg = <0x07>; + aspeed,fan-tach-ch = /bits/ 8 <0x0E 0x0F>; + }; + +}; + +&timer { +/* + * Available settings: + * fttmr010,pwm-outputs = <5>, <6>, <7>, <8>; + * pinctrl-0 = <&pinctrl_timer5_default &pinctrl_timer6_default + * &pinctrl_timer7_default &pinctrl_timer8_default>; + */ + fttmr010,pwm-outputs = <6>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_timer6_default>; + #pwm-cells = <3>; + status = "okay"; +}; + +&video { + status = "okay"; + memory-region = <&video_engine_memory>; +}; + +&vhub { + status = "okay"; +}; diff --git a/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed/openbmc-flash-layout-32MB.dtsi b/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed/openbmc-flash-layout-32MB.dtsi index 874bfd4e3b..85ee3b1323 100644 --- a/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed/openbmc-flash-layout-32MB.dtsi +++ b/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed/openbmc-flash-layout-32MB.dtsi @@ -22,12 +22,12 @@ partitions { }; rofs@580000 { - reg = <0x580000 0x1780000>; + reg = <0x580000 0x1880000>; label = "rofs"; }; - rwfs@1d00000 { - reg = <0x1d00000 0x300000>; + rwfs@1e00000 { + reg = <0x1e00000 0x200000>; label = "rwfs"; }; }; diff --git a/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed/openbmc-flash-layout-64MB.dtsi b/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed/openbmc-flash-layout-64MB.dtsi new file mode 100644 index 0000000000..db50ad6796 --- /dev/null +++ b/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed/openbmc-flash-layout-64MB.dtsi @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0+ +// 64MB flash layout: + +partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + u-boot@0 { + reg = <0x0 0x60000>; // 384KB + label = "u-boot"; + }; + + u-boot-env@60000 { + reg = <0x60000 0x20000>; // 128KB + label = "u-boot-env"; + }; + + kernel@80000 { + reg = <0x80000 0x880000>; // 8704KB + label = "kernel"; + }; + + rofs@900000 { + reg = <0x900000 0x2700000>; // 39MB + label = "rofs"; + }; + + rwfs@3000000 { + reg = <0x3000000 0x100000>; // 16MB + label = "rwfs"; + }; +}; diff --git a/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed_%.bbappend b/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed_%.bbappend index 7ced02fda2..9646283b5f 100644 --- a/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed_%.bbappend +++ b/meta-ibs/meta-ast2500/recipes-kernel/linux/linux-aspeed_%.bbappend @@ -19,4 +19,6 @@ SRC_URI += " \ file://sila.cfg \ file://aspeed-bmc-sila-cp2-5422.dts;subdir=git/arch/arm/boot/dts \ file://openbmc-flash-layout-32MB.dtsi;subdir=git/arch/arm/boot/dts \ + file://aspeed-bmc-sila-cp2-5422-64mb.dts;subdir=git/arch/arm/boot/dts \ + file://openbmc-flash-layout-64MB.dtsi;subdir=git/arch/arm/boot/dts \ " diff --git a/meta-ibs/meta-ast2500/recipes-phosphor/configuration/entity-manager/SILA-Baseboard-full.json b/meta-ibs/meta-ast2500/recipes-phosphor/configuration/entity-manager/SILA-Baseboard-full.json index b70f41d710..5211809dc9 100644 --- a/meta-ibs/meta-ast2500/recipes-phosphor/configuration/entity-manager/SILA-Baseboard-full.json +++ b/meta-ibs/meta-ast2500/recipes-phosphor/configuration/entity-manager/SILA-Baseboard-full.json @@ -107,7 +107,7 @@ "Type": "AspeedFan" }, { - "Address": 79, + "Address": "0x4f", "Bus": 6, "Name": "Right side of the board Temp", "Thresholds": [ @@ -139,7 +139,7 @@ "Type": "TMP75" }, { - "Address": 72, + "Address": "0x48", "Bus": 6, "Name": "PCH & M.2 Temp", "Thresholds": [ @@ -171,7 +171,7 @@ "Type": "TMP75" }, { - "Address": 77, + "Address": "0x4d", "Bus": 6, "Name": "Inlet BRD Temp", "Thresholds": [ @@ -203,7 +203,7 @@ "Type": "TMP75" }, { - "Address": 73, + "Address": "0x49", "Bus": 6, "Name": "CPUs Temp", "Thresholds": [ @@ -736,39 +736,7 @@ } ], "Type": "TMP75" - }, - { - "Address": 75, - "Bus": 6, - "Name": "VR 2 Temp", - "Thresholds": [ - { - "Direction": "greater than", - "Name": "upper critical", - "Severity": 1, - "Value": 115 - }, - { - "Direction": "greater than", - "Name": "upper non critical", - "Severity": 0, - "Value": 110 - }, - { - "Direction": "less than", - "Name": "lower non critical", - "Severity": 0, - "Value": 5 - }, - { - "Direction": "less than", - "Name": "lower critical", - "Severity": 1, - "Value": 0 - } - ], - "Type": "TMP75" - } + } ], "Name": "SILA Baseboard", "Probe": "xyz.openbmc_project.FruDevice({'PRODUCT_PRODUCT_NAME': 'CP.*'})", diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/virtual-asset-tag b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/virtual-asset-tag index a911e551c1..a54bac6419 100644 --- a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/virtual-asset-tag +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/virtual-asset-tag @@ -4,7 +4,8 @@ # model="CP2.*" -spi_flash_model="mx25l25635e" +spi_32mb_flash_model="mx25l25635e" +spi_64mb_flash_model="n25q512a" interface=xyz.openbmc_project.FruDevice asset_tag_var=PRODUCT_ASSET_TAG @@ -29,7 +30,7 @@ get_asset_tag() { echo "${tag}" } -if `dmesg | grep -q "aspeed-smc 1e620000.spi: ${spi_flash_model}"` ; then +if `dmesg | grep -q "aspeed-smc 1e620000.spi: ${spi_32mb_flash_model}"` || `dmesg | grep -q "aspeed-smc 1e620000.spi: ${spi_64mb_flash_model}"` ; then run_cmd /usr/bin/busctl set-property ${interface} $(get_model_path) ${interface} ${asset_tag_var} s "${asset_tag_vm}" else if [ "$(get_asset_tag)" = "...................." ] ; then diff --git a/meta-ibs/meta-common/recipes-ibs/images/obmc-phosphor-image.bbappend b/meta-ibs/meta-common/recipes-ibs/images/obmc-phosphor-image.bbappend index bf8f1b8b33..5525afca9c 100644 --- a/meta-ibs/meta-common/recipes-ibs/images/obmc-phosphor-image.bbappend +++ b/meta-ibs/meta-common/recipes-ibs/images/obmc-phosphor-image.bbappend @@ -5,13 +5,21 @@ IMAGE_INSTALL += " openssl-bin \ phosphor-u-boot-mgr \ phosphor-host-postd \ phosphor-post-code-manager \ - beepcode-mgr \ biosconfig-manager \ bmcweb-init-certs \ firmware-watchdog \ ibmcutil \ smbios-mdrv2 \ - psu-manager \ + " + +IMAGE_INSTALL += " net-snmp-lib-agent \ + net-snmp-lib-helpers \ + net-snmp-lib-mibs \ + net-snmp-lib-netsnmp \ + net-snmp-lib-trapd \ + net-snmp-mibs \ + net-snmp-server-snmpd \ + net-snmp-server-snmptrapd \ " OBMC_IMAGE_EXTRA_INSTALL += " " diff --git a/meta-ibs/meta-common/recipes-ibs/ipmi/intel-ipmi-oem_git.bb b/meta-ibs/meta-common/recipes-ibs/ipmi/intel-ipmi-oem_git.bb index 30f7542311..87a30b895c 100644 --- a/meta-ibs/meta-common/recipes-ibs/ipmi/intel-ipmi-oem_git.bb +++ b/meta-ibs/meta-common/recipes-ibs/ipmi/intel-ipmi-oem_git.bb @@ -14,7 +14,7 @@ DEPENDS = "boost phosphor-ipmi-host phosphor-logging systemd intel-dbus-interfac inherit pkgconfig cmake obmc-phosphor-ipmiprovider-symlink -EXTRA_OECMAKE="-DENABLE_TEST=0 -DYOCTO=1" +EXTRA_OECMAKE="-DENABLE_TEST=0 -DYOCTO=1 -DMDR_V1_SUPPORT=1" LIBRARY_NAMES = "libzinteloemcmds.so" diff --git a/meta-ibs/meta-common/recipes-ibs/packagegroups/packagegroup-ibs-apps.bb b/meta-ibs/meta-common/recipes-ibs/packagegroups/packagegroup-ibs-apps.bb index 88d95bb2b5..095170ad47 100644 --- a/meta-ibs/meta-common/recipes-ibs/packagegroups/packagegroup-ibs-apps.bb +++ b/meta-ibs/meta-common/recipes-ibs/packagegroups/packagegroup-ibs-apps.bb @@ -51,6 +51,7 @@ RDEPENDS:${PN}-system = " \ phosphor-power-regulators \ ${PN}-interface \ ${PN}-cli \ + peci-pcie \ " SUMMARY:${PN}-interface = "Interfaces" @@ -58,6 +59,9 @@ RDEPENDS:${PN}-interface = " \ bmcweb \ webui-vue \ phosphor-ipmi-ipmb \ + phosphor-snmp \ + obmc-sila-snmp-agent \ + obmc-sila-snmp-cfg-manager \ " SUMMARY:${PN}-cli = "CLI utils" diff --git a/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0003-Add-new-fields-to-cpu.patch b/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0003-Add-new-fields-to-cpu.patch new file mode 100644 index 0000000000..f10da21652 --- /dev/null +++ b/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0003-Add-new-fields-to-cpu.patch @@ -0,0 +1,70 @@ +From 4b2a14e510495ef42d638584a62ab3c9ccf24056 Mon Sep 17 00:00:00 2001 +From: eportnov <eportnov@ibs.ru> +Date: Thu, 7 Jul 2022 17:52:12 +0300 +Subject: [PATCH] Add new fields to cpu + +--- + .../Inventory/Item/Cpu.interface.yaml | 36 ++++++++++++++++++- + 1 file changed, 35 insertions(+), 1 deletion(-) + +diff --git a/yaml/xyz/openbmc_project/Inventory/Item/Cpu.interface.yaml b/yaml/xyz/openbmc_project/Inventory/Item/Cpu.interface.yaml +index 211673d..174a80e 100644 +--- a/yaml/xyz/openbmc_project/Inventory/Item/Cpu.interface.yaml ++++ b/yaml/xyz/openbmc_project/Inventory/Item/Cpu.interface.yaml +@@ -37,6 +37,10 @@ properties: + type: uint32 + description: > + Max Speed in megahertz the CPU can support. ++ - name: MinSpeedMHz ++ type: uint32 ++ description: > ++ Min Speed in megahertz the CPU can support. + - name: Characteristics + type: array[enum[self.Capability]] + description: > +@@ -72,6 +76,12 @@ properties: + The set of boolean flags for processor's capability, such as + 64-bit Capable, Multi-Core, Hardware Thread, Execute Protection, + Enhanced Virtualization, Power/Performance Control etc. ++ - name: ProcessorArchitecture ++ type: enum[self.ProcessorArchitecture] ++ description: > ++ The set of boolean flags for processor's capability, such as ++ 64-bit Capable, Multi-Core, Hardware Thread, Execute Protection, ++ Enhanced Virtualization, Power/Performance Control etc. + + enumerations: + - name: Capability +@@ -130,7 +140,31 @@ enumerations: + - name: x86_64 + description: > + Support power/performance control. +- ++ ++ - name: ProcessorArchitecture ++ description: > ++ Contain the string that identifies the architecture ++ of the processor contained in this socket ++ values: ++ - name: ARM ++ description: > ++ ARM. ++ - name: IA_64 ++ description: > ++ Intel Itanium. ++ - name: MIPS ++ description: > ++ MIPS. ++ - name: OEM ++ description: > ++ OEM-defined. ++ - name: Power ++ description: > ++ Power. ++ - name: x86 ++ description: > ++ x86 or x86-64. ++ + associations: + - name: associated_pcie_slots + description: > diff --git a/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0036-add-fields.patch b/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0036-add-fields.patch new file mode 100644 index 0000000000..6665de9d5d --- /dev/null +++ b/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0036-add-fields.patch @@ -0,0 +1,71 @@ +From 57ccd7833ab4a7d91df3431783dfea3ab12c77b8 Mon Sep 17 00:00:00 2001 +From: eportnov <eportnov@ibs.ru> +Date: Tue, 5 Jul 2022 11:37:22 +0300 +Subject: [PATCH] add fields + +--- + .../Inventory/Item/Cpu.interface.yaml | 44 +++++++++++++++++++ + 1 file changed, 44 insertions(+) + +diff --git a/yaml/xyz/openbmc_project/Inventory/Item/Cpu.interface.yaml b/yaml/xyz/openbmc_project/Inventory/Item/Cpu.interface.yaml +index 222f117..211673d 100644 +--- a/yaml/xyz/openbmc_project/Inventory/Item/Cpu.interface.yaml ++++ b/yaml/xyz/openbmc_project/Inventory/Item/Cpu.interface.yaml +@@ -61,6 +61,17 @@ properties: + description: > + The microcode information for this processor + default: 0 ++ - name: Version ++ type: string ++ description: > ++ Vendor or supplier ++ default: "" ++ - name: InstructionSet ++ type: enum[self.Instruction] ++ description: > ++ The set of boolean flags for processor's capability, such as ++ 64-bit Capable, Multi-Core, Hardware Thread, Execute Protection, ++ Enhanced Virtualization, Power/Performance Control etc. + + enumerations: + - name: Capability +@@ -86,6 +97,39 @@ enumerations: + - name: PowerPerformanceControl + description: > + Support power/performance control. ++ ++ - name: Instruction ++ description: > ++ List of capabilities that a processor can support. ++ Values are based off DMTF DSP0134 specification. ++ values: ++ - name: ARM_A32 ++ description: > ++ Capable of 64-bit. ++ - name: ARM_A64 ++ description: > ++ Support multi-core. ++ - name: IA_64 ++ description: > ++ Support hardware thread. ++ - name: MIPS32 ++ description: > ++ Support execute protection. ++ - name: MIPS64 ++ description: > ++ Support enhanced virtualization. ++ - name: OEM ++ description: > ++ Support power/performance control. ++ - name: PowerISA ++ description: > ++ Support power/performance control. ++ - name: x86 ++ description: > ++ Support power/performance control. ++ - name: x86_64 ++ description: > ++ Support power/performance control. + + associations: + - name: associated_pcie_slots diff --git a/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0037-add-new-dimm-fields.patch b/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0037-add-new-dimm-fields.patch new file mode 100644 index 0000000000..34dc1ab854 --- /dev/null +++ b/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0037-add-new-dimm-fields.patch @@ -0,0 +1,36 @@ +From 29f5e21a995d79789fb28cef1c2b459fe9df9276 Mon Sep 17 00:00:00 2001 +From: eportnov <eportnov@ibs.ru> +Date: Fri, 8 Jul 2022 16:34:52 +0300 +Subject: [PATCH] add new dimm fields + +--- + .../openbmc_project/Inventory/Item/Dimm.interface.yaml | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/yaml/xyz/openbmc_project/Inventory/Item/Dimm.interface.yaml b/yaml/xyz/openbmc_project/Inventory/Item/Dimm.interface.yaml +index d3a7df7..ba326b0 100644 +--- a/yaml/xyz/openbmc_project/Inventory/Item/Dimm.interface.yaml ++++ b/yaml/xyz/openbmc_project/Inventory/Item/Dimm.interface.yaml +@@ -15,6 +15,7 @@ properties: + Socket on base board where Memory located, for example CPU1_DIMM_B1. + - name: MemoryType + type: enum[self.DeviceType] ++ default: DRAM + description: > + Type of memory. + - name: MemoryTypeDetail +@@ -66,6 +67,14 @@ properties: + default: Unknown + description: > + Memory Technology of this memory. ++ - name: Description ++ type: string ++ description: > ++ Description ++ - name: Model ++ type: string ++ description: > ++ Model + + enumerations: + - name: Ecc diff --git a/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0038-repair_telemetry_yaml.patch b/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0038-repair_telemetry_yaml.patch new file mode 100644 index 0000000000..de4c35abbc --- /dev/null +++ b/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0038-repair_telemetry_yaml.patch @@ -0,0 +1,156 @@ +From 34d6bfbcdea771bbfa957fe72f9e3070ccec4202 Mon Sep 17 00:00:00 2001 +From: eportnov <eportnov@ibs.ru> +Date: Fri, 15 Jul 2022 17:27:25 +0300 +Subject: [PATCH] repair_telemetry_yaml + +--- + .../Telemetry/ReportManager.interface.yaml | 111 +++++++++++++++--- + 1 file changed, 95 insertions(+), 16 deletions(-) + +diff --git a/yaml/xyz/openbmc_project/Telemetry/ReportManager.interface.yaml b/yaml/xyz/openbmc_project/Telemetry/ReportManager.interface.yaml +index ae8d36f..decc3d0 100644 +--- a/yaml/xyz/openbmc_project/Telemetry/ReportManager.interface.yaml ++++ b/yaml/xyz/openbmc_project/Telemetry/ReportManager.interface.yaml +@@ -10,21 +10,19 @@ methods: + /xyz/openbmc_project/Telemetry/Reports/{Domain}/{Name} where + Domain and Name are parameters of this method. + parameters: +- - name: name ++ - name: reportId + type: string + description: > + Defines the name of report to be exposed over D-Bus. Service allows + to use separator '/' in name to group reports in directory. + - name: reportingType +- type: enum[xyz.openbmc_project.Telemetry.Report.ReportingType] +- description: Defines report type +- - name: reportUpdates +- type: enum[xyz.openbmc_project.Telemetry.Report.ReportUpdates] +- description: Defines report update type +- - name: appendLimit +- type: size ++ type: string + description: > +- Defines the maximum number of entries in 'Readings' property. ++ Defines report type ++ Variants: ++ - Periodic ++ - OnRequest ++ - OnChange + - name: emitsReadingsUpdate + type: boolean + description: > +@@ -35,25 +33,106 @@ methods: + description: > + Defines presence of Report in Metric Report Collection in Redfish + Telemetry Service. ++ - name: interval ++ type: uint64 ++ description: > ++ Defines period of time in milliseconds when Report is updated with ++ new readings. Minimal interval is defined in MinInterval property(default: 1000). ++ - name: metricParams ++ type: array[struct[object_path,string,string,string]] ++ description: > ++ Array of struct of metric parameters where: ++ - first parameter is an array of DBus ++ sensor paths(example /xyz/openbmc_project/sensors/voltage/PVCCIN_CPU1); ++ - second parameter specifies operation type. ++ Variants: ++ -- Maximum ++ -- Minimum ++ -- Average ++ -- Summation ++ - third is a metric Id (store by a user) ++ - fourth is a metadata (store by a user) ++ returns: ++ - name: reportPath ++ type: object_path ++ description: > ++ Path to new report -> /xyz/openbmc_project/Telemetry/Reports/{name}. ++ ++ - name: AddReportFutureVersion ++ description: > ++ Create new object that represent Report with ++ xyz.openbmc_project.Telemetry.Report interface stored in path ++ /xyz/openbmc_project/Telemetry/Reports/{Domain}/{Name} where ++ Domain and Name are parameters of this method. ++ parameters: ++ - name: reportId ++ type: string ++ description: > ++ Defines the name of report to be exposed over D-Bus. Service allows ++ to use separator '/' in name to group reports in directory. ++ - name: reportName ++ type: string ++ description: > ++ Defines the name of report to be exposed over D-Bus. Service allows ++ to use separator '/' in name to group reports in directory. ++ - name: reportingType ++ type: string ++ description: > ++ Defines report type ++ Variants: ++ - Periodic ++ - OnRequest ++ - OnChange ++ - name: reportUpdates ++ type: string ++ description: > ++ Defines report updates ++ Variants: ++ - Overwrite ++ - AppendStopsWhenFull ++ - AppendWrapsWhenFull ++ - name: appendLimit ++ type: uint64 ++ description: > ++ Defines limit of values ++ - name: reportActions ++ type: array[string] ++ description: > ++ Defines report actions ++ May add variants: ++ - EmitsReadingsUpdate ++ - LogToMetricReportsCollection + - name: interval + type: uint64 + description: > + Defines period of time in milliseconds when Report is updated with + new readings. Minimal interval is defined in MinInterval property. + - name: metricParams +- type: array[struct[array[object_path],enum[xyz.openbmc_project.Telemetry.Report.OperationType],string,string,enum[xyz.openbmc_project.Telemetry.Report.CollectionTimescope],uint64]] ++ type: array[struct[array[struct[object_path,string]],string,string,string,uint64]] + description: > +- Array of metric parameters where first parameter is an array of DBus +- sensor paths. Second parameter specifies operation type. Third is a +- metric Id and fourth is a metadata, both are used to store user +- details. Fifth and sixth are used for collection timescope and +- collection duration. ++ Array of struct of metric parameters where: ++ - first parameter is an array of struct of: ++ -- DBus sensor paths ++ (example /xyz/openbmc_project/sensors/voltage/PVCCIN_CPU1); ++ -- metadata (store by a user); ++ - second parameter specifies operation type ++ Variants: ++ -- Maximum ++ -- Minimum ++ -- Average ++ -- Summation ++ - third is a metric Id (store by a user) ++ - fourth is a CollectionTimeScope ++ Variants: ++ -- Point; ++ -- Interval; ++ -- StartupInterval; ++ - fifth is a CollectionTimeScope period + returns: + - name: reportPath + type: object_path + description: > + Path to new report -> /xyz/openbmc_project/Telemetry/Reports/{name}. +- + properties: + - name: MaxReports + type: size diff --git a/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend b/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend index 3da80680fe..fa37528261 100644 --- a/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend +++ b/meta-ibs/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend @@ -20,4 +20,8 @@ SRC_URI += "file://0007-ipmi-set-BIOS-id.patch \ file://0033-update-meson-build-for-PLDM-FWU-interfaces.patch \ file://0034-Add-username-property-to-SessionInfo-interface.patch \ file://0035-Remove-read-only-flag-from-NTPServers.patch \ + file://0036-add-fields.patch \ + file://0003-Add-new-fields-to-cpu.patch \ + file://0037-add-new-dimm-fields.patch \ + file://0038-repair_telemetry_yaml.patch \ " diff --git a/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend b/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend index 339740dfbd..56385128a4 100644 --- a/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend +++ b/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend @@ -2,7 +2,8 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" DESCRIPTION = "Pinging system watchdog before BMC update" -SRC_URI += "file://obmc-shutdown.sh \ +SRC_URI += "file://obmc-init.sh \ + file://obmc-shutdown.sh \ file://obmc-update.sh \ " diff --git a/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/obmc-init.sh b/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/obmc-init.sh new file mode 100644 index 0000000000..902ca9d617 --- /dev/null +++ b/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/obmc-init.sh @@ -0,0 +1,453 @@ +#!/bin/sh + +fslist="proc sys dev run" +rodir=run/initramfs/ro +rwdir=run/initramfs/rw +upper=$rwdir/cow +work=$rwdir/work +nfs_bootargs="" +ipaddr="" + +cd / +mkdir -p $fslist +mount dev dev -tdevtmpfs +mount sys sys -tsysfs +mount proc proc -tproc +if ! grep run proc/mounts +then + mount tmpfs run -t tmpfs -o mode=755,nodev +fi + +mkdir -p $rodir $rwdir + +cp -rp init shutdown update whitelist bin sbin usr lib etc var run/initramfs + +# To start a interactive shell with job control at this point, run +# getty 38400 ttyS4 + +findmtd() { + m=$(grep -xl "$1" /sys/class/mtd/*/name) + m=${m%/name} + m=${m##*/} + echo $m +} + +blkid_fs_type() { + # Emulate util-linux's `blkid -s TYPE -o value $1` + # Example busybox blkid output: + # # blkid /dev/mtdblock5 + # /dev/mtdblock5: TYPE="squashfs" + # Process output to extract TYPE value "squashfs". + blkid $1 | sed -e 's/^.*TYPE="//' -e 's/".*$//' +} + +probe_fs_type() { + fst=$(blkid_fs_type $1) + echo ${fst:=jffs2} +} + +# This fw_get_env_var is a possibly broken version of fw_printenv that +# does not check the crc or flag byte. +# The u-boot environment starts with a crc32, followed by a flag byte +# when a redundannt environment is configured, followed by var=value\0 sets. +# The flag byte for nand is a 1 byte counter; for nor it is a 1 or 0 byte. + +get_fw_env_var() { + # do we have 1 or 2 copies of the environment? + # count non-blank non-comment lines + # copies=$(grep -v ^# /etc/fw_env.config | grep -c [::alnum::]) + # ... we could if we had the fw_env.config in the initramfs + copies=2 + + # * Change \n to \r and \0 to \n + # * Skip to the 5th byte to skip over crc + # * then skip to the first or 2nd byte to skip over flag if it exists + # * stop parsing at first empty line corresponding to the + # double \0 at the end of the environment. + # * print the value of the variable name passed as argument + + envdev=$(findmtd u-boot-env) + if test -n $envdev + then + cat /dev/$envdev | + tr '\n\000' '\r\n' | + tail -c +5 | tail -c +${copies-1} | + sed -ne '/^$/,$d' -e "s/^$1=//p" + fi +} + +setup_resolv() { + runresolv=/run/systemd/resolve/resolv.conf + etcresolv=/etc/resolv.conf + + if test ! -e $etcresolv -a ! -L $etcresolv + then + mkdir -p ${runresolv%/*} + ln -s $runresolv $etcresolv + fi + if test ! -f $runresolv + then + cat /proc/net/pnp > $runresolv + fi + + return 0 +} + +try_tftp() { + # split into tftp:// host:port/ path/on/remote + # then spilt off / and then :port from the end of host:port/ + # and : from the beginning of port + + rest="${1#tftp://}" + path=${rest#*/} + host=${rest%$path} + host="${host%/}" + port="${host#${host%:*}}" + host="${host%$port}" + port="${port#:}" + + setup_resolv + + if test -z "$host" -o -z "$path" + then + debug_takeover "Invalid tftp download url '$url'." + elif echo "Downloading '$url' from $host ..." && + ! tftp -g -r "$path" -l /run/image-rofs "$host" ${port+"$port"} + then + debug_takeover "Download of '$url' failed." + fi +} + +try_wget() { + setup_resolv + + echo "Downloading '$1' ..." + if ! wget -O /run/image-rofs "$1" + then + debug_takeover "Download of '$url' failed." + fi +} + +debug_takeover() { + echo "$@" + + if ! grep -w enable-initrd-debug-sh "$optfile" + then + echo "Fatal error, triggering kernel panic!" + exit 1 + fi + + test -n "$@" && echo Try to manually fix. + cat << HERE +After fixing run exit to continue this script, or reboot -f to retry, or +touch /takeover and exit to become PID 1 allowing editing of this script. +HERE + + while ! /bin/sh && ! test -f /takeover + do + echo /bin/sh failed, retrying + done + + # Touch /takeover in the above shell to become pid 1 + if test -e /takeover + then + cat << HERE + +Takeover of init requested. Executing /bin/sh as PID 1. +When finished exec new init or cleanup and run reboot -f. + +Warning: No job control! Shell exit will panic the system! +HERE + export PS1=init#\ + exec /bin/sh + fi +} + +rofs=$(findmtd rofs) +rwfs=$(findmtd rwfs) + +rodev=/dev/mtdblock${rofs#mtd} +rwdev=/dev/mtdblock${rwfs#mtd} + +# Set to y for yes, anything else for no. +force_rwfst_jffs2=y +flash_images_before_init=n +consider_download_files=y +consider_download_tftp=y +consider_download_http=y +consider_download_ftp=y + +rofst=squashfs +rwfst=$(probe_fs_type $rwdev) +roopts=ro +rwopts=rw + +image=/run/initramfs/image- +trigger=${image}rwfs + +init=/sbin/init +fsckbase=/sbin/fsck. +fsck=$fsckbase$rwfst +fsckopts=-a +optfile=/run/initramfs/init-options +optbase=/run/initramfs/init-options-base +urlfile=/run/initramfs/init-download-url +update=/run/initramfs/update + +if test -e /${optfile##*/} +then + cp /${optfile##*/} $optfile +fi + +if test -e /${optbase##*/} +then + cp /${optbase##*/} $optbase +else + touch $optbase +fi + +if test ! -f $optfile +then + cat /proc/cmdline $optbase > $optfile + get_fw_env_var openbmcinit >> $optfile + get_fw_env_var openbmconce >> $optfile +fi + +echo rofs = $rofs $rofst rwfs = $rwfs $rwfst + +if grep -w debug-init-sh $optfile +then + if grep -w enable-initrd-debug-sh "$optfile" + then + debug_takeover "Debug initial shell requested by command line." + else + echo "Need to also add enable-initrd-debug-sh for debug shell." + fi +fi + +if test "x$consider_download_files" = xy && + grep -w openbmc-init-download-files $optfile +then + if test -f ${urlfile##*/} + then + cp ${urlfile##*/} $urlfile + fi + if test ! -f $urlfile + then + get_fw_env_var openbmcinitdownloadurl > $urlfile + fi + url="$(cat $urlfile)" + rest="${url#*://}" + proto="${url%$rest}" + + if test -z "$url" + then + echo "Download url empty. Ignoring download request." + elif test -z "$proto" + then + echo "Download failed." + elif test "$proto" = tftp:// + then + if test "x$consider_download_tftp" = xy + then + try_tftp "$url" + else + echo "Download failed." + fi + elif test "$proto" = http:// + then + if test "x$consider_download_http" = xy + then + try_wget "$url" + else + echo "Download failed." + fi + elif test "$proto" = ftp:// + then + if test "x$consider_download_ftp" = xy + then + try_wget "$url" + else + echo "Download failed." + fi + else + echo "Download failed." + fi +fi + +# If there are images in root move them to /run/initramfs/ or /run/ now. +imagebasename=${image##*/} +if test -n "${imagebasename}" && ls /${imagebasename}* > /dev/null 2>&1 +then + if test "x$flash_images_before_init" = xy + then + echo "Flash images found, will update before starting init." + mv /${imagebasename}* ${image%$imagebasename} + else + echo "Flash images found, will use but deferring flash update." + mv /${imagebasename}* /run/ + fi +fi + +if grep -w clean-rwfs-filesystem $optfile +then + echo "Cleaning of read-write overlay filesystem requested." + touch $trigger +fi + +if grep -w factory-reset $optfile +then + echo "Factory reset requested." + touch $trigger + do_save=--no-save-files +else + do_save=--save-files +fi + +if test "x$force_rwfst_jffs2" = xy -a $rwfst != jffs2 -a ! -f $trigger +then + echo "Converting read-write overlay filesystem to jffs2 forced." + touch $trigger +fi + +if ls $image* > /dev/null 2>&1 +then + if ! test -x $update + then + debug_takeover "Flash update requested but $update missing!" + elif test -f $trigger -a ! -s $trigger + then + if [ $do_save = "--save-files" ] + then + echo "Saving selected files from read-write overlay filesystem." + else + echo "No files will be selected for save." + fi + $update --no-restore-files $do_save + echo "Clearing read-write overlay filesystem." + flash_eraseall /dev/$rwfs + echo "Restoring saved files to read-write overlay filesystem." + touch $trigger + $update --no-save-files --clean-saved-files + else + $update --clean-saved-files $do_save + fi + + rwfst=$(probe_fs_type $rwdev) + fsck=$fsckbase$rwfst +fi + +if grep -w overlay-filesystem-in-ram $optfile +then + rwfst=none +fi + +copyfiles= +if grep -w copy-files-to-ram $optfile +then + rwfst=none + copyfiles=y +fi + +# It would be nice to do this after fsck but that mean rofs is mounted +# which triggers the mtd is mounted check +if test "$rwfst$copyfiles" = noney +then + touch $trigger + $update --copy-files --clean-saved-files --no-restore-files +fi + +if grep -w copy-base-filesystem-to-ram $optfile && + test ! -e /run/image-rofs && ! cp $rodev /run/image-rofs +then + # Remove any partial copy to avoid attempted usage later + if test -e /run/image-rofs + then + ls -l /run/image-rofs + rm -f /run/image-rofs + fi + debug_takeover "Copying $rodev to /run/image-rofs failed." +fi + +if test -s /run/image-rofs +then + rodev=/run/image-rofs + roopts=$roopts,loop +fi + +mount $rodev $rodir -t $rofst -o $roopts + +if test -x $rodir$fsck +then + for fs in $fslist + do + mount --bind $fs $rodir/$fs + done + chroot $rodir $fsck $fsckopts $rwdev + rc=$? + for fs in $fslist + do + umount $rodir/$fs + done + if test $rc -gt 1 + then + debug_takeover "fsck of read-write fs on $rwdev failed (rc=$rc)" + fi +elif test "$rwfst" != jffs2 -a "$rwfst" != none +then + echo "No '$fsck' in read only fs, skipping fsck." +fi + +if test "$rwfst" = none +then + echo "Running with read-write overlay in RAM for this boot." + echo "No state will be preserved unless flash update performed." +elif ! mount $rwdev $rwdir -t $rwfst -o $rwopts +then + msg="$(cat)" << HERE + +Mounting read-write $rwdev filesystem failed. Please fix and run + mount $rwdev $rwdir -t $rwfst -o $rwopts +or perform a factory reset with the clean-rwfs-filesystem option. +HERE + debug_takeover "$msg" +fi + +rm -rf $work +mkdir -p $upper $work + +nfs_bootargs=$(get_fw_env_var nfs_bootargs) +ipaddr=$(get_fw_env_var ipaddr) + +if [ -n "$nfs_bootargs" ] +then + echo NFS bootargs: $nfs_bootargs + echo IP_ADDR: $ipaddr + ifconfig eth1 $ipaddr + ifconfig eth0 $ipaddr + echo mounting NFS rootfs + mount -t nfs -v $nfs_bootargs /root -o nolock,rw +else + mount -t overlay -o lowerdir=$rodir,upperdir=$upper,workdir=$work cow /root +fi + + +while ! chroot /root /bin/sh -c "test -x '$init' -a -s '$init'" +do + msg="$(cat)" << HERE + +Unable to confirm /sbin/init is an executable non-empty file +in merged file system mounted at /root. + +Change Root test failed! +HERE + debug_takeover "$msg" +done + +for f in $fslist +do + mount --move $f root/$f +done + +# switch_root /root $init +exec chroot /root $init diff --git a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0003-add-new-cpu-fields.patch b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0003-add-new-cpu-fields.patch new file mode 100644 index 0000000000..1e4f2efd7a --- /dev/null +++ b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0003-add-new-cpu-fields.patch @@ -0,0 +1,133 @@ +From 644dc71f3ff13fbc620d6ea8bff89736dc7cc691 Mon Sep 17 00:00:00 2001 +From: eportnov <eportnov@ibs.ru> +Date: Fri, 8 Jul 2022 10:31:14 +0300 +Subject: [PATCH] add new cpu fields + +--- + redfish-core/lib/processor.hpp | 106 +++++++++++++++++++++++++++++++++ + 1 file changed, 106 insertions(+) + +diff --git a/redfish-core/lib/processor.hpp b/redfish-core/lib/processor.hpp +index 2a0e028..a83211a 100644 +--- a/redfish-core/lib/processor.hpp ++++ b/redfish-core/lib/processor.hpp +@@ -66,6 +66,77 @@ inline void getProcessorUUID(std::shared_ptr<bmcweb::AsyncResp> aResp, + }); + } + ++inline std::string translateInstructionSetTypeToRedfish(const std::string& instructionSetType) ++{ ++ if (instructionSetType == "xyz.openbmc_project.Inventory.Item.Cpu.Instruction.ARM_A32") ++ { ++ return "ARM-A32"; ++ } ++ if (instructionSetType == "xyz.openbmc_project.Inventory.Item.Cpu.Instruction.ARM_A64") ++ { ++ return "ARM-A64"; ++ } ++ if (instructionSetType == "xyz.openbmc_project.Inventory.Item.Cpu.Instruction.IA_64") ++ { ++ return "IA-64"; ++ } ++ if (instructionSetType == "xyz.openbmc_project.Inventory.Item.Cpu.Instruction.MIPS32") ++ { ++ return "MIPS32"; ++ } ++ if (instructionSetType == "xyz.openbmc_project.Inventory.Item.Cpu.Instruction.MIPS64") ++ { ++ return "MIPS64"; ++ } ++ if (instructionSetType == "xyz.openbmc_project.Inventory.Item.Cpu.Instruction.OEM") ++ { ++ return "OEM"; ++ } ++ if (instructionSetType == "xyz.openbmc_project.Inventory.Item.Cpu.Instruction.PowerISA") ++ { ++ return "PowerISA"; ++ } ++ if (instructionSetType == "xyz.openbmc_project.Inventory.Item.Cpu.Instruction.x86") ++ { ++ return "x86"; ++ } ++ if (instructionSetType == "xyz.openbmc_project.Inventory.Item.Cpu.Instruction.x86_64") ++ { ++ return "x86-64"; ++ } ++ return ""; ++} ++ ++inline std::string translateProcessorArchTypeToRedfish(const std::string& processorArchType) ++{ ++ if (processorArchType == "xyz.openbmc_project.Inventory.Item.Cpu.ProcessorArchitecture.ARM") ++ { ++ return "ARM"; ++ } ++ if (processorArchType == "xyz.openbmc_project.Inventory.Item.Cpu.ProcessorArchitecture.IA_64") ++ { ++ return "IA-64"; ++ } ++ if (processorArchType == "xyz.openbmc_project.Inventory.Item.Cpu.ProcessorArchitecture.MIPS") ++ { ++ return "MIPS"; ++ } ++ if (processorArchType == "xyz.openbmc_project.Inventory.Item.Cpu.ProcessorArchitecture.OEM") ++ { ++ return "OEM"; ++ } ++ if (processorArchType == "xyz.openbmc_project.Inventory.Item.Cpu.ProcessorArchitecture.Power") ++ { ++ return "Power"; ++ } ++ if (processorArchType == "xyz.openbmc_project.Inventory.Item.Cpu.ProcessorArchitecture.x86") ++ { ++ return "x86"; ++ } ++ return ""; ++} ++ ++ + inline void getCpuDataByInterface( + const std::shared_ptr<bmcweb::AsyncResp>& aResp, + const dbus::utility::DBusInteracesMap& cpuInterfacesProperties) +@@ -144,6 +215,41 @@ inline void getCpuDataByInterface( + aResp->res.jsonValue["TotalThreads"] = *value; + } + } ++ else if (property.first == "InstructionSet") ++ { ++ const std::string* value = ++ std::get_if<std::string>(&property.second); ++ if (value != nullptr) ++ { ++ aResp->res.jsonValue["InstructionSet"] = translateInstructionSetTypeToRedfish(*value); ++ } ++ } ++ else if (property.first == "Version") ++ { ++ const std::string* value = ++ std::get_if<std::string>(&property.second); ++ if (value != nullptr) ++ { ++ aResp->res.jsonValue["Version"] = *value; ++ } ++ } ++ else if (property.first == "ProcessorArchitecture") ++ { ++ const std::string* value = ++ std::get_if<std::string>(&property.second); ++ if (value != nullptr) ++ { ++ aResp->res.jsonValue["ProcessorArchitecture"] = translateProcessorArchTypeToRedfish(*value); ++ } ++ } ++ else if (property.first == "MinSpeedMHz") ++ { ++ const uint32_t* value = std::get_if<uint32_t>(&property.second); ++ if (value != nullptr) ++ { ++ aResp->res.jsonValue["MinSpeedMHz"] = *value; ++ } ++ } + else if (property.first == "EffectiveFamily") + { + const uint16_t* value = std::get_if<uint16_t>(&property.second); diff --git a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0004-add-new-dimm-fields.patch b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0004-add-new-dimm-fields.patch new file mode 100644 index 0000000000..9061fc34d9 --- /dev/null +++ b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb/0004-add-new-dimm-fields.patch @@ -0,0 +1,66 @@ +From c834e8916d482a20e2f322dbd772ddd8a3f2b65b Mon Sep 17 00:00:00 2001 +From: eportnov <eportnov@ibs.ru> +Date: Fri, 8 Jul 2022 16:30:51 +0300 +Subject: [PATCH] add new dimm fields + +--- + redfish-core/lib/memory.hpp | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +diff --git a/redfish-core/lib/memory.hpp b/redfish-core/lib/memory.hpp +index 6e4ab67..31dd3c7 100644 +--- a/redfish-core/lib/memory.hpp ++++ b/redfish-core/lib/memory.hpp +@@ -30,6 +30,10 @@ namespace redfish + + inline std::string translateMemoryTypeToRedfish(const std::string& memoryType) + { ++ if (memoryType == "xyz.openbmc_project.Inventory.Item.Dimm.DeviceType.DRAM") ++ { ++ return "DRAM"; ++ } + if (memoryType == "xyz.openbmc_project.Inventory.Item.Dimm.DeviceType.DDR") + { + return "DDR"; +@@ -473,6 +477,7 @@ inline void getDimmDataByService(std::shared_ptr<bmcweb::AsyncResp> aResp, + messages::internalError(aResp->res); + return; + } ++ aResp->res.jsonValue["MemorySize"] = (*memorySize); + aResp->res.jsonValue["CapacityMiB"] = (*memorySize >> 10); + } + else if (property.first == "PartNumber") +@@ -647,7 +652,7 @@ inline void getDimmDataByService(std::shared_ptr<bmcweb::AsyncResp> aResp, + // so just leave off + if (!memoryDeviceType.empty()) + { +- aResp->res.jsonValue["MemoryDeviceType"] = ++ aResp->res.jsonValue["MemoryType"] = + memoryDeviceType; + } + if (value->find("DDR") != std::string::npos) +@@ -660,6 +665,24 @@ inline void getDimmDataByService(std::shared_ptr<bmcweb::AsyncResp> aResp, + } + } + } ++ else if (property.first == "Model") ++ { ++ const auto* value = ++ std::get_if<std::string>(&property.second); ++ if (value != nullptr) ++ { ++ aResp->res.jsonValue["Model"] = *value; ++ } ++ } ++ else if (property.first == "Description") ++ { ++ const auto* value = ++ std::get_if<std::string>(&property.second); ++ if (value != nullptr) ++ { ++ aResp->res.jsonValue["Description"] = *value; ++ } ++ } + // memory location interface + else if (property.first == "Channel" || + property.first == "MemoryController" || diff --git a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend index e349ee7674..098d12559c 100644 --- a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend +++ b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend @@ -5,6 +5,8 @@ SRCREV = "550a6bf85f81c1725b6c320a5ee419335cff2cf6" SRC_URI += "\ file://0001-Enable-vm-nbdproxy-option.patch \ file://0002-Add-http-ftp-nfs-protocols-to-un-filter-them-FT-58-T.patch \ + file://0003-add-new-cpu-fields.patch \ + file://0004-add-new-dimm-fields.patch \ " EXTRA_OEMESON += "\ diff --git a/meta-ibs/meta-common/recipes-protocols/net-snmp/net-snmp/0001-config_os_libs2-no-pci-lookup.patch b/meta-ibs/meta-common/recipes-protocols/net-snmp/net-snmp/0001-config_os_libs2-no-pci-lookup.patch new file mode 100644 index 0000000000..1ac465b28d --- /dev/null +++ b/meta-ibs/meta-common/recipes-protocols/net-snmp/net-snmp/0001-config_os_libs2-no-pci-lookup.patch @@ -0,0 +1,16 @@ +diff -bu -Nr net-snmp-5.9.1-orig/configure.d/config_os_libs2 net-snmp-5.9.1/configure.d/config_os_libs2 +--- net-snmp-5.9.1-orig/configure.d/config_os_libs2 2022-07-16 18:27:39.958781773 +0300 ++++ net-snmp-5.9.1/configure.d/config_os_libs2 2022-07-16 20:07:49.846845832 +0300 +@@ -185,9 +185,9 @@ + # libpci + # (for if-mib description) + # +-NETSNMP_SEARCH_LIBS(pci_lookup_name, pci, +- AC_DEFINE(HAVE_PCI_LOOKUP_NAME, 1, +- [define if you have pci_lookup_name()]),,,LMIBLIBS) ++#NETSNMP_SEARCH_LIBS(pci_lookup_name, pci, ++# AC_DEFINE(HAVE_PCI_LOOKUP_NAME, 1, ++# [define if you have pci_lookup_name()]),,,LMIBLIBS) + + # LM-SENSORS-MIB support + # diff --git a/meta-ibs/meta-common/recipes-protocols/net-snmp/net-snmp/snmpd.conf b/meta-ibs/meta-common/recipes-protocols/net-snmp/net-snmp/snmpd.conf new file mode 100644 index 0000000000..9244009421 --- /dev/null +++ b/meta-ibs/meta-common/recipes-protocols/net-snmp/net-snmp/snmpd.conf @@ -0,0 +1,34 @@ + +rwcommunity private localhost + +# sec.name source community +com2sec readonly default public +com2sec rwsink localhost private + +# sec.model sec.name +group MyROGroup v1 readonly +group MyROGroup v2c readonly +group MyROGroup usm readonly +group MyRWGroup usm root +group MyRwGroup v2c rwsink + +# incl/excl subtree mask +view readonly included .1.3.6.1.2.1.1 +view readonly included .1.3.6.1.2.1.25.1.1 +view readonly included .1.3.6.1.4.1.49769 +view rwsink included .1.3.6.1.6.3 + +# context sec.model sec.level match read write notif +access MyROGroup "" any noauth exact readonly none none +access MyRWGroup "" any priv exact all all none +access MyRwGroup "" v2c noauth exact all rwsink none + +############################################################################### +# System contact information +# + +syslocation Solar System, Earth (configure /etc/snmp/snmpd.conf) +syscontact Root <root@localhost> (configure /etc/snmp/snmpd.conf) + +# ----------------------------------------------------------------------------- +master agentx diff --git a/meta-ibs/meta-common/recipes-protocols/net-snmp/net-snmp_%.bbappend b/meta-ibs/meta-common/recipes-protocols/net-snmp/net-snmp_%.bbappend new file mode 100644 index 0000000000..71b972804c --- /dev/null +++ b/meta-ibs/meta-common/recipes-protocols/net-snmp/net-snmp_%.bbappend @@ -0,0 +1,10 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" + +# +# meta-openembedded/meta-networking/recipes-protocols/net-snmp: +# + +SRC_URI += " \ + file://snmpd.conf \ + file://0001-config_os_libs2-no-pci-lookup.patch \ + " diff --git a/meta-ibs/meta-cp2-5422/conf/machine/cp2-5422-64mb.conf b/meta-ibs/meta-cp2-5422/conf/machine/cp2-5422-64mb.conf new file mode 100644 index 0000000000..50acf4b2b9 --- /dev/null +++ b/meta-ibs/meta-cp2-5422/conf/machine/cp2-5422-64mb.conf @@ -0,0 +1 @@ +require conf/machine/include/sila-ast2500-64mb.inc diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb/0001-IBS-Default-BMC-Name-and-Model.patch b/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb/0001-IBS-Default-BMC-Name-and-Model.patch new file mode 100644 index 0000000000..06342a344e --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb/0001-IBS-Default-BMC-Name-and-Model.patch @@ -0,0 +1,34 @@ +From aedf441cea55a3cb5e8c8a815c8cbe1c7944f863 Mon Sep 17 00:00:00 2001 +From: "Andrey V.Kosteltsev" <AKosteltsev@IBS.RU> +Date: Tue, 12 Jul 2022 12:09:23 +0300 +Subject: [PATCH] IBS: Default BMC Name and Model + +--- + redfish-core/lib/managers.hpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp +index aa4c694da..86b8c7df9 100644 +--- a/redfish-core/lib/managers.hpp ++++ b/redfish-core/lib/managers.hpp +@@ -1974,7 +1974,7 @@ inline void requestRoutesManager(App& app) + asyncResp->res.jsonValue["@odata.type"] = + "#Manager.v1_11_0.Manager"; + asyncResp->res.jsonValue["Id"] = "bmc"; +- asyncResp->res.jsonValue["Name"] = "OpenBmc Manager"; ++ asyncResp->res.jsonValue["Name"] = "Sila Bmc Manager"; + asyncResp->res.jsonValue["Description"] = + "Baseboard Management Controller"; + asyncResp->res.jsonValue["PowerState"] = "On"; +@@ -1984,7 +1984,7 @@ inline void requestRoutesManager(App& app) + asyncResp->res.jsonValue["UUID"] = systemd_utils::getUuid(); + asyncResp->res.jsonValue["ServiceEntryPointUUID"] = uuid; + asyncResp->res.jsonValue["Model"] = +- "OpenBmc"; // TODO(ed), get model ++ "Sila Bmc"; // TODO(ed), get model + + asyncResp->res.jsonValue["LogServices"] = { + {"@odata.id", "/redfish/v1/Managers/bmc/LogServices"}}; +-- +2.35.1 + diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb_%.bbappend index a6059ecb83..c4c7943d51 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb_%.bbappend +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/interfaces/bmcweb_%.bbappend @@ -1,8 +1,10 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" +SRC_URI += "\ + file://0001-IBS-Default-BMC-Name-and-Model.patch \ + " + EXTRA_OEMESON += "\ - -Dredfish-allow-deprecated-power-thermal=disabled \ - -Dredfish-new-powersubsystem-thermalsubsystem=enabled \ -Dredfish-host-logger=enabled \ -Dredfish-dump-log=enabled \ -Dvm-nbdproxy=enabled \ diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-cpu/cpu0.yaml b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-cpu/cpu0.yaml index d2863b548d..9c70596b00 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-cpu/cpu0.yaml +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-cpu/cpu0.yaml @@ -14,6 +14,9 @@ events: Family: value: "XeonCPU-3" type: string + Version: + value: "1.22" + type: string - name: createObjects objs: @@ -143,6 +146,15 @@ events: type: uint32 value: 111 + - name: setProperty + interface: xyz.openbmc_project.Inventory.Item.Cpu + property: MinSpeedMHz + paths: + - /system/chassis/motherboard/cpu0 + value: + type: uint32 + value: 2000 + diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-cpu/cpu1.yaml b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-cpu/cpu1.yaml index 35a8d5abb5..4c85a72551 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-cpu/cpu1.yaml +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-cpu/cpu1.yaml @@ -14,6 +14,9 @@ events: Family: value: "XeonCPU-3" type: string + Version: + value: "1.22" + type: string - name: createObjects objs: @@ -143,6 +146,15 @@ events: type: uint32 value: 111 + - name: setProperty + interface: xyz.openbmc_project.Inventory.Item.Cpu + property: MinSpeedMHz + paths: + - /system/chassis/motherboard/cpu1 + value: + type: uint32 + value: 2000 + diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm0.yaml b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm0.yaml index 6331d50b00..531c6686b0 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm0.yaml +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm0.yaml @@ -14,6 +14,12 @@ events: MemoryTypeDetail: value: "Synchronous, Static column" type: string + Description: + value: "This is description" + type: string + Model: + value: "Kingston FURY Beast Black" + type: string - name: createObjects objs: diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm1.yaml b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm1.yaml index 8f245821ca..0ea51971cf 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm1.yaml +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm1.yaml @@ -14,6 +14,12 @@ events: MemoryTypeDetail: value: "Synchronous, Static column" type: string + Description: + value: "This is description" + type: string + Model: + value: "Kingston FURY Beast Black" + type: string - name: createObjects objs: diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm2.yaml b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm2.yaml index 1bf7d867a0..e9e8e15802 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm2.yaml +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm2.yaml @@ -14,6 +14,12 @@ events: MemoryTypeDetail: value: "Synchronous, Static column" type: string + Description: + value: "This is description" + type: string + Model: + value: "Kingston FURY Beast Black" + type: string - name: createObjects objs: diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm3.yaml b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm3.yaml index e1dfb1e4d9..48eca62db3 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm3.yaml +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-dimm/dimm3.yaml @@ -14,6 +14,12 @@ events: MemoryTypeDetail: value: "Synchronous, Static column" type: string + Description: + value: "This is description" + type: string + Model: + value: "Kingston FURY Beast Black" + type: string - name: createObjects objs: diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-fans.bb b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-fans.bb deleted file mode 100644 index ac120e773e..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-fans.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Add Dimm interface for inventory manager" -PR = "r1" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -inherit allarch -inherit phosphor-inventory-manager - -PROVIDES += "virtual/phosphor-inventory-manager-fans" -S = "${WORKDIR}" - -SRC_URI = "file://fans.yaml" - -do_install() { - install -D fans.yaml ${D}${base_datadir}/events.d/fans.yaml -} - -FILES:${PN} += "${base_datadir}/events.d/fans.yaml" diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-fans/fans.yaml b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-fans/fans.yaml deleted file mode 100644 index 1992b6e6f8..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-fans/fans.yaml +++ /dev/null @@ -1,18 +0,0 @@ -events: - - name: Add Fans interface - description: > - Add the fan interface on the fan inventory path - type: startup - actions: - - name: createObjects - objs: - /system/chassis/motherboard/fan0: - xyz.openbmc_project.Inventory.Item.Fan: - /system/chassis/motherboard/fan1: - xyz.openbmc_project.Inventory.Item.Fan: - /system/chassis/motherboard/fan2: - xyz.openbmc_project.Inventory.Item.Fan: - /system/chassis/motherboard/fan3: - xyz.openbmc_project.Inventory.Item.Fan: - /system/chassis/motherboard/fan4: - xyz.openbmc_project.Inventory.Item.Fan: diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-motherboard.bb b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-motherboard.bb deleted file mode 100644 index 18817f5b13..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-motherboard.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Add Dimm interface for inventory manager" -PR = "r1" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -inherit allarch -inherit phosphor-inventory-manager - -PROVIDES += "virtual/phosphor-inventory-manager-motherboard" -S = "${WORKDIR}" - -SRC_URI = "file://motherboard.yaml" - -do_install() { - install -D motherboard.yaml ${D}${base_datadir}/events.d/motherboard.yaml -} - -FILES:${PN} += "${base_datadir}/events.d/motherboard.yaml" diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-motherboard/motherboard.yaml b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-motherboard/motherboard.yaml deleted file mode 100644 index 57d6085144..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager-motherboard/motherboard.yaml +++ /dev/null @@ -1,44 +0,0 @@ -events: - - name: Add Chassis interface - description: > - Add the chassis interface on the chassis inventory path - type: startup - actions: - - name: createObjects - objs: - /system/chassis/motherboard: - xyz.openbmc_project.Inventory.Item.Board.Motherboard: - - - name: createObjects - objs: - /system/chassis/motherboard: - xyz.openbmc_project.Inventory.Decorator.Asset: - Manufacturer: - value: "Manufacturer" - type: string - PartNumber: - value: "PartNumber" - type: string - SerialNumber: - value: "SerialNumber" - type: string - BuildDate: - value: "BuildDate" - type: string - Model: - value: "Model" - type: string - SubModel: - value: "SubModel" - type: string - SparePartNumber: - value: "SparePartNumber" - type: string - - - name: createObjects - objs: - /system/chassis/motherboard: - xyz.openbmc_project.Inventory.Decorator.AssetTag: - AssetTag: - value: "AssetTag" - type: string diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager/associations.json b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager/associations.json index 0f3ffa3d21..00efe4bea9 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager/associations.json +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager/associations.json @@ -47,7 +47,7 @@ ] }, { - "path": "system/chassis/motherboard/powersupply1", + "path": "system/chassis/motherboard/fan", "endpoints": [ { @@ -58,197 +58,11 @@ }, "paths": [ - "/xyz/openbmc_project/sensors/power/ps1_input_power", - "/xyz/openbmc_project/sensors/power/ps1_output_power", - "/xyz/openbmc_project/sensors/voltage/ps1_input_voltage", - "/xyz/openbmc_project/sensors/voltage/ps1_output_voltage", - "/xyz/openbmc_project/sensors/current/ps1_input_current", - "/xyz/openbmc_project/sensors/current/ps1_output_current", - "/xyz/openbmc_project/sensors/temperature/psu_inlet", - "/xyz/openbmc_project/sensors/voltage/P12V", - "/xyz/openbmc_project/sensors/voltage/P3V3" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front_psu" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/powersupply1_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/fan0", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/fan_tach/fan0_0", - "/xyz/openbmc_project/sensors/fan_tach/fan0_1" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front_fan" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/fan0_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/fan1", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/fan_tach/fan1_0", - "/xyz/openbmc_project/sensors/fan_tach/fan1_1" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front_fan" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/fan1_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/fan2", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/fan_tach/fan2_0", - "/xyz/openbmc_project/sensors/fan_tach/fan2_1" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front_fan" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/fan2_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/fan3", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/fan_tach/fan3_0", - "/xyz/openbmc_project/sensors/fan_tach/fan3_1" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front_fan" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/fan3_fault" + "/xyz/openbmc_project/sensors/fan_tach/CPU1_Fan", + "/xyz/openbmc_project/sensors/fan_tach/CPU2_Fan", + "/xyz/openbmc_project/sensors/fan_tach/System_Fan_1", + "/xyz/openbmc_project/sensors/fan_tach/System_Fan_2", + "/xyz/openbmc_project/sensors/fan_tach/System_Fan_3" ] } ] @@ -265,20 +79,18 @@ }, "paths": [ - "/xyz/openbmc_project/sensors/temperature/inlet", - "/xyz/openbmc_project/sensors/temperature/bmc_zone", - "/xyz/openbmc_project/sensors/voltage/PVDD_CPU0", - "/xyz/openbmc_project/sensors/voltage/PVCS_CPU0", - "/xyz/openbmc_project/sensors/voltage/PVDDQ_CPU0_CH01", - "/xyz/openbmc_project/sensors/voltage/PVDDQ_CPU0_CH67", - "/xyz/openbmc_project/sensors/voltage/PVDN_CPU0", - "/xyz/openbmc_project/sensors/voltage/PVIO_CPU0", - "/xyz/openbmc_project/sensors/voltage/PVDD_CPU1", - "/xyz/openbmc_project/sensors/voltage/PVCS_CPU1", - "/xyz/openbmc_project/sensors/voltage/PVDDQ_CPU1_CH01", - "/xyz/openbmc_project/sensors/voltage/PVDDQ_CPU1_CH67", - "/xyz/openbmc_project/sensors/voltage/PVDN_CPU1", - "/xyz/openbmc_project/sensors/voltage/PVIO_CPU1" + "/xyz/openbmc_project/sensors/voltage/P105_PCH_AUX", + "/xyz/openbmc_project/sensors/voltage/P1V8_PCH", + "/xyz/openbmc_project/sensors/voltage/P3V3", + "/xyz/openbmc_project/sensors/voltage/P5V_STBY_PSU", + "/xyz/openbmc_project/sensors/voltage/Baseboard_12Volt", + "/xyz/openbmc_project/sensors/voltage/PVCCIN_CPU1", + "/xyz/openbmc_project/sensors/voltage/PVCCIN_CPU2", + "/xyz/openbmc_project/sensors/voltage/PVCCIO_CPU1", + "/xyz/openbmc_project/sensors/voltage/PVCCIO_CPU2", + "/xyz/openbmc_project/sensors/voltage/PVDQ_ABC_CPU1", + "/xyz/openbmc_project/sensors/voltage/PVDQ_ABC_CPU2", + "/xyz/openbmc_project/sensors/voltage/PVDQ_DEF_CPU1" ] }, { @@ -396,380 +208,6 @@ ] }, { - "path": "system/chassis/motherboard/cpu0/core2", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core2_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core3", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core3_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core4", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core4_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core5", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core5_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core6", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core6_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core7", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core7_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core8", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core8_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core9", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core9_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core10", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core10_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core11", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core11_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core12", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core12_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core13", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core13_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core14", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core14_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core15", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core15_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core16", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core16_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core17", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core17_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core18", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core18_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core19", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core19_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core20", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core20_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core21", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core21_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core22", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core22_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu0/core23", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p0_core23_temp" - ] - } - ] - }, - { "path": "system/chassis/motherboard/cpu1/core0", "endpoints": [ @@ -804,380 +242,6 @@ ] }, { - "path": "system/chassis/motherboard/cpu1/core2", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core2_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core3", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core3_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core4", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core4_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core5", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core5_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core6", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core6_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core7", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core7_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core8", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core8_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core9", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core9_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core10", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core10_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core11", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core11_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core12", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core12_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core13", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core13_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core14", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core14_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core15", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core15_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core16", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core16_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core17", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core17_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core18", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core18_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core19", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core19_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core20", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core20_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core21", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core21_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core22", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core22_temp" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/cpu1/core23", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/p1_core23_temp" - ] - } - ] - }, - { "path": "system/chassis/motherboard/dimm0", "endpoints": [ @@ -1334,474 +398,6 @@ ] }, { - "path": "system/chassis/motherboard/dimm4", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm4_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm4_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/dimm5", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm5_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm5_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/dimm6", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm6_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm6_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/dimm7", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm7_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm7_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/dimm8", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm8_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm8_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/dimm9", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm9_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm9_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/dimm10", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm10_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm10_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/dimm11", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm11_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm11_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/dimm12", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm12_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm12_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/dimm13", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm13_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm13_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/dimm14", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm14_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm14_fault" - ] - } - ] - }, - { - "path": "system/chassis/motherboard/dimm15", - "endpoints": - [ - { - "types": - { - "rType": "inventory", - "fType": "sensors" - }, - "paths": - [ - "/xyz/openbmc_project/sensors/temperature/dimm15_temp" - ] - }, - { - "types": - { - "rType": "inventory", - "fType": "leds" - }, - "paths": - [ - "/xyz/openbmc_project/led/physical/front-memory" - ] - }, - { - "types": - { - "rType": "fru", - "fType": "fault_led_group" - }, - "paths": - [ - "/xyz/openbmc_project/led/groups/dimm15_fault" - ] - } - ] - }, - { "path": "system/chassis", "endpoints": [ @@ -1813,113 +409,34 @@ }, "paths": [ - "/xyz/openbmc_project/sensors/fan_tach/fan0_0", - "/xyz/openbmc_project/sensors/fan_tach/fan0_1", - "/xyz/openbmc_project/sensors/fan_tach/fan1_0", - "/xyz/openbmc_project/sensors/fan_tach/fan1_1", - "/xyz/openbmc_project/sensors/fan_tach/fan2_0", - "/xyz/openbmc_project/sensors/fan_tach/fan2_1", - "/xyz/openbmc_project/sensors/fan_tach/fan3_0", - "/xyz/openbmc_project/sensors/fan_tach/fan3_1", + "/xyz/openbmc_project/sensors/fan_tach/CPU1_Fan", + "/xyz/openbmc_project/sensors/fan_tach/CPU2_Fan", + "/xyz/openbmc_project/sensors/fan_tach/System_Fan_1", + "/xyz/openbmc_project/sensors/fan_tach/System_Fan_2", + "/xyz/openbmc_project/sensors/fan_tach/System_Fan_3", "/xyz/openbmc_project/sensors/temperature/p0_core0_temp", "/xyz/openbmc_project/sensors/temperature/p0_core1_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core2_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core3_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core4_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core5_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core6_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core7_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core8_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core9_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core10_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core11_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core12_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core13_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core14_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core15_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core16_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core17_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core18_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core19_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core20_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core21_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core22_temp", - "/xyz/openbmc_project/sensors/temperature/p0_core23_temp", "/xyz/openbmc_project/sensors/temperature/p1_core0_temp", "/xyz/openbmc_project/sensors/temperature/p1_core1_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core2_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core3_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core4_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core5_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core6_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core7_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core8_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core9_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core10_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core11_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core12_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core13_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core14_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core15_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core16_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core17_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core18_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core19_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core20_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core21_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core22_temp", - "/xyz/openbmc_project/sensors/temperature/p1_core23_temp", "/xyz/openbmc_project/sensors/temperature/dimm0_temp", "/xyz/openbmc_project/sensors/temperature/dimm1_temp", "/xyz/openbmc_project/sensors/temperature/dimm2_temp", "/xyz/openbmc_project/sensors/temperature/dimm3_temp", - "/xyz/openbmc_project/sensors/temperature/dimm4_temp", - "/xyz/openbmc_project/sensors/temperature/dimm5_temp", - "/xyz/openbmc_project/sensors/temperature/dimm6_temp", - "/xyz/openbmc_project/sensors/temperature/dimm7_temp", - "/xyz/openbmc_project/sensors/temperature/dimm8_temp", - "/xyz/openbmc_project/sensors/temperature/dimm9_temp", - "/xyz/openbmc_project/sensors/temperature/dimm10_temp", - "/xyz/openbmc_project/sensors/temperature/dimm11_temp", - "/xyz/openbmc_project/sensors/temperature/dimm12_temp", - "/xyz/openbmc_project/sensors/temperature/dimm13_temp", - "/xyz/openbmc_project/sensors/temperature/dimm14_temp", - "/xyz/openbmc_project/sensors/temperature/dimm15_temp", - "/xyz/openbmc_project/sensors/temperature/inlet", - "/xyz/openbmc_project/sensors/temperature/outlet", - "/xyz/openbmc_project/sensors/temperature/ocp_zone", - "/xyz/openbmc_project/sensors/temperature/bmc_zone", - "/xyz/openbmc_project/sensors/voltage/P12V", + "/xyz/openbmc_project/sensors/voltage/P105_PCH_AUX", + "/xyz/openbmc_project/sensors/voltage/P1V8_PCH", "/xyz/openbmc_project/sensors/voltage/P3V3", - "/xyz/openbmc_project/sensors/voltage/P5V", - "/xyz/openbmc_project/sensors/voltage/PVCS_CPU0", - "/xyz/openbmc_project/sensors/voltage/PVCS_CPU1", - "/xyz/openbmc_project/sensors/voltage/PVDDQ_CPU0_CH01", - "/xyz/openbmc_project/sensors/voltage/PVDDQ_CPU0_CH067", - "/xyz/openbmc_project/sensors/voltage/PVDDQ_CPU1_CH01", - "/xyz/openbmc_project/sensors/voltage/PVDDQ_CPU1_CH067", - "/xyz/openbmc_project/sensors/voltage/PVDD_CPU0", - "/xyz/openbmc_project/sensors/voltage/PVDD_CPU1", - "/xyz/openbmc_project/sensors/voltage/PVDN_CPU0", - "/xyz/openbmc_project/sensors/voltage/PVDN_CPU1", - "/xyz/openbmc_project/sensors/voltage/PVIO_CPU0", - "/xyz/openbmc_project/sensors/voltage/PVIO_CPU1", - "/xyz/openbmc_project/sensors/power/ps0_input_power", - "/xyz/openbmc_project/sensors/power/ps0_output_power", - "/xyz/openbmc_project/sensors/power/ps1_input_power", - "/xyz/openbmc_project/sensors/power/ps1_output_power", - "/xyz/openbmc_project/sensors/voltage/ps0_input_voltage", - "/xyz/openbmc_project/sensors/voltage/ps0_output_voltage", - "/xyz/openbmc_project/sensors/voltage/ps1_input_voltage", - "/xyz/openbmc_project/sensors/voltage/ps1_output_voltage", - "/xyz/openbmc_project/sensors/current/ps0_input_current", - "/xyz/openbmc_project/sensors/current/ps0_output_current", - "/xyz/openbmc_project/sensors/current/ps1_input_current", - "/xyz/openbmc_project/sensors/current/ps1_output_current", - "/xyz/openbmc_project/sensors/temperature/psu_inlet" + "/xyz/openbmc_project/sensors/voltage/P5V_STBY_PSU", + "/xyz/openbmc_project/sensors/voltage/Baseboard_12Volt", + "/xyz/openbmc_project/sensors/voltage/PVCCIN_CPU1", + "/xyz/openbmc_project/sensors/voltage/PVCCIN_CPU2", + "/xyz/openbmc_project/sensors/voltage/PVCCIO_CPU1", + "/xyz/openbmc_project/sensors/voltage/PVCCIO_CPU2", + "/xyz/openbmc_project/sensors/voltage/PVDQ_ABC_CPU1", + "/xyz/openbmc_project/sensors/voltage/PVDQ_ABC_CPU2", + "/xyz/openbmc_project/sensors/voltage/PVDQ_DEF_CPU1" ] } ] diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager_%.bbappend index 2ac4350e7d..63933e512c 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager_%.bbappend +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/inventory/phosphor-inventory-manager_%.bbappend @@ -3,10 +3,9 @@ PACKAGECONFIG:append = " associations" SRC_URI += " file://associations.json" DEPENDS += " phosphor-inventory-manager-chassis" -DEPENDS += " phosphor-inventory-manager-motherboard" +#DEPENDS += " phosphor-inventory-manager-motherboard" DEPENDS += " phosphor-inventory-manager-cpu" DEPENDS += " phosphor-inventory-manager-dimm" -DEPENDS += " phosphor-inventory-manager-fans" do_install:append() { install -d ${D}${base_datadir} diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/logging/phosphor-hostlogger/cp2-5422-64mb/ttyS2.conf b/meta-ibs/meta-cp2-5422/recipes-phosphor/logging/phosphor-hostlogger/cp2-5422-64mb/ttyS2.conf new file mode 100644 index 0000000000..c75186415a --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/logging/phosphor-hostlogger/cp2-5422-64mb/ttyS2.conf @@ -0,0 +1,7 @@ +SOCKET_ID= +BUF_MAXSIZE=3000 +BUF_MAXTIME=0 +FLUSH_FULL=false +HOST_STATE=/xyz/openbmc_project/state/host0 +OUT_DIR=/var/lib/obmc/hostlogs +MAX_FILES=10 diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/network/obmc-sila-snmp_git.bb b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/obmc-sila-snmp_git.bb new file mode 100644 index 0000000000..eb802defea --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/obmc-sila-snmp_git.bb @@ -0,0 +1,65 @@ +SUMMARY = "Sila SNMP agent for OpenBMC" +DESCRIPTION = "The project provides a snmp subagent and configuration manager." +HOMEPAGE = "http://git.sila.ru/openbmc/obmc-sila-snmp.git/" + +PR = "r1" +PV = "1.0+git${SRCPV}" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" + +SRC_URI = "git://git@git.sila.ru/srv/pub/scm/git/openbmc/obmc-sila-snmp.git;branch=master;protocol=ssh" +SRCREV = "a7db2279b461f7aa6659e262962fc50ca98eb901" + + +inherit autotools pkgconfig python3native +inherit obmc-phosphor-dbus-service + +S = "${WORKDIR}/git" + +DEPENDS += " autoconf-archive-native" +DEPENDS += " net-snmp" +DEPENDS += " systemd" +DEPENDS += " sdbusplus" +DEPENDS += " sdeventplus" +DEPENDS += " ${PYTHON_PN}-sdbus++-native" +DEPENDS += " phosphor-logging" +DEPENDS += " phosphor-dbus-interfaces" + + +# Package configuration +SNMP_PACKAGES = " \ + ${PN}-agent \ + ${PN}-cfg-manager \ + " + +ALLOW_EMPTY_${PN} = "1" +PACKAGE_BEFORE_PN += "${SNMP_PACKAGES}" +PACKAGECONFIG ?= "agent cfg-manager" +SYSTEMD_PACKAGES = "${PN}-agent" +DBUS_PACKAGES = "${PN}-cfg-manager" + +# -------------------------------------- +# ${PN}-agent specific configuration: +# -------------------------------------- +PACKAGECONFIG[agent] = "--enable-agent,--disable-agent,," +RDEPENDS_${PN}-agent += " sdbusplus net-snmp-libs net-snmp-server-snmpd" +FILES:${PN}-agent = " \ + ${bindir}/sila-snmp-agent \ + ${datadir}/snmp/mibs/SILA-MIB.txt \ + " + +SYSTEMD_SERVICE:${PN}-agent += "sila-snmp-agent.service" + +# -------------------------------------- +# ${PN}-cfg-manager specific configuration +PACKAGECONFIG[cfg-manager] = "--enable-cfg-manager,--disable-cfg-manager,," +RDEPENDS:${PN}-cfg-manager += " sdbusplus" +FILES:${PN}-cfg-manager = "${bindir}/sila-snmpcfg" +DBUS_SERVICE:${PN}-cfg-manager += "sila-snmp-cfg-manager.service" + +# Makes the MIB-file available over https by bmcweb +FILES:${PN}-agent += " ${datadir}/www/mibs/SILA-MIB.txt " +do_install:append () { + mkdir -p ${D}${datadir}/www/mibs + ln -s ${datadir}/snmp/mibs/SILA-MIB.txt ${D}${datadir}/www/mibs/SILA-MIB.txt +} diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/0001-main-Use-sdeventplus.patch b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/0001-main-Use-sdeventplus.patch new file mode 100644 index 0000000000..e38befa7d6 --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/0001-main-Use-sdeventplus.patch @@ -0,0 +1,123 @@ +From d07ee811792a8440fc0cc99d7f51aa4121e50928 Mon Sep 17 00:00:00 2001 +From: "Andrey V.Kosteltsev" <AKosteltsev@IBS.RU> +Date: Sun, 17 Jul 2022 12:25:14 +0300 +Subject: [PATCH 1/3] main: Use sdeventplus + +Makes use sdeventplus instead custom wrapper around the sd_event library calls. + +Signed-off-by: Andrey V.Kosteltsev <AKosteltsev@IBS.RU> +--- + meson.build | 8 +++++++- + snmp_main.cpp | 27 ++++----------------------- + subprojects/sdeventplus.wrap | 6 ++++++ + 3 files changed, 17 insertions(+), 24 deletions(-) + create mode 100644 subprojects/sdeventplus.wrap + +diff --git a/meson.build b/meson.build +index 73ca4a6..8a82752 100644 +--- a/meson.build ++++ b/meson.build +@@ -17,6 +17,7 @@ conf_data.set_quoted('SNMP_CONF_PERSIST_PATH', '/var/lib/phosphor-snmp/managers/ + conf_data.set('CLASS_VERSION', 1) + + sdbusplus_dep = dependency('sdbusplus') ++sdeventplus_dep = dependency('sdeventplus') + phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces') + phosphor_logging_dep = dependency('phosphor-logging') + libsystemd_dep = dependency('libsystemd') +@@ -30,6 +31,7 @@ deps = [ + phosphor_dbus_interfaces_dep, + phosphor_logging_dep, + sdbusplus_dep, ++ sdeventplus_dep, + ] + + sources = [ +@@ -55,6 +57,7 @@ executable( + + libsnmp_deps = [ + sdbusplus_dep, ++ sdeventplus_dep, + phosphor_logging_dep, + phosphor_dbus_interfaces_dep, + netsnmp_dep, +@@ -85,7 +88,10 @@ import('pkgconfig').generate( + libsnmp_lib, + name: meson.project_name(), + version: meson.project_version(), +- requires: sdbusplus_dep, ++ requires: [ ++ sdbusplus_dep, ++ sdeventplus_dep, ++ ], + description: 'Phosphor snmp utilities', + ) + +diff --git a/snmp_main.cpp b/snmp_main.cpp +index be4bea1..ab3c4b6 100644 +--- a/snmp_main.cpp ++++ b/snmp_main.cpp +@@ -4,38 +4,19 @@ + + #include <phosphor-logging/lg2.hpp> + #include <sdbusplus/bus.hpp> ++#include <sdeventplus/event.hpp> + #include <sdbusplus/server/manager.hpp> + + #include <memory> + +-/* Need a custom deleter for freeing up sd_event */ +-struct EventDeleter +-{ +- void operator()(sd_event* event) const +- { +- sd_event_unref(event); +- } +-}; +- +-using EventPtr = std::unique_ptr<sd_event, EventDeleter>; +- + int main(int /*argc*/, char** /*argv[]*/) + { + auto bus = sdbusplus::bus::new_default(); + +- sd_event* event = nullptr; +- auto r = sd_event_default(&event); +- if (r < 0) +- { +- lg2::error("Error creating a default sd_event handler: {RC}", "RC", r); +- return r; +- } +- +- EventPtr eventPtr{event}; +- event = nullptr; ++ auto event = sdeventplus::Event::get_default(); + + // Attach the bus to sd_event to service user requests +- bus.attach_event(eventPtr.get(), SD_EVENT_PRIORITY_NORMAL); ++ bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL); + + // Add sdbusplus Object Manager for the 'root' path of the snmp. + sdbusplus::server::manager::manager objManager(bus, OBJ_NETWORK_SNMP); +@@ -46,5 +27,5 @@ int main(int /*argc*/, char** /*argv[]*/) + + manager->restoreClients(); + +- return sd_event_loop(eventPtr.get()); ++ return event.loop(); + } +diff --git a/subprojects/sdeventplus.wrap b/subprojects/sdeventplus.wrap +new file mode 100644 +index 0000000..f871ac0 +--- /dev/null ++++ b/subprojects/sdeventplus.wrap +@@ -0,0 +1,6 @@ ++[wrap-git] ++url = https://github.com/openbmc/sdeventplus.git ++revision = HEAD ++ ++[provide] ++sdeventplus = sdeventplus_dep +-- +2.35.1 + diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/0002-main-Add-UNIX-signals-handler.patch b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/0002-main-Add-UNIX-signals-handler.patch new file mode 100644 index 0000000000..9ff1e35897 --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/0002-main-Add-UNIX-signals-handler.patch @@ -0,0 +1,102 @@ +From 81daf0a592fdcb0df22476621e3202e9932a867e Mon Sep 17 00:00:00 2001 +From: "Andrey V.Kosteltsev" <AKosteltsev@IBS.RU> +Date: Sun, 17 Jul 2022 12:55:01 +0300 +Subject: [PATCH 2/3] main: Add UNIX signals handler + +This commit adds a handler for SIGTERM and SIGINT signals that is the normal service stop. + +Signed-off-by: Andrey V.Kosteltsev <AKosteltsev@IBS.RU> +--- + meson.build | 4 ++++ + snmp_main.cpp | 15 +++++++++++++++ + subprojects/stdplus.wrap | 6 ++++++ + 3 files changed, 25 insertions(+) + create mode 100644 subprojects/stdplus.wrap + +diff --git a/meson.build b/meson.build +index 8a82752..4ed6094 100644 +--- a/meson.build ++++ b/meson.build +@@ -18,6 +18,7 @@ conf_data.set('CLASS_VERSION', 1) + + sdbusplus_dep = dependency('sdbusplus') + sdeventplus_dep = dependency('sdeventplus') ++stdplus_dep = dependency('stdplus') + phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces') + phosphor_logging_dep = dependency('phosphor-logging') + libsystemd_dep = dependency('libsystemd') +@@ -32,6 +33,7 @@ deps = [ + phosphor_logging_dep, + sdbusplus_dep, + sdeventplus_dep, ++ stdplus_dep, + ] + + sources = [ +@@ -58,6 +60,7 @@ executable( + libsnmp_deps = [ + sdbusplus_dep, + sdeventplus_dep, ++ stdplus_dep, + phosphor_logging_dep, + phosphor_dbus_interfaces_dep, + netsnmp_dep, +@@ -91,6 +94,7 @@ import('pkgconfig').generate( + requires: [ + sdbusplus_dep, + sdeventplus_dep, ++ stdplus_dep, + ], + description: 'Phosphor snmp utilities', + ) +diff --git a/snmp_main.cpp b/snmp_main.cpp +index ab3c4b6..df5850b 100644 +--- a/snmp_main.cpp ++++ b/snmp_main.cpp +@@ -5,10 +5,18 @@ + #include <phosphor-logging/lg2.hpp> + #include <sdbusplus/bus.hpp> + #include <sdeventplus/event.hpp> ++#include <sdeventplus/source/signal.hpp> + #include <sdbusplus/server/manager.hpp> ++#include <stdplus/signal.hpp> + + #include <memory> + ++static void cleanExit(sdeventplus::source::Signal& source, ++ const struct signalfd_siginfo*) ++{ ++ source.get_event().exit(EXIT_SUCCESS); ++} ++ + int main(int /*argc*/, char** /*argv[]*/) + { + auto bus = sdbusplus::bus::new_default(); +@@ -27,5 +35,12 @@ int main(int /*argc*/, char** /*argv[]*/) + + manager->restoreClients(); + ++ // Clean exit by unix signal ++ stdplus::signal::block(SIGTERM); ++ stdplus::signal::block(SIGINT); ++ ++ sdeventplus::source::Signal sigTerm(event, SIGTERM, cleanExit); ++ sdeventplus::source::Signal sigInt(event, SIGINT, cleanExit); ++ + return event.loop(); + } +diff --git a/subprojects/stdplus.wrap b/subprojects/stdplus.wrap +new file mode 100644 +index 0000000..2f8a5f4 +--- /dev/null ++++ b/subprojects/stdplus.wrap +@@ -0,0 +1,6 @@ ++[wrap-git] ++url = https://github.com/openbmc/stdplus.git ++revision = HEAD ++ ++[provide] ++stdplus = stdplus_dep +-- +2.35.1 + diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/0003-conf_manager-use-snmpd-as-a-clients-storage.patch b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/0003-conf_manager-use-snmpd-as-a-clients-storage.patch new file mode 100644 index 0000000000..e13de7ba74 --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/0003-conf_manager-use-snmpd-as-a-clients-storage.patch @@ -0,0 +1,859 @@ +From 22a0736aa2613f0821e762e76db0efac17a0b7b1 Mon Sep 17 00:00:00 2001 +From: "Andrey V.Kosteltsev" <AKosteltsev@IBS.RU> +Date: Sun, 17 Jul 2022 19:05:14 +0300 +Subject: [PATCH 3/3] conf_manager: use snmpd as a clients storage + +This commit brings the alternative of storage of clients. It's able now to communicate with snmpd and manage the built-in list of snmp trap receivers. + +Signed-off-by: Andrey V.Kosteltsev <AKosteltsev@IBS.RU> +--- + meson.build | 9 ++ + meson_options.txt | 19 ++++ + snmp/exceptions.hpp | 71 ++++++++++++++ + snmp/notify_tables.hpp | 58 ++++++++++++ + snmp/oid.hpp | 42 +++++++++ + snmp/pdu.hpp | 150 +++++++++++++++++++++++++++++ + snmp/session.hpp | 110 ++++++++++++++++++++++ + snmp_conf_manager.cpp | 207 +++++++++++++++++++++++++++++++++++++++++ + snmp_conf_manager.hpp | 8 ++ + snmp_main.cpp | 11 +++ + 10 files changed, 685 insertions(+) + create mode 100644 snmp/exceptions.hpp + create mode 100644 snmp/notify_tables.hpp + create mode 100644 snmp/oid.hpp + create mode 100644 snmp/pdu.hpp + create mode 100644 snmp/session.hpp + +diff --git a/meson.build b/meson.build +index 4ed6094..ad07caa 100644 +--- a/meson.build ++++ b/meson.build +@@ -44,6 +44,15 @@ sources = [ + 'snmp_serialize.cpp', + ] + ++if get_option('snmpd-support').enabled() ++ conf_data.set('USE_SNMPD', 1) ++ deps += [ ++ netsnmp_dep, ++ ] ++ conf_data.set_quoted('SNMPD_ADDRESS', get_option('snmpd-address')) ++ conf_data.set_quoted('SNMPD_COMMUNITY', get_option('snmpd-community')) ++endif ++ + configure_file(output: 'config.h', + configuration: conf_data + ) +diff --git a/meson_options.txt b/meson_options.txt +index f1c7bd8..8b26686 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1 +1,20 @@ ++ ++option('snmpd-support', ++ type: 'feature', ++ value: 'disabled', ++ description: 'Enable snmpd as a client storage.' ++) ++ ++option('snmpd-address', ++ type: 'string', ++ value: 'localhost', ++ description: 'Address of snmpd.' ++) ++ ++option('snmpd-community', ++ type: 'string', ++ value: 'private', ++ description: 'Community name to communicate with snmpd.' ++) ++ + option('tests', type : 'feature', description : 'Build tests') +\ No newline at end of file +diff --git a/snmp/exceptions.hpp b/snmp/exceptions.hpp +new file mode 100644 +index 0000000..9f1d858 +--- /dev/null ++++ b/snmp/exceptions.hpp +@@ -0,0 +1,71 @@ ++#pragma once ++ ++#include <net-snmp/net-snmp-config.h> ++#include <net-snmp/net-snmp-includes.h> ++ ++#include <stdexcept> ++ ++namespace snmp ++{ ++namespace exception ++{ ++ ++class SnmpError : public std::runtime_error ++{ ++ public: ++ using std::runtime_error::runtime_error; ++}; ++ ++class SnmpSessionError : public SnmpError ++{ ++ public: ++ using SnmpError::SnmpError; ++ ++ SnmpSessionError(netsnmp_session* sp, const std::string& name) : ++ SnmpError(makeError(sp, name)) ++ { ++ } ++ ++ protected: ++ static std::string makeError(netsnmp_session* sp, const std::string& name) ++ { ++ char* msg = nullptr; ++ snmp_error(sp, nullptr, nullptr, &msg); ++ std::string error = name + " failed, "; ++ error += msg; ++ SNMP_FREE(msg); ++ ++ return error; ++ } ++}; ++ ++class SnmpTimeout : public SnmpError ++{ ++ public: ++ using SnmpError::SnmpError; ++ ++ SnmpTimeout() : SnmpError("Connection timed out!") ++ { ++ } ++}; ++ ++class SnmpPacketError : public SnmpError ++{ ++ public: ++ using SnmpError::SnmpError; ++ ++ SnmpPacketError(int ec) : SnmpError(makeError(ec)) ++ { ++ } ++ ++ protected: ++ static std::string makeError(int ec) ++ { ++ std::string error("Error in packet, "); ++ error += snmp_errstring(ec); ++ return error; ++ } ++}; ++ ++} // namespace exception ++} // namespace snmp +diff --git a/snmp/notify_tables.hpp b/snmp/notify_tables.hpp +new file mode 100644 +index 0000000..7d23c0f +--- /dev/null ++++ b/snmp/notify_tables.hpp +@@ -0,0 +1,58 @@ ++/* ++ * SPDX-License-Identifier: Apache-2.0 ++ * Copyright (C) 2021 YADRO. ++ */ ++#include "oid.hpp" ++ ++namespace snmp ++{ ++namespace table ++{ ++ ++/** ++ * @brief SNMP-NOTIFICATION-MIB::snmpNotifyTable fields ++ */ ++namespace notify ++{ ++ // clang-format off ++static const snmp::OID tag = {1,3,6,1,6,3,13,1,1,1,2}; ++static const snmp::OID type = {1,3,6,1,6,3,13,1,1,1,3}; ++static const snmp::OID storageType = {1,3,6,1,6,3,13,1,1,1,4}; ++static const snmp::OID rowStatus = {1,3,6,1,6,3,13,1,1,1,5}; ++ // clang-format on ++} // namespace notify ++ ++/** ++ * @brief SNMP-TARGET-MIB::snmpTargetParamsTable fields ++ */ ++namespace targetParams ++{ ++ // clang-format off ++static const snmp::OID mpModel = {1,3,6,1,6,3,12,1,3,1,2}; ++static const snmp::OID securityModel = {1,3,6,1,6,3,12,1,3,1,3}; ++static const snmp::OID securityName = {1,3,6,1,6,3,12,1,3,1,4}; ++static const snmp::OID securityLevel = {1,3,6,1,6,3,12,1,3,1,5}; ++static const snmp::OID storageType = {1,3,6,1,6,3,12,1,3,1,6}; ++static const snmp::OID rowStatus = {1,3,6,1,6,3,12,1,3,1,7}; ++ // clang-format on ++} // namespace targetParams ++ ++/** ++ * @brief SNMP-TARGET-MIB::snmpTargetAddrTable fields ++ */ ++namespace targetAddr ++{ ++ // clang-format off ++static const snmp::OID tDomain = {1,3,6,1,6,3,12,1,2,1,2}; ++static const snmp::OID tAddress = {1,3,6,1,6,3,12,1,2,1,3}; ++static const snmp::OID timeout = {1,3,6,1,6,3,12,1,2,1,4}; ++static const snmp::OID retryCount = {1,3,6,1,6,3,12,1,2,1,5}; ++static const snmp::OID tagList = {1,3,6,1,6,3,12,1,2,1,6}; ++static const snmp::OID params = {1,3,6,1,6,3,12,1,2,1,7}; ++static const snmp::OID storageType = {1,3,6,1,6,3,12,1,2,1,8}; ++static const snmp::OID rowStatus = {1,3,6,1,6,3,12,1,2,1,9}; ++ // clang-format on ++} // namespace targetAddr ++ ++} // namespace table ++} // namespace snmp +diff --git a/snmp/oid.hpp b/snmp/oid.hpp +new file mode 100644 +index 0000000..5394873 +--- /dev/null ++++ b/snmp/oid.hpp +@@ -0,0 +1,42 @@ ++#pragma once ++ ++#include <net-snmp/net-snmp-config.h> ++#include <net-snmp/net-snmp-includes.h> ++ ++#include <string> ++#include <vector> ++ ++namespace snmp ++{ ++ ++struct OID : public std::vector<oid> ++{ ++ using std::vector<oid>::vector; ++ ++ static std::string dump(const oid* objid, const size_t length) ++ { ++ std::string ret(length * 11 + 1, '\0'); ++ size_t offset = 0; ++ for (size_t i = 0; i < length; ++i) ++ { ++ offset += snprintf(ret.data() + offset, ret.size() - offset, ".%lu", ++ objid[i]); ++ } ++ ret.resize(offset); ++ return std::forward<std::string>(ret); ++ } ++ ++ std::string dump() const ++ { ++ return std::forward<std::string>(dump(data(), size())); ++ } ++ ++ template <typename T> OID operator+(const T& tail) const ++ { ++ OID res = *this; ++ res.insert(res.end(), tail.begin(), tail.end()); ++ return std::forward<OID>(res); ++ } ++}; ++ ++} // namespace snmp +diff --git a/snmp/pdu.hpp b/snmp/pdu.hpp +new file mode 100644 +index 0000000..5487da0 +--- /dev/null ++++ b/snmp/pdu.hpp +@@ -0,0 +1,150 @@ ++#pragma once ++ ++#include "oid.hpp" ++ ++#include <net-snmp/net-snmp-config.h> ++#include <net-snmp/net-snmp-includes.h> ++ ++#include <iterator> ++#include <memory> ++ ++namespace snmp ++{ ++ ++class session; ++ ++namespace details ++{ ++ ++struct PduDeleter ++{ ++ void operator()(netsnmp_pdu* pduPtr) const ++ { ++ snmp_free_pdu(pduPtr); ++ } ++}; ++ ++using PduPtr = std::unique_ptr<netsnmp_pdu, PduDeleter>; ++} // namespace details ++ ++class pdu ++{ ++ public: ++ pdu() = delete; ++ pdu(const pdu&) = delete; ++ pdu& operator=(const pdu&) = delete; ++ ++ pdu(pdu&&) = default; ++ pdu& operator=(pdu&&) = default; ++ ~pdu() = default; ++ ++ netsnmp_pdu* get() const ++ { ++ return pduPtr.get(); ++ } ++ ++ static pdu create(const int command) ++ { ++ return std::forward<pdu>(pdu(snmp_pdu_create(command))); ++ } ++ ++ void addVar(const OID& oid) ++ { ++ snmp_add_null_var(pduPtr.get(), oid.data(), oid.size()); ++ } ++ ++ void addVar(const OID& oid, const int& value) ++ { ++ snmp_pdu_add_variable(pduPtr.get(), oid.data(), oid.size(), ASN_INTEGER, ++ &value, sizeof(value)); ++ } ++ ++ void addVar(const OID& oid, const std::string& value) ++ { ++ snmp_pdu_add_variable(pduPtr.get(), oid.data(), oid.size(), ++ ASN_OCTET_STR, value.c_str(), value.size()); ++ } ++ ++ void addVar(const OID& oid, const OID& value) ++ { ++ snmp_pdu_add_variable(pduPtr.get(), oid.data(), oid.size(), ++ ASN_OBJECT_ID, value.data(), ++ value.size() * sizeof(OID::value_type)); ++ } ++ ++ void addVar(const OID& oid, const std::vector<uint8_t>& value) ++ { ++ snmp_pdu_add_variable(pduPtr.get(), oid.data(), oid.size(), ++ ASN_OCTET_STR, value.data(), value.size()); ++ } ++ ++ netsnmp_pdu* operator->() const ++ { ++ return pduPtr.get(); ++ } ++ ++ struct iterator ++ { ++ using value_type = netsnmp_variable_list; ++ using reference = netsnmp_variable_list&; ++ using pointer = netsnmp_variable_list*; ++ using iterator_category = std::forward_iterator_tag; ++ ++ iterator(netsnmp_variable_list* vp) : vp(vp) ++ { ++ } ++ ++ reference operator*() ++ { ++ return *vp; ++ } ++ ++ pointer operator->() ++ { ++ return vp; ++ } ++ ++ iterator& operator++() ++ { ++ vp = vp->next_variable; ++ return *this; ++ } ++ ++ friend bool operator==(const iterator& a, const iterator& b) ++ { ++ return a.vp == b.vp; ++ }; ++ friend bool operator!=(const iterator& a, const iterator& b) ++ { ++ return a.vp != b.vp; ++ }; ++ ++ private: ++ pointer vp; ++ }; ++ ++ iterator begin() const ++ { ++ return iterator(pduPtr->variables); ++ } ++ iterator end() const ++ { ++ return iterator(nullptr); ++ } ++ ++ protected: ++ explicit pdu(netsnmp_pdu* rawPtr) : pduPtr(rawPtr) ++ { ++ if (pduPtr->command == SNMP_MSG_GETBULK) ++ { ++ pduPtr->non_repeaters = 0; ++ pduPtr->max_repetitions = 10; ++ } ++ } ++ ++ private: ++ friend class snmp::session; ++ details::PduPtr pduPtr; ++}; ++ ++} // namespace snmp +diff --git a/snmp/session.hpp b/snmp/session.hpp +new file mode 100644 +index 0000000..6665882 +--- /dev/null ++++ b/snmp/session.hpp +@@ -0,0 +1,110 @@ ++#pragma once ++ ++#include "exceptions.hpp" ++#include "pdu.hpp" ++ ++#include <net-snmp/net-snmp-config.h> ++#include <net-snmp/net-snmp-includes.h> ++ ++#include <memory> ++#include <string> ++ ++namespace snmp ++{ ++ ++namespace details ++{ ++ ++struct SessionDeleter ++{ ++ void operator()(netsnmp_session* sessionPtr) const ++ { ++ snmp_close(sessionPtr); ++ } ++}; ++ ++using SessionPtr = std::unique_ptr<netsnmp_session, SessionDeleter>; ++ ++} // namespace details ++ ++class session ++{ ++ public: ++ session() = delete; ++ session(const session&) = delete; ++ session& operator=(const session&) = delete; ++ ++ session(session&&) = default; ++ session& operator=(session&&) = default; ++ ~session() = default; ++ ++ netsnmp_session* get() const ++ { ++ return sessionPtr.get(); ++ } ++ ++ static session open(const std::string& peername, ++ const std::string& community, ++ const int version = SNMP_VERSION_2c, ++ const int retryAttempts = 3, ++ const int timeout = 1000000) ++ { ++ netsnmp_session ss{}; ++ ++ snmp_sess_init(&ss); ++ ss.version = version; ++ ss.retries = retryAttempts; ++ ss.timeout = timeout; ++ ss.peername = const_cast<char*>(peername.c_str()); ++ ss.community = const_cast<u_char*>( ++ reinterpret_cast<const u_char*>(community.c_str())); ++ ss.community_len = community.size(); ++ ++ netsnmp_session* sp = snmp_open(&ss); ++ ++ if (!sp) ++ { ++ throw snmp::exception::SnmpSessionError(&ss, "snmp_open()"); ++ } ++ ++ return std::forward<session>(session(sp)); ++ } ++ ++ void send(pdu& pdu) const ++ { ++ netsnmp_pdu* rsp = nullptr; ++ auto status = snmp_synch_response(sessionPtr.get(), pdu.get(), &rsp); ++ pdu.pduPtr.release(); ++ pdu.pduPtr.reset(rsp); ++ ++ switch (status) ++ { ++ case STAT_TIMEOUT: ++ throw snmp::exception::SnmpTimeout(); ++ break; ++ ++ case STAT_ERROR: ++ throw snmp::exception::SnmpSessionError( ++ sessionPtr.get(), "snmp_synch_response()"); ++ break; ++ ++ default: ++ break; ++ } ++ ++ if (pdu->errstat != SNMP_ERR_NOERROR) ++ { ++ throw snmp::exception::SnmpPacketError(pdu->errstat); ++ } ++ } ++ ++ protected: ++ explicit session(netsnmp_session* sp) : sessionPtr(sp) ++ { ++ } ++ ++ private: ++ details::SessionPtr sessionPtr; ++}; ++ ++} // namespace snmp +diff --git a/snmp_conf_manager.cpp b/snmp_conf_manager.cpp +index 4ddace1..2a631b7 100644 +--- a/snmp_conf_manager.cpp ++++ b/snmp_conf_manager.cpp +@@ -6,6 +6,11 @@ + #include "snmp_util.hpp" + #include "xyz/openbmc_project/Common/error.hpp" + ++#if defined( USE_SNMPD ) && ( USE_SNMPD == 1 ) ++#include "snmp/pdu.hpp" ++#include "snmp/notify_tables.hpp" ++#endif ++ + #include <arpa/inet.h> + + #include <phosphor-logging/elog-errors.hpp> +@@ -29,14 +34,97 @@ ConfManager::ConfManager(sdbusplus::bus::bus& bus, const char* objPath) : + details::CreateIface::action::defer_emit), + dbusPersistentLocation(SNMP_CONF_PERSIST_PATH), bus(bus), + objectPath(objPath) ++#if defined( USE_SNMPD ) && ( USE_SNMPD == 1 ) ++ , ++ session(::snmp::session::open(SNMPD_ADDRESS, SNMPD_COMMUNITY)) ++#endif + {} + ++#if defined( USE_SNMPD ) && ( USE_SNMPD == 1 ) ++static std::vector<uint8_t> encodeAddr(const std::string& addr, uint16_t port) ++{ ++ std::vector<uint8_t> data; ++ ++ addrinfo hints; ++ addrinfo* ptr = nullptr; ++ ++ memset(&hints, 0, sizeof hints); ++ hints.ai_family = AF_UNSPEC; ++ hints.ai_socktype = SOCK_STREAM; ++ hints.ai_flags |= AI_CANONNAME; ++ ++ auto result = ++ getaddrinfo(addr.c_str(), std::to_string(port).c_str(), &hints, &ptr); ++ if (result) ++ { ++ log<level::ERR>("getaddrinfo failed", ++ entry("ADDRESS=%s", addr.c_str())); ++ elog<InternalFailure>(); ++ } ++ ++ AddrPtr addrPtr{ptr}; ++ ptr = nullptr; ++ ++ auto sa = reinterpret_cast<const sockaddr_in*>(addrPtr->ai_addr); ++ auto begin = reinterpret_cast<const uint8_t*>(&(sa->sin_addr)); ++ data.insert(data.end(), begin, begin + sizeof(sa->sin_addr)); ++ ++ begin = reinterpret_cast<const uint8_t*>(&(sa->sin_port)); ++ data.insert(data.end(), begin, begin + sizeof(sa->sin_port)); ++ ++ return data; ++} ++#endif ++ + std::string ConfManager::client(std::string address, uint16_t port) + { + // will throw exception if it is already configured. + checkClientConfigured(address, port); + + lastClientId++; ++ ++#if defined( USE_SNMPD ) && ( USE_SNMPD == 1 ) ++ auto data = encodeAddr(address, port); ++ try ++ { ++ auto pdu = ::snmp::pdu::create(SNMP_MSG_SET); ++ auto index = std::to_string(lastClientId); ++ ++ constexpr int noAuthNoPriv = 1; ++ constexpr int createAndGo = 4; ++ ++ using namespace ::snmp::table; ++ ++ pdu.addVar(targetParams::mpModel + index, 1 /* SNMPv2c */); ++ pdu.addVar(targetParams::securityModel + index, 2 /* SNMPv2c */); ++ pdu.addVar(targetParams::securityName + index, "public"); ++ pdu.addVar(targetParams::securityLevel + index, noAuthNoPriv); ++ pdu.addVar(targetParams::rowStatus + index, createAndGo); ++ ++ const ::snmp::OID snmpUDPDomain = {1, 3, 6, 1, 6, 1, 1}; ++ ++ pdu.addVar(targetAddr::tDomain + index, snmpUDPDomain); ++ pdu.addVar(targetAddr::tAddress + index, data); ++ pdu.addVar(targetAddr::tagList + index, index); ++ pdu.addVar(targetAddr::params + index, index); ++ pdu.addVar(targetAddr::rowStatus + index, createAndGo); ++ ++ constexpr int trap = 1; ++ ++ pdu.addVar(notify::tag + index, index); ++ pdu.addVar(notify::type + index, trap); ++ pdu.addVar(notify::rowStatus + index, createAndGo); ++ ++ session.send(pdu); ++ } ++ catch (const ::snmp::exception::SnmpError& ex) ++ { ++ log<level::ERR>("Sending client data to snmpd failed", ++ entry("ERROR=%s", ex.what()), ++ entry("ADDRESS=%s", address.c_str())); ++ elog<InternalFailure>(); ++ } ++#else + try + { + // just to check whether given address is valid or not. +@@ -48,6 +136,7 @@ std::string ConfManager::client(std::string address, uint16_t port) + elog<InvalidArgument>(Argument::ARGUMENT_NAME("Address"), + Argument::ARGUMENT_VALUE(address.c_str())); + } ++#endif + + // create the D-Bus object + std::filesystem::path objPath; +@@ -57,8 +146,10 @@ std::string ConfManager::client(std::string address, uint16_t port) + auto client = std::make_unique<phosphor::network::snmp::Client>( + bus, objPath.string().c_str(), *this, address, port); + ++#if ! defined( USE_SNMPD ) || ( USE_SNMPD == 0 ) + // save the D-Bus object + serialize(lastClientId, *client, dbusPersistentLocation); ++#endif + + this->clients.emplace(lastClientId, std::move(client)); + return objPath.string(); +@@ -98,6 +189,27 @@ void ConfManager::deleteSNMPClient(Id id) + return; + } + ++#if defined( USE_SNMPD ) && ( USE_SNMPD == 1 ) ++ try ++ { ++ using namespace ::snmp::table; ++ ++ constexpr int destroy = 6; ++ auto pdu = ::snmp::pdu::create(SNMP_MSG_SET); ++ auto index = std::to_string(id); ++ pdu.addVar(notify::rowStatus + index, destroy); ++ pdu.addVar(targetAddr::rowStatus + index, destroy); ++ pdu.addVar(targetParams::rowStatus + index, destroy); ++ session.send(pdu); ++ } ++ catch (const ::snmp::exception::SnmpError& ex) ++ { ++ log<level::ERR>("Deleting client data from snmpd failed", ++ entry("ERROR=%s", ex.what()), ++ entry("CLIENT_UD=%zu", id)); ++ elog<InternalFailure>(); ++ } ++#else + std::error_code ec; + // remove the persistent file + fs::path fileName = dbusPersistentLocation; +@@ -115,12 +227,106 @@ void ConfManager::deleteSNMPClient(Id id) + { + lg2::error("{FILE} doesn't exist", "FILE", fileName); + } ++#endif ++ + // remove the D-Bus Object. + this->clients.erase(it); + } + + void ConfManager::restoreClients() + { ++#if defined( USE_SNMPD ) && ( USE_SNMPD == 1 ) ++ using SnmpClient = std::tuple<std::string, uint16_t>; ++ using SnmpClients = std::map<Id, SnmpClient>; ++ SnmpClients snmpClients; ++ ++ try ++ { ++ using namespace ::snmp::table; ++ auto root = targetAddr::tAddress; ++ ++ while (!root.empty()) ++ { ++ auto pdu = ::snmp::pdu::create(SNMP_MSG_GETBULK); ++ pdu.addVar(root); ++ session.send(pdu); ++ ++ for (const auto& var : pdu) ++ { ++ if (var.name_length <= targetAddr::tAddress.size() || ++ !std::equal(targetAddr::tAddress.begin(), ++ targetAddr::tAddress.end(), var.name)) ++ { ++ // End of table reached. ++ root.clear(); ++ break; ++ } ++ ++ std::string index(var.name + targetAddr::tAddress.size(), ++ var.name + var.name_length); ++ Id idNum = std::stol(index); ++ ++ char ipaddress[INET6_ADDRSTRLEN]; ++ if (inet_ntop(AF_INET, var.val.string, ipaddress, ++ sizeof(ipaddress))) ++ { ++ auto& snmpClient = snmpClients[idNum]; ++ std::get<0>(snmpClient) = ipaddress; ++ std::get<1>(snmpClient) = ++ ntohs(*(reinterpret_cast<uint16_t*>( ++ var.val.string + sizeof(in_addr_t)))); ++ } ++ ++ if (!var.next_variable) ++ { ++ // Following request should contain the last OID ++ root.assign(var.name, var.name + var.name_length); ++ } ++ } ++ } ++ } ++ catch (const ::snmp::exception::SnmpError& ex) ++ { ++ log<level::ERR>("Receiving list of clients from snmpd failed", ++ entry("ERROR=%s", ex.what())); ++ elog<InternalFailure>(); ++ } ++ ++ // Remove excess clients ++ for (auto it = clients.begin(); it != clients.end();) ++ { ++ auto snmpIt = snmpClients.find(it->first); ++ if (snmpIt == snmpClients.end()) ++ { ++ it = clients.erase(it); ++ } ++ else ++ { ++ it++; ++ } ++ } ++ ++ // Add missing clients ++ for (const auto& [id, snmpClient] : snmpClients) ++ { ++ auto it = clients.find(id); ++ if (it == clients.end()) ++ { ++ fs::path objPath = objectPath; ++ objPath /= std::to_string(id); ++ ++ auto client = std::make_unique<Client>( ++ bus, objPath.string().c_str(), *this, std::get<0>(snmpClient), ++ std::get<1>(snmpClient)); ++ clients.emplace(id, std::move(client)); ++ ++ if (id > lastClientId) ++ { ++ lastClientId = id; ++ } ++ } ++ } ++#else + if (!fs::exists(dbusPersistentLocation) || + fs::is_empty(dbusPersistentLocation)) + { +@@ -152,6 +358,7 @@ void ConfManager::restoreClients() + } + } + } ++#endif + } + + } // namespace snmp +diff --git a/snmp_conf_manager.hpp b/snmp_conf_manager.hpp +index afbfad8..10ed4dd 100644 +--- a/snmp_conf_manager.hpp ++++ b/snmp_conf_manager.hpp +@@ -1,6 +1,9 @@ + #pragma once + + #include "snmp_client.hpp" ++#if defined( USE_SNMPD ) && ( USE_SNMPD == 1 ) ++#include "snmp/session.hpp" ++#endif + + #include <sdbusplus/bus.hpp> + #include <xyz/openbmc_project/Network/Client/Create/server.hpp> +@@ -84,6 +87,11 @@ class ConfManager : public details::CreateIface + /** @brief map of SNMP Client dbus objects and their ID */ + ClientList clients; + ++#if defined( USE_SNMPD ) && ( USE_SNMPD == 1 ) ++ /** @brief SNMP client session */ ++ ::snmp::session session; ++#endif ++ + /** @brief Id of the last SNMP manager entry */ + Id lastClientId = 0; + +diff --git a/snmp_main.cpp b/snmp_main.cpp +index df5850b..d6e6646 100644 +--- a/snmp_main.cpp ++++ b/snmp_main.cpp +@@ -42,5 +42,16 @@ int main(int /*argc*/, char** /*argv[]*/) + sdeventplus::source::Signal sigTerm(event, SIGTERM, cleanExit); + sdeventplus::source::Signal sigInt(event, SIGINT, cleanExit); + ++#if defined( USE_SNMPD ) && ( USE_SNMPD == 1 ) ++ // Reload list of clients ++ stdplus::signal::block(SIGHUP); ++ sdeventplus::source::Signal sigHup( ++ event, SIGHUP, ++ [&manager](sdeventplus::source::Signal&, ++ const struct signalfd_siginfo*) { ++ manager->restoreClients(); ++ }); ++#endif ++ + return event.loop(); + } +-- +2.35.1 + diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/snmpd-dependency.conf b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/snmpd-dependency.conf new file mode 100644 index 0000000000..8507aaa0e6 --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp/snmpd-dependency.conf @@ -0,0 +1,3 @@ +[Unit] +Requires=snmpd.service +After=snmpd.service diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp_%.bbappend new file mode 100644 index 0000000000..a784b2510b --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/phosphor-snmp_%.bbappend @@ -0,0 +1,23 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" + +SRC_URI += " \ + file://0001-main-Use-sdeventplus.patch \ + file://0002-main-Add-UNIX-signals-handler.patch \ + file://0003-conf_manager-use-snmpd-as-a-clients-storage.patch \ + file://snmpd-dependency.conf \ + " + +EXTRA_OEMESON:append = " -Dsnmpd-support=enabled -Dsnmpd-address=localhost -Dsnmpd-community=private" + +DEPENDS += "sdeventplus" +DEPENDS += "stdplus" + +RDEPENDS:${PN} += " \ + net-snmp \ + phosphor-logging \ + phosphor-dbus-interfaces \ + " + +SYSTEMD_OVERRIDE:${PN}:append = " \ + snmpd-dependency.conf:xyz.openbmc_project.Network.SNMP.service.d/snmpd-dependency.conf \ + " diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry/0001-set_new_report_path.patch b/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry/0001-set_new_report_path.patch new file mode 100644 index 0000000000..b59438bd28 --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry/0001-set_new_report_path.patch @@ -0,0 +1,22 @@ +From 71ad04dd8ce0a31fe260626215d30bf0e58b255c Mon Sep 17 00:00:00 2001 +From: eportnov <eportnov@ibs.ru> +Date: Fri, 15 Jul 2022 17:38:30 +0300 +Subject: [PATCH] set_new_report_path + +--- + src/report.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/report.hpp b/src/report.hpp +index 6d8c6b4..8d71bc9 100644 +--- a/src/report.hpp ++++ b/src/report.hpp +@@ -137,7 +137,7 @@ class Report : public interfaces::Report, public interfaces::MetricListener + static constexpr const char* reportIfaceName = + "xyz.openbmc_project.Telemetry.Report"; + static constexpr const char* reportDir = +- "/xyz/openbmc_project/Telemetry/Reports/"; ++ "/xyz/openbmc_project/Telemetry/Reports/TelemetryService/"; + static constexpr const char* deleteIfaceName = + "xyz.openbmc_project.Object.Delete"; + static constexpr size_t reportVersion = 6; diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry/3017361602 b/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry/3017361602 new file mode 100644 index 0000000000..57252a3388 --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry/3017361602 @@ -0,0 +1 @@ +{"AppendLimit":20,"Enabled":true,"Id":"report_id","Interval":1000,"Name":"report_name","ReadingParameters":[{"collectionDuration":10,"collectionTimeScope":0,"id":"id","operationType":2,"sensorPath":[{"metadata":"meta_data","path":"/xyz/openbmc_project/sensors/voltage/PVCCIN_CPU1","service":"xyz.openbmc_project.ADCSensor"}]}],"ReportActions":[1],"ReportUpdates":2,"ReportingType":0,"Version":6}
\ No newline at end of file diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry_%.bbappend new file mode 100644 index 0000000000..ca45488936 --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/telemetry/telemetry_%.bbappend @@ -0,0 +1,8 @@ +FILESEXTRAPATHS:append := "${THISDIR}/${PN}:" +SRC_URI += "file://3017361602 \ + file://0001-set_new_report_path.patch \ + " +do_install:append() { + install -d ${D}/var/lib/telemetry/Reports + cp ${WORKDIR}/3017361602 ${D}/var/lib/telemetry/Reports +} diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/0002-add-new-dimm-fields.patch b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/0002-add-new-dimm-fields.patch new file mode 100644 index 0000000000..0b3cdd6475 --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/0002-add-new-dimm-fields.patch @@ -0,0 +1,29 @@ +From b2fed2b2735851248931753a70e8135318b51661 Mon Sep 17 00:00:00 2001 +From: eportnov <eportnov@ibs.ru> +Date: Fri, 8 Jul 2022 16:40:06 +0300 +Subject: [PATCH] add new dimm fields + +--- + src/store/modules/HardwareStatus/MemoryStore.js | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/store/modules/HardwareStatus/MemoryStore.js b/src/store/modules/HardwareStatus/MemoryStore.js +index fd8f0a9..ff0b00f 100644 +--- a/src/store/modules/HardwareStatus/MemoryStore.js ++++ b/src/store/modules/HardwareStatus/MemoryStore.js +@@ -26,6 +26,7 @@ const MemoryStore = { + SparePartNumber, + Description, + MemoryType, ++ Model, + MemorySize, + LocationIndicatorActive, + Location, +@@ -45,6 +46,7 @@ const MemoryStore = { + sparePartNumber: SparePartNumber, + description: Description, + memoryType: MemoryType, ++ model: Model, + memorySize: MemorySize, + identifyLed: LocationIndicatorActive, + uri: data['@odata.id'], diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend index 493c101f7b..0ff04ae0b5 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend @@ -8,12 +8,14 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" EXTRA_OENPM = "-- --mode sila" + SRC_URI = "git://git@git.sila.ru/srv/pub/scm/git/openbmc/webui-vue.git;branch=sila-ui;protocol=ssh" -SRCREV = "8047ae3d83ba0718fb7a42907036157e5c680b85" +SRCREV = "a4f3903f2b4fa9dff958591a78d8888c653efa50" SRC_URI += "\ file://favicon.ico \ file://0001-IBS-html-head-title.patch \ + file://0002-add-new-dimm-fields.patch \ " do_update_logo () { diff --git a/meta-phosphor/recipes-phosphor/interfaces/bmcweb_git.bb b/meta-phosphor/recipes-phosphor/interfaces/bmcweb_git.bb index 9034936e29..d86041f1b0 100644 --- a/meta-phosphor/recipes-phosphor/interfaces/bmcweb_git.bb +++ b/meta-phosphor/recipes-phosphor/interfaces/bmcweb_git.bb @@ -19,10 +19,6 @@ S = "${WORKDIR}/git" inherit pkgconfig meson ptest -SRC_URI += " \ - file://run-ptest \ -" - DEPENDS = " \ openssl \ zlib \ |