diff --git a/SOURCES/lm_sensors-3.4.0-allow_no_sensors.patch b/SOURCES/lm_sensors-3.4.0-allow_no_sensors.patch
new file mode 100644
index 0000000..17d85f0
--- /dev/null
+++ b/SOURCES/lm_sensors-3.4.0-allow_no_sensors.patch
@@ -0,0 +1,92 @@
+diff --git a/prog/sensors/main.c b/prog/sensors/main.c
+index f535b66..a19b919 100644
+--- a/prog/sensors/main.c
++++ b/prog/sensors/main.c
+@@ -54,15 +54,16 @@ static void print_short_help(void)
+ static void print_long_help(void)
+ {
+ 	printf("Usage: %s [OPTION]... [CHIP]...\n", PROGRAM);
+-	puts("  -c, --config-file     Specify a config file\n"
+-	     "  -h, --help            Display this help text\n"
+-	     "  -s, --set             Execute `set' statements (root only)\n"
+-	     "  -f, --fahrenheit      Show temperatures in degrees fahrenheit\n"
+-	     "  -A, --no-adapter      Do not show adapter for each chip\n"
+-	     "      --bus-list        Generate bus statements for sensors.conf\n"
+-	     "  -u                    Raw output\n"
+-	     "  -j                    Json output\n"
+-	     "  -v, --version         Display the program version\n"
++	puts("  -c, --config-file      Specify a config file\n"
++	     "  -h, --help             Display this help text\n"
++	     "  -s, --set              Execute `set' statements (root only)\n"
++	     "  -f, --fahrenheit       Show temperatures in degrees fahrenheit\n"
++	     "  -A, --no-adapter       Do not show adapter for each chip\n"
++	     "      --bus-list         Generate bus statements for sensors.conf\n"
++	     "  -u                     Raw output\n"
++	     "  -j                     Json output\n"
++	     "  -v, --version          Display the program version\n"
++	     "  -n, --allow-no-sensors Do not fail if no sensors found\n"
+ 	     "\n"
+ 	     "Use `-' after `-c' to read the config file from stdin.\n"
+ 	     "If no chips are specified, all chip info will be printed.\n"
+@@ -270,7 +271,7 @@ static void print_bus_list(void)
+ 
+ int main(int argc, char *argv[])
+ {
+-	int c, i, err, do_bus_list;
++	int c, i, err, do_bus_list, allow_no_sensors;
+ 	const char *config_file_name = NULL;
+ 
+ 	struct option long_opts[] =  {
+@@ -281,6 +282,7 @@ int main(int argc, char *argv[])
+ 		{ "no-adapter", no_argument, NULL, 'A' },
+ 		{ "config-file", required_argument, NULL, 'c' },
+ 		{ "bus-list", no_argument, NULL, 'B' },
++		{ "allow-no-sensors", no_argument, NULL, 'n' },
+ 		{ 0, 0, 0, 0 }
+ 	};
+ 
+@@ -291,8 +293,9 @@ int main(int argc, char *argv[])
+ 	do_sets = 0;
+ 	do_bus_list = 0;
+ 	hide_adapter = 0;
++	allow_no_sensors = 0;
+ 	while (1) {
+-		c = getopt_long(argc, argv, "hsvfAc:uj", long_opts, NULL);
++		c = getopt_long(argc, argv, "hsvfAc:ujn", long_opts, NULL);
+ 		if (c == EOF)
+ 			break;
+ 		switch(c) {
+@@ -327,6 +330,9 @@ int main(int argc, char *argv[])
+ 		case 'B':
+ 			do_bus_list = 1;
+ 			break;
++		case 'n':
++			allow_no_sensors = 1;
++			break;
+ 		default:
+ 			fprintf(stderr,
+ 				"Internal error while parsing options!\n");
+@@ -349,7 +355,9 @@ int main(int argc, char *argv[])
+ 				"No sensors found!\n"
+ 				"Make sure you loaded all the kernel drivers you need.\n"
+ 				"Try sensors-detect to find out which these are.\n");
+-			err = 1;
++			if (!allow_no_sensors) {
++				err = 1;
++			}
+ 		}
+ 	} else {
+ 		int cnt = 0;
+diff --git a/prog/sensors/sensors.1 b/prog/sensors/sensors.1
+index 7d66e4b..d207aa1 100644
+--- a/prog/sensors/sensors.1
++++ b/prog/sensors/sensors.1
+@@ -78,6 +78,8 @@ are only needed if you have several chips sharing the same address on different
+ buses of the same type. As bus numbers are usually not guaranteed to be stable
+ over reboots, these statements let you refer to each bus by its name rather
+ than numbers.
++.IP "-n, --allow-no-sensors"
++Do not fail if no sensors found. The error message will be printed in the log.
+ .SH FILES
+ .I /etc/sensors3.conf
+ .br
diff --git a/SOURCES/lm_sensors-wrapper b/SOURCES/lm_sensors-wrapper
new file mode 100644
index 0000000..8eb32a4
--- /dev/null
+++ b/SOURCES/lm_sensors-wrapper
@@ -0,0 +1,8 @@
+#!/bin/sh
+if /usr/bin/systemd-detect-virt 2>/dev/null 1>&2; then
+    SENSORS_FLAGS_VM='-n';
+else
+    SENSORS_FLAGS_VM='';
+fi;
+
+/usr/bin/sensors -s $SENSORS_FLAGS_VM 
diff --git a/SOURCES/lm_sensors.service b/SOURCES/lm_sensors.service
index 904660a..fc99241 100644
--- a/SOURCES/lm_sensors.service
+++ b/SOURCES/lm_sensors.service
@@ -6,7 +6,7 @@ EnvironmentFile=/etc/sysconfig/lm_sensors
 Type=oneshot
 RemainAfterExit=yes
 ExecStart=-@WRAPPER_DIR@/lm_sensors-modprobe-wrapper $BUS_MODULES $HWMON_MODULES
-ExecStart=/usr/bin/sensors -s
+ExecStart=@WRAPPER_DIR@/lm_sensors-wrapper
 ExecStop=-@WRAPPER_DIR@/lm_sensors-modprobe-r-wrapper $BUS_MODULES $HWMON_MODULES
 
 [Install]
diff --git a/SPECS/lm_sensors.spec b/SPECS/lm_sensors.spec
index 98998eb..b4523c3 100644
--- a/SPECS/lm_sensors.spec
+++ b/SPECS/lm_sensors.spec
@@ -7,7 +7,7 @@
 
 Name: lm_sensors
 Version: 3.4.0
-Release: 22.%{date}git%{shortcommit}%{?dist}
+Release: 23.%{date}git%{shortcommit}%{?dist}
 Summary: Hardware monitoring tools
 Group: Applications/System
 
@@ -29,6 +29,7 @@ Source4: lm_sensors-modprobe-r-wrapper
 Source5: sensord.service
 Source6: sensord-service-wrapper
 Source7: lm_sensors.service
+Source8: lm_sensors-wrapper
 
 # Upstream patch:
 Patch1: 0001-sensors-detect-Add-detection-of-AMD-Family-17h-model.patch
@@ -42,6 +43,8 @@ Patch3: 0001-sensors-detect-Fix-printing-CPU-info-on-ppc-and-arm.patch
 Patch4: fix-unexpanded-revision-strings.patch
 # Upstream commit 5deee7d0c301df779:
 Patch5: 0001-sensors-detect-Add-support-for-AMD-CPU-Family-19h.patch
+# Upstream commit a0ef84f6583dbf427ff5a3534528e1e72bd00137:
+Patch6: lm_sensors-3.4.0-allow_no_sensors.patch
 
 Requires: /usr/sbin/modprobe
 %ifarch %{ix86} x86_64
@@ -102,6 +105,7 @@ database, and warns of sensor alarms.
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
+%patch6 -p1
 
 # Remove currently unused files to make sure we've got the license right
 rm -f prog/init/sysconfig-lm_sensors-convert prog/hotplug/unhide_ICH_SMBus
@@ -144,6 +148,7 @@ install -pm 644 sensord.service              $RPM_BUILD_ROOT%{_unitdir}
 mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/%{name}
 install -pm 755 %{SOURCE3} $RPM_BUILD_ROOT%{_libexecdir}/%{name}/lm_sensors-modprobe-wrapper
 install -pm 755 %{SOURCE4} $RPM_BUILD_ROOT%{_libexecdir}/%{name}/lm_sensors-modprobe-r-wrapper
+install -pm 755 %{SOURCE8} $RPM_BUILD_ROOT%{_libexecdir}/%{name}/lm_sensors-wrapper
 
 # sensord service wrapper
 install -pm 755 %{SOURCE6} $RPM_BUILD_ROOT%{_libexecdir}/%{name}/sensord-service-wrapper
@@ -201,6 +206,7 @@ fi
 %{_unitdir}/fancontrol.service
 %dir %{_libexecdir}/%{name}
 %{_libexecdir}/%{name}/lm_sensors-modprobe*wrapper
+%{_libexecdir}/%{name}/lm_sensors-wrapper
 %exclude %{_sbindir}/sensord
 %exclude %{_mandir}/man8/sensord.8.gz
 
@@ -223,6 +229,10 @@ fi
 
 
 %changelog
+* Thu Feb 25 2021 Artem Egorenkov <aegorenk@redhat.com> - 3.4.0-23
+- New flag for no sensors added. This flag is used in VM environment
+  to make sensors binaries not fail if no sensors was detected.
+
 * Fri Oct 30 2020 Artem Egorenkov <aegorenk@redhat.com> - 3.4.0-22.20180522git70f7e08
 - Add support for AMD CPU Family 19h
 - Resolves: rhbz#1846847