Accepting request 419749 from home:olh:branches:Base:System
- Detect dom1 via xenfs instead of cpuid to compensate for ABI change in xen-4.7 on AMD systems. (bnc#974257) biosdevname-dom0.patch OBS-URL: https://build.opensuse.org/request/show/419749 OBS-URL: https://build.opensuse.org/package/show/Base:System/biosdevname?expand=0&rev=64
This commit is contained in:
parent
4e41765fe0
commit
bfc6057abe
52
biosdevname-dom0.patch
Normal file
52
biosdevname-dom0.patch
Normal file
@ -0,0 +1,52 @@
|
||||
---
|
||||
src/bios_dev_name.c | 31 +++++++++++++++++++++++++++++++
|
||||
1 file changed, 31 insertions(+)
|
||||
|
||||
--- a/src/bios_dev_name.c
|
||||
+++ b/src/bios_dev_name.c
|
||||
@@ -133,6 +133,33 @@ cpuid (u_int32_t eax, u_int32_t ecx)
|
||||
}
|
||||
|
||||
/*
|
||||
+ Starting with xen-4.7 cpuid will return with the hypervisor bit set
|
||||
+ on AMD systems. This breaks biosdevname and network interface names.
|
||||
+ Instead of relying on cpuid check for dom0 in xenfs.
|
||||
+*/
|
||||
+static int
|
||||
+running_in_dom0(void)
|
||||
+{
|
||||
+ size_t len = 0;
|
||||
+#ifdef __x86_64__
|
||||
+ char buf[16];
|
||||
+ FILE *f = fopen("/proc/xen/capabilities", "r");
|
||||
+
|
||||
+ if (!f)
|
||||
+ return 0;
|
||||
+ memset(buf, 0, sizeof(buf));
|
||||
+ len = fread(&buf, 1, sizeof(buf) - 1, f);
|
||||
+ fclose(f);
|
||||
+ while(len && --len && len < sizeof(buf)) {
|
||||
+ if (buf[len] == '\n')
|
||||
+ buf[len] = '\0';
|
||||
+ }
|
||||
+ len = strcmp("control_d", buf) == 0;
|
||||
+#endif
|
||||
+ return len;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
Algorithm suggested by:
|
||||
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458
|
||||
*/
|
||||
@@ -144,7 +171,11 @@ running_in_virtual_machine (void)
|
||||
|
||||
ecx = cpuid (eax, ecx);
|
||||
if (ecx & 0x80000000U)
|
||||
+ {
|
||||
+ if (running_in_dom0())
|
||||
+ return 0;
|
||||
return 1;
|
||||
+ }
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,3 +1,10 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 16 14:18:06 UTC 2016 - olaf@aepfle.de
|
||||
|
||||
- Detect dom0 via xenfs instead of cpuid to compensate for ABI
|
||||
change in xen-4.7 on AMD systems. (bnc#974257)
|
||||
biosdevname-dom0.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Mar 4 13:34:44 UTC 2016 - trenn@suse.de
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package biosdevname
|
||||
#
|
||||
# Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -29,6 +29,7 @@ Patch1: ignore-broken-BIOSes
|
||||
Patch2: whitelist-dell
|
||||
Patch3: udev-rule-path.patch
|
||||
Patch4: biosdevname-pic.patch
|
||||
Patch5: biosdevname-dom0.patch
|
||||
BuildRequires: automake
|
||||
# to figure out how to name/location of the rules file
|
||||
BuildRequires: libudev-devel
|
||||
@ -67,6 +68,7 @@ You can enable/disable usage of biosdevname with boot option
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
|
||||
%build
|
||||
sed -i -e 's#@@BIOSDEVNAME_RULEDEST@@#'%{_udevrulesdir}'/71-biosdevname.rules#' configure.ac
|
||||
|
Loading…
Reference in New Issue
Block a user