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
|
Fri Mar 4 13:34:44 UTC 2016 - trenn@suse.de
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package biosdevname
|
# 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
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -29,6 +29,7 @@ Patch1: ignore-broken-BIOSes
|
|||||||
Patch2: whitelist-dell
|
Patch2: whitelist-dell
|
||||||
Patch3: udev-rule-path.patch
|
Patch3: udev-rule-path.patch
|
||||||
Patch4: biosdevname-pic.patch
|
Patch4: biosdevname-pic.patch
|
||||||
|
Patch5: biosdevname-dom0.patch
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
# to figure out how to name/location of the rules file
|
# to figure out how to name/location of the rules file
|
||||||
BuildRequires: libudev-devel
|
BuildRequires: libudev-devel
|
||||||
@ -67,6 +68,7 @@ You can enable/disable usage of biosdevname with boot option
|
|||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
|
%patch5 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
sed -i -e 's#@@BIOSDEVNAME_RULEDEST@@#'%{_udevrulesdir}'/71-biosdevname.rules#' configure.ac
|
sed -i -e 's#@@BIOSDEVNAME_RULEDEST@@#'%{_udevrulesdir}'/71-biosdevname.rules#' configure.ac
|
||||||
|
Loading…
Reference in New Issue
Block a user