openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
March 2018
- 1 participants
- 2685 discussions
Hello community,
here is the log from the commit of package grub2 for openSUSE:Factory checked in at 2018-03-30 12:01:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/grub2 (Old)
and /work/SRC/openSUSE:Factory/.grub2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "grub2"
Fri Mar 30 12:01:00 2018 rev:179 rq:591814 version:2.02
Changes:
--------
--- /work/SRC/openSUSE:Factory/grub2/grub2.changes 2018-03-19 23:30:34.894228962 +0100
+++ /work/SRC/openSUSE:Factory/.grub2.new/grub2.changes 2018-03-30 12:01:03.707534300 +0200
@@ -1,0 +2,6 @@
+Mon Mar 26 11:37:13 UTC 2018 - msuchanek(a)suse.com
+
+- Fix incorrect netmask on ppc64 (bsc#1085419)
+ * grub2-Fix-incorrect-netmask-on-ppc64.patch
+
+-------------------------------------------------------------------
New:
----
grub2-Fix-incorrect-netmask-on-ppc64.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ grub2.spec ++++++
--- /var/tmp/diff_new_pack.77DXVk/_old 2018-03-30 12:01:05.591466175 +0200
+++ /var/tmp/diff_new_pack.77DXVk/_new 2018-03-30 12:01:05.599465885 +0200
@@ -213,8 +213,7 @@
Patch82: grub2-diskfilter-support-pv-without-metadatacopies.patch
Patch83: grub2-efi-uga-64bit-fb.patch
Patch84: grub2-s390x-09-improve-zipl-setup.patch
-Patch85: grub2-install-remove-useless-check-PReP-partition-is-empty.patch
-Patch86: grub2-getroot-scan-disk-pv.patch
+Patch85: grub2-getroot-scan-disk-pv.patch
# Btrfs snapshot booting related patches
Patch101: grub2-btrfs-01-add-ability-to-boot-from-subvolumes.patch
Patch102: grub2-btrfs-02-export-subvolume-envvars.patch
@@ -247,6 +246,8 @@
Patch235: 0002-Add-Virtual-LAN-support.patch
Patch236: grub2-efi_gop-avoid-low-resolution.patch
Patch277: grub2-ppc64-cas-reboot-support.patch
+Patch278: grub2-install-remove-useless-check-PReP-partition-is-empty.patch
+Patch279: grub2-Fix-incorrect-netmask-on-ppc64.patch
# Support HTTP Boot IPv4 and IPv6 (fate#320129)
Patch280: 0001-misc-fix-invalid-character-recongition-in-strto-l.patch
Patch281: 0002-net-read-bracketed-ipv6-addrs-and-port-numbers.patch
@@ -492,7 +493,6 @@
%patch83 -p1
%patch84 -p1
%patch85 -p1
-%patch86 -p1
%patch101 -p1
%patch102 -p1
%patch103 -p1
@@ -519,6 +519,8 @@
%patch235 -p1
%patch236 -p1
%patch277 -p1
+%patch278 -p1
+%patch279 -p1
%patch280 -p1
%patch281 -p1
%patch282 -p1
++++++ grub2-Fix-incorrect-netmask-on-ppc64.patch ++++++
From: Masahiro Matsuya <mmatsuya(a)redhat.com>
The netmask configured in firmware is not respected on ppc64 (big endian).
When 255.255.252.0 is set as netmask in firmware, the following is the value of bootpath string in grub_ieee1275_parse_bootpath().
/vdevice/l-lan@30000002:speed=auto,duplex=auto,192.168.88.10,,192.168.89.113,192.168.88.1,5,5,255.255.252.0,512
The netmask in this bootpath is no problem, since it's a value specified in firmware. But,
The value of 'subnet_mask.ipv4' was set with 0xfffffc00, and __builtin_ctz (~grub_le_to_cpu32 (subnet_mask.ipv4)) returned 16 (not 22).
As a result, 16 was used for netmask wrongly.
1111 1111 1111 1111 1111 1100 0000 0000 # subnet_mask.ipv4 (=0xfffffc00)
0000 0000 1111 1100 1111 1111 1111 1111 # grub_le_to_cpu32 (subnet_mask.ipv4)
1111 1111 0000 0011 0000 0000 0000 0000 # ~grub_le_to_cpu32 (subnet_mask.ipv4)
And, the count of zero with __builtin_ctz can be 16.
This patch changes it as below.
1111 1111 1111 1111 1111 1100 0000 0000 # subnet_mask.ipv4 (=0xfffffc00)
0000 0000 1111 1100 1111 1111 1111 1111 # grub_le_to_cpu32 (subnet_mask.ipv4)
1111 1111 1111 1111 1111 1100 0000 0000 # grub_swap_bytes32(grub_le_to_cpu32 (subnet_mask.ipv4))
0000 0000 0000 0000 0000 0011 1111 1111 # ~grub_swap_bytes32(grub_le_to_cpu32 (subnet_mask.ipv4))
The count of zero with __builtin_clz can be 22. (clz counts the number of one bits preceding the most significant zero bit)
---
grub-core/net/drivers/ieee1275/ofnet.c | 2 +-
1 file changed, 1 insertion(+), 2 deletions(-)
diff -ur grub-2.02~/grub-core/net/drivers/ieee1275/ofnet.c grub-2.02/grub-core/net/drivers/ieee1275/ofnet.c
--- grub-2.02~/grub-core/net/drivers/ieee1275/ofnet.c 2018-03-26 13:49:55.399558334 +0200
+++ grub-2.02/grub-core/net/drivers/ieee1275/ofnet.c 2018-03-26 13:51:03.092656921 +0200
@@ -232,7 +232,7 @@
}
grub_net_add_ipv4_local (inter,
- __builtin_ctz (~grub_le_to_cpu32 (subnet_mask.ipv4)));
+ __builtin_clz (~ (subnet_mask.ipv4)));
}
if (gateway_addr.ipv4 != 0)
1
0
Hello community,
here is the log from the commit of package python-pbr for openSUSE:Factory checked in at 2018-03-30 12:00:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pbr (Old)
and /work/SRC/openSUSE:Factory/.python-pbr.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pbr"
Fri Mar 30 12:00:53 2018 rev:33 rq:591779 version:4.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pbr/python-pbr-doc.changes 2017-07-04 11:56:35.464595048 +0200
+++ /work/SRC/openSUSE:Factory/.python-pbr.new/python-pbr-doc.changes 2018-03-30 12:00:56.543793351 +0200
@@ -1,0 +2,40 @@
+Wed Mar 28 04:42:26 UTC 2018 - tbechtold(a)suse.com
+
+- update to 4.0.0:
+ * builddoc: Treat '[pbr] autodoc\_tree\_excludes' as a multi-line opt
+ * update parse test to use reliable comparison
+ * Make docs on env vars a little clearer
+ * Updated from global requirements
+ * future-proof invocation of apidoc
+ * emit warning correctly
+ * deprecations: Deprecate support for '-py{N}' requirements
+ * doc: Minor rework of usage doc
+ * doc: Rework features doc
+ * Support v<semver> version
+ * Deprecate testr and nose integration
+ * tests: Increase coverage of requirements parsing
+ * trivial: Move packaging tests to test\_packaging
+ * Put test-requirements into an extra named 'test'
+ * Support Description-Content-Type metadata
+ * Avoid tox\_install.sh for constraints support
+ * Test on Python 3.6
+ * Support PEP 345 Project-URL metadata
+ * Remove setting of version/release from releasenotes
+ * Use 'build\_reno' setuptools extension if available
+ * Remove unnecessary 'if True'
+ * Discover Distribution through the class hierarchy
+ * Add reno for release notes management
+ * Remove support for command hooks
+ * Remove dead code
+ * Deprecate support for Sphinx < 1.6
+ * builddoc: Use '[sphinx\_build] builders' with Sphinx < 1.6
+ * Remove win32/nt checks for wrapper script gen
+ * Remove py26 support
+ * Update URLs in documents according to document migration
+ * gitignore: Ignore .venv
+ * switch from oslosphinx to openstackdocstheme
+ * Trivial: Fix docstring
+ * turn on warning-as-error flag for doc build
+ * rearrange existing documentation using the new standard layout
+
+-------------------------------------------------------------------
python-pbr.changes: same change
Old:
----
pbr-3.1.1.tar.gz
New:
----
pbr-4.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pbr-doc.spec ++++++
--- /var/tmp/diff_new_pack.dmjEum/_old 2018-03-30 12:00:58.507722333 +0200
+++ /var/tmp/diff_new_pack.dmjEum/_new 2018-03-30 12:00:58.511722188 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-pbr-doc
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 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
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-pbr-doc
-Version: 3.1.1
+Version: 4.0.0
Release: 0
Summary: Documentation for python-pbr
License: Apache-2.0
@@ -28,7 +28,7 @@
Source1: python-pbr-rpmlintrc
BuildRequires: fdupes
# Documentation requirements:
-BuildRequires: python3-Sphinx >= 1.1.2
+BuildRequires: python3-Sphinx >= 1.6.2
BuildRequires: python3-setuptools
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
++++++ python-pbr.spec ++++++
--- /var/tmp/diff_new_pack.dmjEum/_old 2018-03-30 12:00:58.547720886 +0200
+++ /var/tmp/diff_new_pack.dmjEum/_new 2018-03-30 12:00:58.559720452 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-pbr
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 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
@@ -22,7 +22,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-pbr
-Version: 3.1.1
+Version: 4.0.0
Release: 0
Summary: Python Build Reasonableness
License: Apache-2.0
++++++ pbr-3.1.1.tar.gz -> pbr-4.0.0.tar.gz ++++++
++++ 4141 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package osinfo-db for openSUSE:Factory checked in at 2018-03-30 12:00:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/osinfo-db (Old)
and /work/SRC/openSUSE:Factory/.osinfo-db.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "osinfo-db"
Fri Mar 30 12:00:46 2018 rev:10 rq:591757 version:20180311
Changes:
--------
--- /work/SRC/openSUSE:Factory/osinfo-db/osinfo-db.changes 2018-03-19 23:33:21.312225468 +0100
+++ /work/SRC/openSUSE:Factory/.osinfo-db.new/osinfo-db.changes 2018-03-30 12:00:47.756111128 +0200
@@ -1,0 +2,7 @@
+Fri Mar 23 13:51:30 MDT 2018 - carnold(a)suse.com
+
+- bsc#1086715 - SLE15 patch for osinfo-db has wrong information
+ in it
+ add-sle15-support.patch
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ add-sle15-support.patch ++++++
--- /var/tmp/diff_new_pack.PyGsFi/_old 2018-03-30 12:00:48.276092325 +0200
+++ /var/tmp/diff_new_pack.PyGsFi/_new 2018-03-30 12:00:48.280092180 +0200
@@ -19,7 +19,7 @@
+ <media arch="x86_64">
+ <iso>
+ <system-id>LINUX</system-id>
-+ <volume-id>SLE-15-Server-DVD-x86_64</volume-id>
++ <volume-id>SLE-15-Installer-DVD-x86_64</volume-id>
+ </iso>
+ <kernel>boot/x86_64/loader/linux</kernel>
+ <initrd>boot/x86_64/loader/initrd</initrd>
@@ -28,7 +28,7 @@
+ <media arch="aarch64">
+ <iso>
+ <system-id>LINUX</system-id>
-+ <volume-id>SLE-15-Server-DVD-aarch64</volume-id>
++ <volume-id>SLE-15-Installer-DVD-aarch64</volume-id>
+ </iso>
+ <kernel>boot/aarch64/linux</kernel>
+ <initrd>boot/aarch64/initrd</initrd>
@@ -37,7 +37,7 @@
+ <media arch="ppc64">
+ <iso>
+ <system-id>LINUX</system-id>
-+ <volume-id>SLE-15-Server-DVD-ppc64le</volume-id>
++ <volume-id>SLE-15-Installer-DVD-ppc64le</volume-id>
+ </iso>
+ <kernel>boot/ppc64le/linux</kernel>
+ <initrd>boot/ppc64le/initrd</initrd>
@@ -46,7 +46,7 @@
+ <media arch="s390x">
+ <iso>
+ <system-id>LINUX</system-id>
-+ <volume-id>SLE-15-Server-DVD-s390x</volume-id>
++ <volume-id>SLE-15-Installer-DVD-s390x</volume-id>
+ </iso>
+ <kernel>boot/s390x/linux</kernel>
+ <initrd>boot/s390x/initrd</initrd>
@@ -82,12 +82,12 @@
+ <upgrades id="http://suse.com/sled/12.3"/>
+ <derives-from id="http://suse.com/sled/12.3"/>
+
-+ <release-date>2017-00-00</release-date>
++ <release-date>2018-00-00</release-date>
+
+ <media arch="x86_64">
+ <iso>
+ <system-id>LINUX</system-id>
-+ <volume-id>SLE-15-Desktop-DVD-x86_64</volume-id>
++ <volume-id>SLE-15-Installer-DVD-x86_64</volume-id>
+ </iso>
+ <kernel>boot/x86_64/loader/linux</kernel>
+ <initrd>boot/x86_64/loader/initrd</initrd>
1
0
Hello community,
here is the log from the commit of package xen for openSUSE:Factory checked in at 2018-03-30 12:00:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xen (Old)
and /work/SRC/openSUSE:Factory/.xen.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xen"
Fri Mar 30 12:00:34 2018 rev:245 rq:591751 version:4.10.0_16
Changes:
--------
--- /work/SRC/openSUSE:Factory/xen/xen.changes 2018-03-20 21:50:48.542316318 +0100
+++ /work/SRC/openSUSE:Factory/.xen.new/xen.changes 2018-03-30 12:00:43.480265750 +0200
@@ -1,0 +2,12 @@
+Mon Mar 26 08:20:45 MDT 2018 - carnold(a)suse.com
+
+- Upstream patches from Jan (bsc#1027519) and fixes related to
+ Page Table Isolation (XPTI). See also bsc#1074562 XSA-254
+ 5a856a2b-x86-xpti-hide-almost-all-of-Xen-image-mappings.patch
+ 5a9eb7f1-x86-xpti-dont-map-stack-guard-pages.patch
+ 5a9eb85c-x86-slightly-reduce-XPTI-overhead.patch
+ 5a9eb890-x86-remove-CR-reads-from-exit-to-guest-path.patch
+ 5aa2b6b9-cpufreq-ondemand-CPU-offlining-race.patch
+ 5aaa9878-x86-vlapic-clear-TMR-bit-for-edge-triggered-intr.patch
+
+-------------------------------------------------------------------
New:
----
5a856a2b-x86-xpti-hide-almost-all-of-Xen-image-mappings.patch
5a9eb7f1-x86-xpti-dont-map-stack-guard-pages.patch
5a9eb85c-x86-slightly-reduce-XPTI-overhead.patch
5a9eb890-x86-remove-CR-reads-from-exit-to-guest-path.patch
5aa2b6b9-cpufreq-ondemand-CPU-offlining-race.patch
5aaa9878-x86-vlapic-clear-TMR-bit-for-edge-triggered-intr.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.XjVnAv/_old 2018-03-30 12:00:46.148169274 +0200
+++ /var/tmp/diff_new_pack.XjVnAv/_new 2018-03-30 12:00:46.152169129 +0200
@@ -126,7 +126,7 @@
BuildRequires: pesign-obs-integration
%endif
-Version: 4.10.0_14
+Version: 4.10.0_16
Release: 0
Summary: Xen Virtualization: Hypervisor (aka VMM aka Microkernel)
License: GPL-2.0
@@ -211,13 +211,19 @@
Patch48: 5a843807-x86-spec_ctrl-fix-bugs-in-SPEC_CTRL_ENTRY_FROM_INTR_IST.patch
Patch49: 5a856a2b-x86-emul-fix-64bit-decoding-of-segment-overrides.patch
Patch50: 5a856a2b-x86-use-32bit-xors-for-clearing-GPRs.patch
-Patch51: 5a8be788-x86-nmi-start-NMI-watchdog-on-CPU0-after-SMP.patch
-Patch52: 5a95373b-x86-PV-avoid-leaking-other-guests-MSR_TSC_AUX.patch
-Patch53: 5a95571f-memory-dont-implicitly-unpin-in-decrease-res.patch
-Patch54: 5a95576c-gnttab-ARM-dont-corrupt-shared-GFN-array.patch
-Patch55: 5a955800-gnttab-dont-free-status-pages-on-ver-change.patch
-Patch56: 5a955854-x86-disallow-HVM-creation-without-LAPIC-emul.patch
-Patch57: 5a956747-x86-HVM-dont-give-wrong-impression-of-WRMSR-success.patch
+Patch51: 5a856a2b-x86-xpti-hide-almost-all-of-Xen-image-mappings.patch
+Patch52: 5a8be788-x86-nmi-start-NMI-watchdog-on-CPU0-after-SMP.patch
+Patch53: 5a95373b-x86-PV-avoid-leaking-other-guests-MSR_TSC_AUX.patch
+Patch54: 5a95571f-memory-dont-implicitly-unpin-in-decrease-res.patch
+Patch55: 5a95576c-gnttab-ARM-dont-corrupt-shared-GFN-array.patch
+Patch56: 5a955800-gnttab-dont-free-status-pages-on-ver-change.patch
+Patch57: 5a955854-x86-disallow-HVM-creation-without-LAPIC-emul.patch
+Patch58: 5a956747-x86-HVM-dont-give-wrong-impression-of-WRMSR-success.patch
+Patch59: 5a9eb7f1-x86-xpti-dont-map-stack-guard-pages.patch
+Patch60: 5a9eb85c-x86-slightly-reduce-XPTI-overhead.patch
+Patch61: 5a9eb890-x86-remove-CR-reads-from-exit-to-guest-path.patch
+Patch62: 5aa2b6b9-cpufreq-ondemand-CPU-offlining-race.patch
+Patch63: 5aaa9878-x86-vlapic-clear-TMR-bit-for-edge-triggered-intr.patch
# Our platform specific patches
Patch400: xen-destdir.patch
Patch401: vif-bridge-no-iptables.patch
@@ -465,6 +471,12 @@
%patch55 -p1
%patch56 -p1
%patch57 -p1
+%patch58 -p1
+%patch59 -p1
+%patch60 -p1
+%patch61 -p1
+%patch62 -p1
+%patch63 -p1
# Our platform specific patches
%patch400 -p1
%patch401 -p1
++++++ 5a856a2b-x86-xpti-hide-almost-all-of-Xen-image-mappings.patch ++++++
# Commit 422588e88511d17984544c0f017a927de3315290
# Date 2018-02-15 11:08:27 +0000
# Author Andrew Cooper <andrew.cooper3(a)citrix.com>
# Committer Andrew Cooper <andrew.cooper3(a)citrix.com>
x86/xpti: Hide almost all of .text and all .data/.rodata/.bss mappings
The current XPTI implementation isolates the directmap (and therefore a lot of
guest data), but a large quantity of CPU0's state (including its stack)
remains visible.
Furthermore, an attacker able to read .text is in a vastly superior position
to normal when it comes to fingerprinting Xen for known vulnerabilities, or
scanning for ROP/Spectre gadgets.
Collect together the entrypoints in .text.entry (currently 3x4k frames, but
can almost certainly be slimmed down), and create a common mapping which is
inserted into each per-cpu shadow. The stubs are also inserted into this
mapping by pointing at the in-use L2. This allows stubs allocated later (SMP
boot, or CPU hotplug) to work without further changes to the common mappings.
Signed-off-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
Reviewed-by: Jan Beulich <jbeulich(a)suse.com>
# Commit d1d6fc97d66cf56847fc0bcc2ddc370707c22378
# Date 2018-03-06 16:46:27 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
x86/xpti: really hide almost all of Xen image
Commit 422588e885 ("x86/xpti: Hide almost all of .text and all
.data/.rodata/.bss mappings") carefully limited the Xen image cloning to
just entry code, but then overwrote the just allocated and populated L3
entry with the normal one again covering both Xen image and stubs.
Drop the respective code in favor of an explicit clone_mapping()
invocation. This in turn now requires setup_cpu_root_pgt() to run after
stub setup in all cases. Additionally, with (almost) no unintended
mappings left, the BSP's IDT now also needs to be page aligned.
The moving ahead of cleanup_cpu_root_pgt() is not strictly necessary
for functionality, but things are more logical this way, and we retain
cleanup being done in the inverse order of setup.
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Acked-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
# Commit 044fedfaa29b5d5774196e3fc7d955a48bfceac4
# Date 2018-03-09 15:42:24 +0000
# Author Andrew Cooper <andrew.cooper3(a)citrix.com>
# Committer Andrew Cooper <andrew.cooper3(a)citrix.com>
x86/traps: Put idt_table[] back into .bss
c/s d1d6fc97d "x86/xpti: really hide almost all of Xen image" accidentially
moved idt_table[] from .bss to .data by virtue of using the page_aligned
section. We also have .bss.page_aligned, so use that.
Signed-off-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
Reviewed-by: Jan Beulich <jbeulich(a)suse.com>
Reviewed-by: Wei Liu <wei.liu2(a)citrix.com>
--- a/docs/misc/xen-command-line.markdown
+++ b/docs/misc/xen-command-line.markdown
@@ -1897,9 +1897,6 @@ mode.
Override default selection of whether to isolate 64-bit PV guest page
tables.
-** WARNING: Not yet a complete isolation implementation, but better than
-nothing. **
-
### xsave
> `= <boolean>`
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -644,13 +644,24 @@ static int clone_mapping(const void *ptr
{
unsigned long linear = (unsigned long)ptr, pfn;
unsigned int flags;
- l3_pgentry_t *pl3e = l4e_to_l3e(idle_pg_table[root_table_offset(linear)]) +
- l3_table_offset(linear);
+ l3_pgentry_t *pl3e;
l2_pgentry_t *pl2e;
l1_pgentry_t *pl1e;
- if ( linear < DIRECTMAP_VIRT_START )
- return 0;
+ /*
+ * Sanity check 'linear'. We only allow cloning from the Xen virtual
+ * range, and in particular, only from the directmap and .text ranges.
+ */
+ if ( root_table_offset(linear) > ROOT_PAGETABLE_LAST_XEN_SLOT ||
+ root_table_offset(linear) < ROOT_PAGETABLE_FIRST_XEN_SLOT )
+ return -EINVAL;
+
+ if ( linear < XEN_VIRT_START ||
+ (linear >= XEN_VIRT_END && linear < DIRECTMAP_VIRT_START) )
+ return -EINVAL;
+
+ pl3e = l4e_to_l3e(idle_pg_table[root_table_offset(linear)]) +
+ l3_table_offset(linear);
flags = l3e_get_flags(*pl3e);
ASSERT(flags & _PAGE_PRESENT);
@@ -742,6 +753,10 @@ static __read_mostly int8_t opt_xpti = -
boolean_param("xpti", opt_xpti);
DEFINE_PER_CPU(root_pgentry_t *, root_pgt);
+static root_pgentry_t common_pgt;
+
+extern const char _stextentry[], _etextentry[];
+
static int setup_cpu_root_pgt(unsigned int cpu)
{
root_pgentry_t *rpt;
@@ -762,8 +777,23 @@ static int setup_cpu_root_pgt(unsigned i
idle_pg_table[root_table_offset(RO_MPT_VIRT_START)];
/* SH_LINEAR_PT inserted together with guest mappings. */
/* PERDOMAIN inserted during context switch. */
- rpt[root_table_offset(XEN_VIRT_START)] =
- idle_pg_table[root_table_offset(XEN_VIRT_START)];
+
+ /* One-time setup of common_pgt, which maps .text.entry and the stubs. */
+ if ( unlikely(!root_get_intpte(common_pgt)) )
+ {
+ const char *ptr;
+
+ for ( rc = 0, ptr = _stextentry;
+ !rc && ptr < _etextentry; ptr += PAGE_SIZE )
+ rc = clone_mapping(ptr, rpt);
+
+ if ( rc )
+ return rc;
+
+ common_pgt = rpt[root_table_offset(XEN_VIRT_START)];
+ }
+
+ rpt[root_table_offset(XEN_VIRT_START)] = common_pgt;
/* Install direct map page table entries for stack, IDT, and TSS. */
for ( off = rc = 0; !rc && off < STACK_SIZE; off += PAGE_SIZE )
@@ -773,6 +803,8 @@ static int setup_cpu_root_pgt(unsigned i
rc = clone_mapping(idt_tables[cpu], rpt);
if ( !rc )
rc = clone_mapping(&per_cpu(init_tss, cpu), rpt);
+ if ( !rc )
+ rc = clone_mapping((void *)per_cpu(stubs.addr, cpu), rpt);
return rc;
}
@@ -781,6 +813,7 @@ static void cleanup_cpu_root_pgt(unsigne
{
root_pgentry_t *rpt = per_cpu(root_pgt, cpu);
unsigned int r;
+ unsigned long stub_linear = per_cpu(stubs.addr, cpu);
if ( !rpt )
return;
@@ -825,6 +858,16 @@ static void cleanup_cpu_root_pgt(unsigne
}
free_xen_pagetable(rpt);
+
+ /* Also zap the stub mapping for this CPU. */
+ if ( stub_linear )
+ {
+ l3_pgentry_t *l3t = l4e_to_l3e(common_pgt);
+ l2_pgentry_t *l2t = l3e_to_l2e(l3t[l3_table_offset(stub_linear)]);
+ l1_pgentry_t *l1t = l2e_to_l1e(l2t[l2_table_offset(stub_linear)]);
+
+ l1t[l2_table_offset(stub_linear)] = l1e_empty();
+ }
}
static void cpu_smpboot_free(unsigned int cpu)
@@ -848,6 +891,8 @@ static void cpu_smpboot_free(unsigned in
if ( per_cpu(scratch_cpumask, cpu) != &scratch_cpu0mask )
free_cpumask_var(per_cpu(scratch_cpumask, cpu));
+ cleanup_cpu_root_pgt(cpu);
+
if ( per_cpu(stubs.addr, cpu) )
{
mfn_t mfn = _mfn(per_cpu(stubs.mfn, cpu));
@@ -865,8 +910,6 @@ static void cpu_smpboot_free(unsigned in
free_domheap_page(mfn_to_page(mfn));
}
- cleanup_cpu_root_pgt(cpu);
-
order = get_order_from_pages(NR_RESERVED_GDT_PAGES);
free_xenheap_pages(per_cpu(gdt_table, cpu), order);
@@ -922,9 +965,6 @@ static int cpu_smpboot_alloc(unsigned in
set_ist(&idt_tables[cpu][TRAP_nmi], IST_NONE);
set_ist(&idt_tables[cpu][TRAP_machine_check], IST_NONE);
- if ( setup_cpu_root_pgt(cpu) )
- goto oom;
-
for ( stub_page = 0, i = cpu & ~(STUBS_PER_PAGE - 1);
i < nr_cpu_ids && i <= (cpu | (STUBS_PER_PAGE - 1)); ++i )
if ( cpu_online(i) && cpu_to_node(i) == node )
@@ -938,6 +978,9 @@ static int cpu_smpboot_alloc(unsigned in
goto oom;
per_cpu(stubs.addr, cpu) = stub_page + STUB_BUF_CPU_OFFS(cpu);
+ if ( setup_cpu_root_pgt(cpu) )
+ goto oom;
+
if ( secondary_socket_cpumask == NULL &&
(secondary_socket_cpumask = xzalloc(cpumask_t)) == NULL )
goto oom;
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -102,7 +102,8 @@ DEFINE_PER_CPU_READ_MOSTLY(struct desc_s
DEFINE_PER_CPU_READ_MOSTLY(struct desc_struct *, compat_gdt_table);
/* Master table, used by CPU0. */
-idt_entry_t idt_table[IDT_ENTRIES];
+idt_entry_t __section(".bss.page_aligned") __aligned(PAGE_SIZE)
+ idt_table[IDT_ENTRIES];
/* Pointer to the IDT of every CPU. */
idt_entry_t *idt_tables[NR_CPUS] __read_mostly;
--- a/xen/arch/x86/x86_64/compat/entry.S
+++ b/xen/arch/x86/x86_64/compat/entry.S
@@ -13,6 +13,8 @@
#include <public/xen.h>
#include <irq_vectors.h>
+ .section .text.entry, "ax", @progbits
+
ENTRY(entry_int82)
ASM_CLAC
pushq $0
@@ -270,6 +272,9 @@ ENTRY(compat_int80_direct_trap)
call compat_create_bounce_frame
jmp compat_test_all_events
+ /* compat_create_bounce_frame & helpers don't need to be in .text.entry */
+ .text
+
/* CREATE A BASIC EXCEPTION FRAME ON GUEST OS (RING-1) STACK: */
/* {[ERRCODE,] EIP, CS, EFLAGS, [ESP, SS]} */
/* %rdx: trap_bounce, %rbx: struct vcpu */
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -14,6 +14,8 @@
#include <public/xen.h>
#include <irq_vectors.h>
+ .section .text.entry, "ax", @progbits
+
/* %rbx: struct vcpu */
ENTRY(switch_to_kernel)
leaq VCPU_trap_bounce(%rbx),%rdx
@@ -357,6 +359,9 @@ int80_slow_path:
subq $2,UREGS_rip(%rsp)
jmp handle_exception_saved
+ /* create_bounce_frame & helpers don't need to be in .text.entry */
+ .text
+
/* CREATE A BASIC EXCEPTION FRAME ON GUEST OS STACK: */
/* { RCX, R11, [ERRCODE,] RIP, CS, RFLAGS, RSP, SS } */
/* %rdx: trap_bounce, %rbx: struct vcpu */
@@ -487,6 +492,8 @@ ENTRY(dom_crash_sync_extable)
jmp asm_domain_crash_synchronous /* Does not return */
.popsection
+ .section .text.entry, "ax", @progbits
+
ENTRY(common_interrupt)
SAVE_ALL CLAC
@@ -846,8 +853,7 @@ GLOBAL(trap_nop)
-.section .rodata, "a", @progbits
-
+ .pushsection .rodata, "a", @progbits
ENTRY(exception_table)
.quad do_trap
.quad do_debug
@@ -873,9 +879,10 @@ ENTRY(exception_table)
.quad do_reserved_trap /* Architecturally reserved exceptions. */
.endr
.size exception_table, . - exception_table
+ .popsection
/* Table of automatically generated entry points. One per vector. */
- .section .init.rodata, "a", @progbits
+ .pushsection .init.rodata, "a", @progbits
GLOBAL(autogen_entrypoints)
/* pop into the .init.rodata section and record an entry point. */
.macro entrypoint ent
@@ -884,7 +891,7 @@ GLOBAL(autogen_entrypoints)
.popsection
.endm
- .text
+ .popsection
autogen_stubs: /* Automatically generated stubs. */
vec = 0
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -60,6 +60,13 @@ SECTIONS
_stext = .; /* Text and read-only data */
*(.text)
*(.text.__x86_indirect_thunk_*)
+
+ . = ALIGN(PAGE_SIZE);
+ _stextentry = .;
+ *(.text.entry)
+ . = ALIGN(PAGE_SIZE);
+ _etextentry = .;
+
*(.text.cold)
*(.text.unlikely)
*(.fixup)
++++++ 5a8be788-x86-nmi-start-NMI-watchdog-on-CPU0-after-SMP.patch ++++++
--- /var/tmp/diff_new_pack.XjVnAv/_old 2018-03-30 12:00:46.384160741 +0200
+++ /var/tmp/diff_new_pack.XjVnAv/_new 2018-03-30 12:00:46.384160741 +0200
@@ -28,10 +28,8 @@
Signed-off-by: Igor Druzhinin <igor.druzhinin(a)citrix.com>
Reviewed-by: Jan Beulich <jbeulich(a)suse.com>
-Index: xen-4.10.0-testing/xen/arch/x86/apic.c
-===================================================================
---- xen-4.10.0-testing.orig/xen/arch/x86/apic.c
-+++ xen-4.10.0-testing/xen/arch/x86/apic.c
+--- a/xen/arch/x86/apic.c
++++ b/xen/arch/x86/apic.c
@@ -682,7 +682,7 @@ void setup_local_APIC(void)
printk("Leaving ESR disabled.\n");
}
@@ -41,11 +39,9 @@
setup_apic_nmi_watchdog();
apic_pm_activate();
}
-Index: xen-4.10.0-testing/xen/arch/x86/smpboot.c
-===================================================================
---- xen-4.10.0-testing.orig/xen/arch/x86/smpboot.c
-+++ xen-4.10.0-testing/xen/arch/x86/smpboot.c
-@@ -1241,7 +1241,10 @@ int __cpu_up(unsigned int cpu)
+--- a/xen/arch/x86/smpboot.c
++++ b/xen/arch/x86/smpboot.c
+@@ -1284,7 +1284,10 @@ int __cpu_up(unsigned int cpu)
void __init smp_cpus_done(void)
{
if ( nmi_watchdog == NMI_LOCAL_APIC )
@@ -56,11 +52,9 @@
setup_ioapic_dest();
-Index: xen-4.10.0-testing/xen/arch/x86/traps.c
-===================================================================
---- xen-4.10.0-testing.orig/xen/arch/x86/traps.c
-+++ xen-4.10.0-testing/xen/arch/x86/traps.c
-@@ -1669,7 +1669,7 @@ static nmi_callback_t *nmi_callback = du
+--- a/xen/arch/x86/traps.c
++++ b/xen/arch/x86/traps.c
+@@ -1670,7 +1670,7 @@ static nmi_callback_t *nmi_callback = du
void do_nmi(const struct cpu_user_regs *regs)
{
unsigned int cpu = smp_processor_id();
@@ -69,7 +63,7 @@
bool handle_unknown = false;
++nmi_count(cpu);
-@@ -1677,6 +1677,16 @@ void do_nmi(const struct cpu_user_regs *
+@@ -1678,6 +1678,16 @@ void do_nmi(const struct cpu_user_regs *
if ( nmi_callback(regs, cpu) )
return;
@@ -86,7 +80,7 @@
if ( (nmi_watchdog == NMI_NONE) ||
(!nmi_watchdog_tick(regs) && watchdog_force) )
handle_unknown = true;
-@@ -1684,7 +1694,6 @@ void do_nmi(const struct cpu_user_regs *
+@@ -1685,7 +1695,6 @@ void do_nmi(const struct cpu_user_regs *
/* Only the BSP gets external NMIs from the system. */
if ( cpu == 0 )
{
++++++ 5a956747-x86-HVM-dont-give-wrong-impression-of-WRMSR-success.patch ++++++
--- /var/tmp/diff_new_pack.XjVnAv/_old 2018-03-30 12:00:46.420159439 +0200
+++ /var/tmp/diff_new_pack.XjVnAv/_new 2018-03-30 12:00:46.424159294 +0200
@@ -19,6 +19,20 @@
Reviewed-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky(a)oracle.com>
+# Commit 59c0983e10d70ea2368085271b75fb007811fe52
+# Date 2018-03-15 12:44:24 +0100
+# Author Jan Beulich <jbeulich(a)suse.com>
+# Committer Jan Beulich <jbeulich(a)suse.com>
+x86: ignore guest microcode loading attempts
+
+The respective MSRs are write-only, and hence attempts by guests to
+write to these are - as of 1f1d183d49 ("x86/HVM: don't give the wrong
+impression of WRMSR succeeding") no longer ignored. Restore original
+behavior for the two affected MSRs.
+
+Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
+Reviewed-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
+
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -2106,6 +2106,13 @@ static int svm_msr_write_intercept(unsig
@@ -51,3 +65,43 @@
case 1:
break;
default:
+--- a/xen/arch/x86/msr.c
++++ b/xen/arch/x86/msr.c
+@@ -128,6 +128,8 @@ int guest_rdmsr(const struct vcpu *v, ui
+
+ switch ( msr )
+ {
++ case MSR_AMD_PATCHLOADER:
++ case MSR_IA32_UCODE_WRITE:
+ case MSR_PRED_CMD:
+ /* Write-only */
+ goto gp_fault;
+@@ -181,6 +183,28 @@ int guest_wrmsr(struct vcpu *v, uint32_t
+ /* Read-only */
+ goto gp_fault;
+
++ case MSR_AMD_PATCHLOADER:
++ /*
++ * See note on MSR_IA32_UCODE_WRITE below, which may or may not apply
++ * to AMD CPUs as well (at least the architectural/CPUID part does).
++ */
++ if ( is_pv_domain(d) ||
++ d->arch.cpuid->x86_vendor != X86_VENDOR_AMD )
++ goto gp_fault;
++ break;
++
++ case MSR_IA32_UCODE_WRITE:
++ /*
++ * Some versions of Windows at least on certain hardware try to load
++ * microcode before setting up an IDT. Therefore we must not inject #GP
++ * for such attempts. Also the MSR is architectural and not qualified
++ * by any CPUID bit.
++ */
++ if ( is_pv_domain(d) ||
++ d->arch.cpuid->x86_vendor != X86_VENDOR_INTEL )
++ goto gp_fault;
++ break;
++
+ case MSR_SPEC_CTRL:
+ if ( !cp->feat.ibrsb )
+ goto gp_fault; /* MSR available? */
++++++ 5a9eb7f1-x86-xpti-dont-map-stack-guard-pages.patch ++++++
# Commit d303784b68237ff3050daa184f560179dda21b8c
# Date 2018-03-06 16:46:57 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
x86/xpti: don't map stack guard pages
Other than for the main mappings, don't even do this in release builds,
as there are no huge page shattering concerns here.
Note that since we don't run on the restructed page tables while HVM
guests execute, the non-present mappings won't trigger the triple fault
issue AMD SVM is susceptible to with our current placement of STGI vs
TR loading.
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Acked-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -5538,6 +5538,14 @@ void memguard_unguard_stack(void *p)
memguard_unguard_range(p, PAGE_SIZE);
}
+bool memguard_is_stack_guard_page(unsigned long addr)
+{
+ addr &= STACK_SIZE - 1;
+
+ return addr >= STACK_SIZE - PRIMARY_STACK_SIZE - PAGE_SIZE &&
+ addr < STACK_SIZE - PRIMARY_STACK_SIZE;
+}
+
void arch_dump_shared_mem_info(void)
{
printk("Shared frames %u -- Saved frames %u\n",
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -797,7 +797,8 @@ static int setup_cpu_root_pgt(unsigned i
/* Install direct map page table entries for stack, IDT, and TSS. */
for ( off = rc = 0; !rc && off < STACK_SIZE; off += PAGE_SIZE )
- rc = clone_mapping(__va(__pa(stack_base[cpu])) + off, rpt);
+ if ( !memguard_is_stack_guard_page(off) )
+ rc = clone_mapping(__va(__pa(stack_base[cpu])) + off, rpt);
if ( !rc )
rc = clone_mapping(idt_tables[cpu], rpt);
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -519,6 +519,7 @@ void memguard_unguard_range(void *p, uns
void memguard_guard_stack(void *p);
void memguard_unguard_stack(void *p);
+bool __attribute_const__ memguard_is_stack_guard_page(unsigned long addr);
struct mmio_ro_emulate_ctxt {
unsigned long cr2;
++++++ 5a9eb85c-x86-slightly-reduce-XPTI-overhead.patch ++++++
# Commit 9d1d31ad9498e6ceb285d5774e34fed5f648c273
# Date 2018-03-06 16:48:44 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
x86: slightly reduce Meltdown band-aid overhead
I'm not sure why I didn't do this right away: By avoiding the use of
global PTEs in the cloned directmap, there's no need to fiddle with
CR4.PGE on any of the entry paths. Only the exit paths need to flush
global mappings.
The reduced flushing, however, requires that we now have interrupts off
on all entry paths until after the page table switch, so that flush IPIs
can't be serviced while on the restricted pagetables, leaving a window
where a potentially stale guest global mapping can be brought into the
TLB. Along those lines the "sync" IPI after L4 entry updates now needs
to become a real (and global) flush IPI, so that inside Xen we'll also
pick up such changes.
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Tested-by: Juergen Gross <jgross(a)suse.com>
Reviewed-by: Juergen Gross <jgross(a)suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
# Commit c4dd58f0cf23cdf119bbccedfb8c24435fc6f3ab
# Date 2018-03-16 17:27:36 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
x86: correct EFLAGS.IF in SYSENTER frame
Commit 9d1d31ad94 ("x86: slightly reduce Meltdown band-aid overhead")
moved the STI past the PUSHF. While this isn't an active problem (as we
force EFLAGS.IF to 1 before exiting to guest context), let's not risk
internal confusion by finding a PV guest frame with interrupts
apparently off.
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Acked-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -3782,18 +3782,14 @@ long do_mmu_update(
{
/*
* Force other vCPU-s of the affected guest to pick up L4 entry
- * changes (if any). Issue a flush IPI with empty operation mask to
- * facilitate this (including ourselves waiting for the IPI to
- * actually have arrived). Utilize the fact that FLUSH_VA_VALID is
- * meaningless without FLUSH_CACHE, but will allow to pass the no-op
- * check in flush_area_mask().
+ * changes (if any).
*/
unsigned int cpu = smp_processor_id();
cpumask_t *mask = per_cpu(scratch_cpumask, cpu);
cpumask_andnot(mask, pt_owner->domain_dirty_cpumask, cpumask_of(cpu));
if ( !cpumask_empty(mask) )
- flush_area_mask(mask, ZERO_BLOCK_PTR, FLUSH_VA_VALID);
+ flush_mask(mask, FLUSH_TLB_GLOBAL);
}
perfc_add(num_page_updates, i);
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -737,6 +737,7 @@ static int clone_mapping(const void *ptr
}
pl1e += l1_table_offset(linear);
+ flags &= ~_PAGE_GLOBAL;
if ( l1e_get_flags(*pl1e) & _PAGE_PRESENT )
{
@@ -1046,8 +1047,17 @@ void __init smp_prepare_cpus(unsigned in
if ( rc )
panic("Error %d setting up PV root page table\n", rc);
if ( per_cpu(root_pgt, 0) )
+ {
get_cpu_info()->pv_cr3 = __pa(per_cpu(root_pgt, 0));
+ /*
+ * All entry points which may need to switch page tables have to start
+ * with interrupts off. Re-write what pv_trap_init() has put there.
+ */
+ _set_gate(idt_table + LEGACY_SYSCALL_VECTOR, SYS_DESC_irq_gate, 3,
+ &int80_direct_trap);
+ }
+
set_nr_sockets();
socket_cpumask = xzalloc_array(cpumask_t *, nr_sockets);
--- a/xen/arch/x86/x86_64/compat/entry.S
+++ b/xen/arch/x86/x86_64/compat/entry.S
@@ -202,7 +202,7 @@ ENTRY(compat_post_handle_exception)
/* See lstar_enter for entry register state. */
ENTRY(cstar_enter)
- sti
+ /* sti could live here when we don't switch page tables below. */
CR4_PV32_RESTORE
movq 8(%rsp),%rax /* Restore %rax. */
movq $FLAT_KERNEL_SS,8(%rsp)
@@ -222,11 +222,12 @@ ENTRY(cstar_enter)
jz .Lcstar_cr3_okay
mov %rcx, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
neg %rcx
- write_cr3 rcx, rdi, rsi
+ mov %rcx, %cr3
movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
.Lcstar_cr3_okay:
+ sti
- GET_CURRENT(bx)
+ __GET_CURRENT(bx)
movq VCPU_domain(%rbx),%rcx
cmpb $0,DOMAIN_is_32bit_pv(%rcx)
je switch_to_kernel
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -150,7 +150,7 @@ UNLIKELY_END(exit_cr3)
* %ss must be saved into the space left by the trampoline.
*/
ENTRY(lstar_enter)
- sti
+ /* sti could live here when we don't switch page tables below. */
movq 8(%rsp),%rax /* Restore %rax. */
movq $FLAT_KERNEL_SS,8(%rsp)
pushq %r11
@@ -169,9 +169,10 @@ ENTRY(lstar_enter)
jz .Llstar_cr3_okay
mov %rcx, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
neg %rcx
- write_cr3 rcx, rdi, rsi
+ mov %rcx, %cr3
movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
.Llstar_cr3_okay:
+ sti
__GET_CURRENT(bx)
testb $TF_kernel_mode,VCPU_thread_flags(%rbx)
@@ -254,7 +255,7 @@ process_trap:
jmp test_all_events
ENTRY(sysenter_entry)
- sti
+ /* sti could live here when we don't switch page tables below. */
pushq $FLAT_USER_SS
pushq $0
pushfq
@@ -270,14 +271,17 @@ GLOBAL(sysenter_eflags_saved)
/* WARNING! `ret`, `call *`, `jmp *` not safe before this point. */
GET_STACK_END(bx)
+ /* PUSHF above has saved EFLAGS.IF clear (the caller had it set). */
+ orl $X86_EFLAGS_IF, UREGS_eflags(%rsp)
mov STACK_CPUINFO_FIELD(xen_cr3)(%rbx), %rcx
neg %rcx
jz .Lsyse_cr3_okay
mov %rcx, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
neg %rcx
- write_cr3 rcx, rdi, rsi
+ mov %rcx, %cr3
movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
.Lsyse_cr3_okay:
+ sti
__GET_CURRENT(bx)
cmpb $0,VCPU_sysenter_disables_events(%rbx)
@@ -324,9 +328,10 @@ ENTRY(int80_direct_trap)
jz .Lint80_cr3_okay
mov %rcx, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
neg %rcx
- write_cr3 rcx, rdi, rsi
+ mov %rcx, %cr3
movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%rbx)
.Lint80_cr3_okay:
+ sti
cmpb $0,untrusted_msi(%rip)
UNLIKELY_START(ne, msi_check)
@@ -510,7 +515,7 @@ ENTRY(common_interrupt)
mov %rcx, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
neg %rcx
.Lintr_cr3_load:
- write_cr3 rcx, rdi, rsi
+ mov %rcx, %cr3
xor %ecx, %ecx
mov %rcx, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
testb $3, UREGS_cs(%rsp)
@@ -552,7 +557,7 @@ GLOBAL(handle_exception)
mov %rcx, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
neg %rcx
.Lxcpt_cr3_load:
- write_cr3 rcx, rdi, rsi
+ mov %rcx, %cr3
xor %ecx, %ecx
mov %rcx, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
testb $3, UREGS_cs(%rsp)
@@ -748,7 +753,7 @@ ENTRY(double_fault)
jns .Ldblf_cr3_load
neg %rbx
.Ldblf_cr3_load:
- write_cr3 rbx, rdi, rsi
+ mov %rbx, %cr3
.Ldblf_cr3_okay:
movq %rsp,%rdi
@@ -783,7 +788,7 @@ handle_ist_exception:
mov %rcx, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
neg %rcx
.List_cr3_load:
- write_cr3 rcx, rdi, rsi
+ mov %rcx, %cr3
movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
.List_cr3_okay:
++++++ 5a9eb890-x86-remove-CR-reads-from-exit-to-guest-path.patch ++++++
# Commit 31bf55cb5fe3796cf6a4efbcfc0a9418bb1c783f
# Date 2018-03-06 16:49:36 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
x86: remove CR reads from exit-to-guest path
CR3 is - during normal operation - only ever loaded from v->arch.cr3,
so there's no need to read the actual control register. For CR4 we can
generally use the cached value on all synchronous entry end exit paths.
Drop the write_cr3 macro, as the two use sites are probably easier to
follow without its use.
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Tested-by: Juergen Gross <jgross(a)suse.com>
Reviewed-by: Juergen Gross <jgross(a)suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3(a)citrix.com>
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -88,6 +88,7 @@ void __dummy__(void)
OFFSET(VCPU_kernel_ss, struct vcpu, arch.pv_vcpu.kernel_ss);
OFFSET(VCPU_iopl, struct vcpu, arch.pv_vcpu.iopl);
OFFSET(VCPU_guest_context_flags, struct vcpu, arch.vgc_flags);
+ OFFSET(VCPU_cr3, struct vcpu, arch.cr3);
OFFSET(VCPU_arch_msr, struct vcpu, arch.msr);
OFFSET(VCPU_nmi_pending, struct vcpu, nmi_pending);
OFFSET(VCPU_mce_pending, struct vcpu, mce_pending);
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -45,7 +45,7 @@ restore_all_guest:
mov VCPUMSR_spec_ctrl_raw(%rdx), %r15d
/* Copy guest mappings and switch to per-CPU root page table. */
- mov %cr3, %r9
+ mov VCPU_cr3(%rbx), %r9
GET_STACK_END(dx)
mov STACK_CPUINFO_FIELD(pv_cr3)(%rdx), %rdi
movabs $PADDR_MASK & PAGE_MASK, %rsi
@@ -67,8 +67,13 @@ restore_all_guest:
sub $(ROOT_PAGETABLE_FIRST_XEN_SLOT - \
ROOT_PAGETABLE_LAST_XEN_SLOT - 1) * 8, %rdi
rep movsq
+ mov STACK_CPUINFO_FIELD(cr4)(%rdx), %rdi
mov %r9, STACK_CPUINFO_FIELD(xen_cr3)(%rdx)
- write_cr3 rax, rdi, rsi
+ mov %rdi, %rsi
+ and $~X86_CR4_PGE, %rdi
+ mov %rdi, %cr4
+ mov %rax, %cr3
+ mov %rsi, %cr4
.Lrag_keep_cr3:
/* Restore stashed SPEC_CTRL value. */
@@ -124,7 +129,12 @@ restore_all_xen:
* so "g" will have to do.
*/
UNLIKELY_START(g, exit_cr3)
- write_cr3 rax, rdi, rsi
+ mov %cr4, %rdi
+ mov %rdi, %rsi
+ and $~X86_CR4_PGE, %rdi
+ mov %rdi, %cr4
+ mov %rax, %cr3
+ mov %rsi, %cr4
UNLIKELY_END(exit_cr3)
/* WARNING! `ret`, `call *`, `jmp *` not safe beyond this point. */
--- a/xen/include/asm-x86/asm_defns.h
+++ b/xen/include/asm-x86/asm_defns.h
@@ -207,15 +207,6 @@ void ret_from_intr(void);
#define ASM_STAC ASM_AC(STAC)
#define ASM_CLAC ASM_AC(CLAC)
-.macro write_cr3 val:req, tmp1:req, tmp2:req
- mov %cr4, %\tmp1
- mov %\tmp1, %\tmp2
- and $~X86_CR4_PGE, %\tmp1
- mov %\tmp1, %cr4
- mov %\val, %cr3
- mov %\tmp2, %cr4
-.endm
-
#define CR4_PV32_RESTORE \
667: ASM_NOP5; \
.pushsection .altinstr_replacement, "ax"; \
++++++ 5aa2b6b9-cpufreq-ondemand-CPU-offlining-race.patch ++++++
# Commit 185413355fe331cbc926d48568838227234c9a20
# Date 2018-03-09 17:30:49 +0100
# Author Jan Beulich <jbeulich(a)suse.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
cpufreq/ondemand: fix race while offlining CPU
Offlining a CPU involves stopping the cpufreq governor. The on-demand
governor will kill the timer before letting generic code proceed, but
since that generally isn't happening on the subject CPU,
cpufreq_dbs_timer_resume() may run in parallel. If that managed to
invoke the timer handler, that handler needs to run to completion before
dbs_timer_exit() may safely exit.
Make the "stoppable" field a tristate, changing it from +1 to -1 around
the timer function invocation, and make dbs_timer_exit() wait for it to
become non-negative (still writing zero if it's +1).
Also adjust coding style in cpufreq_dbs_timer_resume().
Reported-by: Martin Cerveny <martin(a)c-home.cz>
Signed-off-by: Jan Beulich <jbeulich(a)suse.com>
Tested-by: Martin Cerveny <martin(a)c-home.cz>
Reviewed-by: Wei Liu <wei.liu2(a)citrix.com>
--- a/xen/drivers/cpufreq/cpufreq_ondemand.c
+++ b/xen/drivers/cpufreq/cpufreq_ondemand.c
@@ -204,7 +204,14 @@ static void dbs_timer_init(struct cpu_db
static void dbs_timer_exit(struct cpu_dbs_info_s *dbs_info)
{
dbs_info->enable = 0;
- dbs_info->stoppable = 0;
+
+ /*
+ * The timer function may be running (from cpufreq_dbs_timer_resume) -
+ * wait for it to complete.
+ */
+ while ( cmpxchg(&dbs_info->stoppable, 1, 0) < 0 )
+ cpu_relax();
+
kill_timer(&per_cpu(dbs_timer, dbs_info->cpu));
}
@@ -369,23 +376,22 @@ void cpufreq_dbs_timer_suspend(void)
void cpufreq_dbs_timer_resume(void)
{
- int cpu;
- struct timer* t;
- s_time_t now;
-
- cpu = smp_processor_id();
+ unsigned int cpu = smp_processor_id();
+ int8_t *stoppable = &per_cpu(cpu_dbs_info, cpu).stoppable;
- if ( per_cpu(cpu_dbs_info,cpu).stoppable )
+ if ( *stoppable )
{
- now = NOW();
- t = &per_cpu(dbs_timer, cpu);
- if (t->expires <= now)
+ s_time_t now = NOW();
+ struct timer *t = &per_cpu(dbs_timer, cpu);
+
+ if ( t->expires <= now )
{
+ if ( !cmpxchg(stoppable, 1, -1) )
+ return;
t->function(t->data);
+ (void)cmpxchg(stoppable, -1, 1);
}
else
- {
- set_timer(t, align_timer(now , dbs_tuners_ins.sampling_rate));
- }
+ set_timer(t, align_timer(now, dbs_tuners_ins.sampling_rate));
}
}
--- a/xen/include/acpi/cpufreq/cpufreq.h
+++ b/xen/include/acpi/cpufreq/cpufreq.h
@@ -225,8 +225,8 @@ struct cpu_dbs_info_s {
struct cpufreq_frequency_table *freq_table;
int cpu;
unsigned int enable:1;
- unsigned int stoppable:1;
unsigned int turbo_enabled:1;
+ int8_t stoppable;
};
int cpufreq_governor_dbs(struct cpufreq_policy *policy, unsigned int event);
++++++ 5aaa9878-x86-vlapic-clear-TMR-bit-for-edge-triggered-intr.patch ++++++
# Commit 12a50030a81a14a3c7be672ddfde707b961479ec
# Date 2018-03-15 16:59:52 +0100
# Author Liran Alon <liran.alon(a)oracle.com>
# Committer Jan Beulich <jbeulich(a)suse.com>
x86/vlapic: clear TMR bit upon acceptance of edge-triggered interrupt to IRR
According to Intel SDM section "Interrupt Acceptance for Fixed Interrupts":
"The trigger mode register (TMR) indicates the trigger mode of the
interrupt (see Figure 10-20). Upon acceptance of an interrupt
into the IRR, the corresponding TMR bit is cleared for
edge-triggered interrupts and set for level-triggered interrupts.
If a TMR bit is set when an EOI cycle for its corresponding
interrupt vector is generated, an EOI message is sent to
all I/O APICs."
Before this patch TMR-bit was cleared on LAPIC EOI which is not what
real hardware does. This was also confirmed in KVM upstream commit
a0c9a822bf37 ("KVM: dont clear TMR on EOI").
Behavior after this patch is aligned with both Intel SDM and KVM
implementation.
Signed-off-by: Liran Alon <liran.alon(a)oracle.com>
Signed-off-by: Boris Ostrovsky <boris.ostrovsky(a)oracle.com>
Reviewed-by: Jan Beulich <jbeulich(a)suse.com>
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -161,6 +161,8 @@ void vlapic_set_irq(struct vlapic *vlapi
if ( trig )
vlapic_set_vector(vec, &vlapic->regs->data[APIC_TMR]);
+ else
+ vlapic_clear_vector(vec, &vlapic->regs->data[APIC_TMR]);
if ( hvm_funcs.update_eoi_exit_bitmap )
hvm_funcs.update_eoi_exit_bitmap(target, vec, trig);
@@ -434,7 +436,7 @@ void vlapic_handle_EOI(struct vlapic *vl
{
struct domain *d = vlapic_domain(vlapic);
- if ( vlapic_test_and_clear_vector(vector, &vlapic->regs->data[APIC_TMR]) )
+ if ( vlapic_test_vector(vector, &vlapic->regs->data[APIC_TMR]) )
vioapic_update_EOI(d, vector);
hvm_dpci_msi_eoi(d, vector);
1
0
Hello community,
here is the log from the commit of package gdm-branding-openSUSE for openSUSE:Factory checked in at 2018-03-30 12:00:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gdm-branding-openSUSE (Old)
and /work/SRC/openSUSE:Factory/.gdm-branding-openSUSE.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gdm-branding-openSUSE"
Fri Mar 30 12:00:28 2018 rev:30 rq:591731 version:42.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/gdm-branding-openSUSE/gdm-branding-openSUSE.changes 2018-03-08 10:43:15.376103591 +0100
+++ /work/SRC/openSUSE:Factory/.gdm-branding-openSUSE.new/gdm-branding-openSUSE.changes 2018-03-30 12:00:31.812687670 +0200
@@ -1,0 +2,7 @@
+Tue Mar 27 09:37:38 UTC 2018 - yfjiang(a)suse.com
+
+- Append InitialSetupEnable=False in custom.conf on Leap, disabling
+ the gnome-initial-setup gdm mode, making it consistent with the
+ behavior of SLE (bsc#1067976 boo#1086056).
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gdm-branding-openSUSE.spec ++++++
--- /var/tmp/diff_new_pack.EQ8Fuo/_old 2018-03-30 12:00:32.780652667 +0200
+++ /var/tmp/diff_new_pack.EQ8Fuo/_new 2018-03-30 12:00:32.784652522 +0200
@@ -23,7 +23,7 @@
Summary: The GNOME Display Manager -- openSUSE default configuration
License: GPL-2.0-or-later
Group: System/GUI/GNOME
-URL: http://projects.gnome.org/gdm/
+Url: http://projects.gnome.org/gdm/
Source0: distributor.svg
Source99: gdm-branding-openSUSE-rpmlintrc
# For directory ownership:
@@ -32,6 +32,9 @@
# WARNING: As this package conflicts with gdm-branding-openSUSE, you cannot
# reuse build root. You have to build in a clean build root every time!
BuildRequires: gdm-branding-upstream
+%if 0%{?sle_version} >= 120300
+BuildRequires: sed
+%endif
Requires: gdm
Supplements: packageand(gdm:branding-openSUSE)
Conflicts: gdm-branding
@@ -53,6 +56,9 @@
mkdir -p %{buildroot}%{_datadir}/gdm/greeter/images/
install -d %{buildroot}%{_sysconfdir}/gdm
install -m0644 custom.conf %{buildroot}%{_sysconfdir}/gdm/custom.conf
+%if 0%{?sle_version} >= 120300
+sed -i -e "s/\[daemon\]/\[daemon\]\nInitialSetupEnable=False/g" %{buildroot}%{_sysconfdir}/gdm/custom.conf
+%endif
cp %{SOURCE0} %{buildroot}%{_datadir}/gdm/greeter/images/
%files
1
0
Hello community,
here is the log from the commit of package libnfnetlink for openSUSE:Factory checked in at 2018-03-30 12:00:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libnfnetlink (Old)
and /work/SRC/openSUSE:Factory/.libnfnetlink.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libnfnetlink"
Fri Mar 30 12:00:19 2018 rev:20 rq:591708 version:1.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/libnfnetlink/libnfnetlink.changes 2014-12-10 23:45:49.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libnfnetlink.new/libnfnetlink.changes 2018-03-30 12:00:27.204854298 +0200
@@ -1,0 +2,5 @@
+Tue Mar 27 13:12:25 CEST 2018 - kukuk(a)suse.de
+
+- Use %license instead of %doc [bsc#1082318]
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libnfnetlink.spec ++++++
--- /var/tmp/diff_new_pack.MTk3Zw/_old 2018-03-30 12:00:28.064823200 +0200
+++ /var/tmp/diff_new_pack.MTk3Zw/_new 2018-03-30 12:00:28.068823056 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libnfnetlink
#
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 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
@@ -21,7 +21,7 @@
Version: 1.0.1
Release: 0
Summary: Low-level library for Netfilter-related kernel/userspace communication
-License: GPL-2.0
+License: GPL-2.0-only
Group: Productivity/Networking/Security
Url: http://netfilter.org/projects/libnfnetlink/
@@ -99,7 +99,8 @@
%files -n %libsoname
%defattr(-,root,root)
-%doc COPYING README
+%license COPYING
+%doc README
%_libdir/libnfnetlink.so.0*
%files devel
1
0
Hello community,
here is the log from the commit of package openssl for openSUSE:Factory checked in at 2018-03-30 12:00:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openssl (Old)
and /work/SRC/openSUSE:Factory/.openssl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openssl"
Fri Mar 30 12:00:06 2018 rev:144 rq:591688 version:1.1.0h
Changes:
--------
--- /work/SRC/openSUSE:Factory/openssl/openssl.changes 2018-03-01 12:04:43.732730080 +0100
+++ /work/SRC/openSUSE:Factory/.openssl.new/openssl.changes 2018-03-30 12:00:24.192963215 +0200
@@ -1,0 +2,5 @@
+Tue Mar 27 14:29:04 UTC 2018 - vcizek(a)suse.com
+
+- Update to 1.1.0h release
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openssl.spec ++++++
--- /var/tmp/diff_new_pack.I3dQcu/_old 2018-03-30 12:00:26.176891471 +0200
+++ /var/tmp/diff_new_pack.I3dQcu/_new 2018-03-30 12:00:26.180891327 +0200
@@ -18,7 +18,7 @@
%define _sonum 1_1
Name: openssl
-Version: 1.1.0g
+Version: 1.1.0h
Release: 0
Summary: Secure Sockets and Transport Layer Security
# Yes there is no license but to not confuse people keep it aligned to the pkg
1
0
Hello community,
here is the log from the commit of package MozillaFirefox for openSUSE:Factory checked in at 2018-03-30 11:59:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/MozillaFirefox (Old)
and /work/SRC/openSUSE:Factory/.MozillaFirefox.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "MozillaFirefox"
Fri Mar 30 11:59:39 2018 rev:268 rq:591686 version:59.0.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/MozillaFirefox/MozillaFirefox.changes 2018-03-20 21:52:28.314723536 +0100
+++ /work/SRC/openSUSE:Factory/.MozillaFirefox.new/MozillaFirefox.changes 2018-03-30 11:59:54.026054116 +0200
@@ -1,0 +2,35 @@
+Tue Mar 27 14:07:11 UTC 2018 - schwab(a)suse.de
+
+- Reduce constraints on aarch64
+
+-------------------------------------------------------------------
+Tue Mar 27 06:40:25 UTC 2018 - wr(a)rosenauer.org
+
+- update to Firefox 59.0.2
+ * Invalid page rendering with hardware acceleration enabled (bmo#1435472)
+ * Browser keyboard shortcuts (eg copy Ctrl+C) don't work on sites
+ that use those keys with resistFingerprinting enabled (bmo#1433592)
+ * High CPU / memory churn caused by third-party software on some
+ computers (bmo#1446280)
+ * Users who have configured an "automatic proxy configuration URL"
+ and want to reload their proxy settings from the URL will find
+ the Reload button disabled in the Connection Settings dialog when
+ they select Preferences/Options>Network Proxy>Settings... (bmo#1445991)
+ * URL Fragment Identifiers Break Service Worker Responses (bmo#1443850)
+ * User's trying to cancel a print around the time it completes will
+ continue to get intermittent crashes (bmo#1441598)
+ MFSA 2018-10 (bsc#1087059)
+ * CVE-2018-5148 (bmo#1440717)
+ Use-after-free in compositor
+- removed obsolete patch mozilla-bmo1446062.patch
+
+-------------------------------------------------------------------
+Wed Mar 21 17:14:24 UTC 2018 - cgrobertson(a)suse.com
+
+- Added patches:
+ * mozilla-i586-DecoderDoctorLogger.patch - bmo#1447070
+ fixes non-unified build error
+ * mozilla-i586-domPrefs.patch - DOMPrefs.h
+ fixes 32bit build error
+
+-------------------------------------------------------------------
Old:
----
firefox-59.0.1-source.tar.xz
l10n-59.0.1.tar.xz
mozilla-bmo1446062.patch
New:
----
firefox-59.0.2-source.tar.xz
l10n-59.0.2.tar.xz
mozilla-i586-DecoderDoctorLogger.patch
mozilla-i586-domPrefs.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ MozillaFirefox.spec ++++++
--- /var/tmp/diff_new_pack.vm2Vvk/_old 2018-03-30 12:00:19.285140691 +0200
+++ /var/tmp/diff_new_pack.vm2Vvk/_new 2018-03-30 12:00:19.289140547 +0200
@@ -19,10 +19,10 @@
# changed with every update
%define major 59
-%define mainver %major.0.1
+%define mainver %major.0.2
%define update_channel release
%define branding 1
-%define releasedate 20180315233128
+%define releasedate 20180323154952
# PIE, full relro (x86_64 for now)
%define build_hardened 1
@@ -151,7 +151,8 @@
Patch7: mozilla-aarch64-startup-crash.patch
Patch8: mozilla-bmo256180.patch
Patch9: mozilla-bmo1005535.patch
-Patch10: mozilla-bmo1446062.patch
+Patch10: mozilla-i586-DecoderDoctorLogger.patch
+Patch11: mozilla-i586-domPrefs.patch
# Firefox/browser
Patch101: firefox-kde.patch
Patch102: firefox-branded-icons.patch
@@ -263,7 +264,10 @@
%patch7 -p1
%patch8 -p1
%patch9 -p1
+%ifarch %ix86
%patch10 -p1
+%patch11 -p1
+%endif
# Firefox
%patch101 -p1
%patch102 -p1
++++++ _constraints ++++++
--- /var/tmp/diff_new_pack.vm2Vvk/_old 2018-03-30 12:00:19.393136786 +0200
+++ /var/tmp/diff_new_pack.vm2Vvk/_new 2018-03-30 12:00:19.393136786 +0200
@@ -19,4 +19,14 @@
</memory>
</hardware>
</overwrite>
+ <overwrite>
+ <conditions>
+ <arch>aarch64</arch>
+ </conditions>
+ <hardware>
+ <memory>
+ <size unit="G">9</size>
+ </memory>
+ </hardware>
+ </overwrite>
</constraints>
++++++ compare-locales.tar.xz ++++++
++++++ create-tar.sh ++++++
--- /var/tmp/diff_new_pack.vm2Vvk/_old 2018-03-30 12:00:19.493133169 +0200
+++ /var/tmp/diff_new_pack.vm2Vvk/_new 2018-03-30 12:00:19.497133025 +0200
@@ -7,8 +7,8 @@
CHANNEL="release"
BRANCH="releases/mozilla-$CHANNEL"
-RELEASE_TAG="FIREFOX_59_0_1_RELEASE"
-VERSION="59.0.1"
+RELEASE_TAG="FIREFOX_59_0_2_RELEASE"
+VERSION="59.0.2"
# check required tools
test -x /usr/bin/hg || ( echo "hg missing: execute zypper in mercurial"; exit 5 )
++++++ firefox-59.0.1-source.tar.xz -> firefox-59.0.2-source.tar.xz ++++++
/work/SRC/openSUSE:Factory/MozillaFirefox/firefox-59.0.1-source.tar.xz /work/SRC/openSUSE:Factory/.MozillaFirefox.new/firefox-59.0.2-source.tar.xz differ: char 26, line 1
++++++ l10n-59.0.1.tar.xz -> l10n-59.0.2.tar.xz ++++++
/work/SRC/openSUSE:Factory/MozillaFirefox/l10n-59.0.1.tar.xz /work/SRC/openSUSE:Factory/.MozillaFirefox.new/l10n-59.0.2.tar.xz differ: char 26, line 1
++++++ mozilla-bmo1005535.patch ++++++
--- /var/tmp/diff_new_pack.vm2Vvk/_old 2018-03-30 12:00:19.645127673 +0200
+++ /var/tmp/diff_new_pack.vm2Vvk/_new 2018-03-30 12:00:19.649127528 +0200
@@ -1,7 +1,7 @@
# HG changeset patch
# Parent 376f185a0a757fe128be665adbb705f4a56461bc
# User Steve Singer <steve(a)ssinger.info>
-# Parent 23e95bbe4d5553a2ba9dda2a4a96a2029253597c
+# Parent 371f01835b6fe4cb6b7095a6c29f7bb54f6d6257
Bug 1005535 - Get skia GPU building on big endian.
diff --git a/gfx/skia/skia/include/core/SkColorPriv.h b/gfx/skia/skia/include/core/SkColorPriv.h
++++++ mozilla-i586-DecoderDoctorLogger.patch ++++++
# HG changeset patch
# Parent f3fe334a20e8a63266eb06c5d298ad793cefc015
Mozilla Bug#1447070 - DecoderDoctorLogger.h must be included in MediaKeySession.h
to fix non-unified build error for i586 target.
diff --git a/dom/media/eme/MediaKeySession.h b/dom/media/eme/MediaKeySession.h
--- a/dom/media/eme/MediaKeySession.h
+++ b/dom/media/eme/MediaKeySession.h
@@ -2,16 +2,17 @@
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_dom_MediaKeySession_h
#define mozilla_dom_MediaKeySession_h
+#include "DecoderDoctorLogger.h"
#include "mozilla/Attributes.h"
#include "mozilla/ErrorResult.h"
#include "nsCycleCollectionParticipant.h"
#include "mozilla/DOMEventTargetHelper.h"
#include "nsCOMPtr.h"
#include "mozilla/dom/TypedArray.h"
#include "mozilla/Mutex.h"
#include "mozilla/dom/Date.h"
++++++ mozilla-i586-domPrefs.patch ++++++
# HG changeset patch
# User Andrea Marchesini <amarchesini(a)mozilla.com>
# Parent bb4eb640e7303ea68be982d824aa100caacce240
Mozilla Bug#1447409 - DOMPrefs.h must be included in WorkerScope, r=qdot
To fix 32bit build error for i586 target.
diff --git a/dom/workers/WorkerScope.h b/dom/workers/WorkerScope.h
--- a/dom/workers/WorkerScope.h
+++ b/dom/workers/WorkerScope.h
@@ -4,16 +4,17 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_dom_workerscope_h__
#define mozilla_dom_workerscope_h__
#include "Workers.h"
#include "mozilla/DOMEventTargetHelper.h"
+#include "mozilla/dom/DOMPrefs.h"
#include "mozilla/dom/Headers.h"
#include "mozilla/dom/RequestBinding.h"
#include "nsWeakReference.h"
#include "mozilla/dom/ImageBitmapSource.h"
namespace mozilla {
namespace dom {
++++++ source-stamp.txt ++++++
--- /var/tmp/diff_new_pack.vm2Vvk/_old 2018-03-30 12:00:19.721124925 +0200
+++ /var/tmp/diff_new_pack.vm2Vvk/_new 2018-03-30 12:00:19.725124780 +0200
@@ -1,2 +1,2 @@
-REV=3db9e3d52b17
+REV=239e434d6d2b
REPO=http://hg.mozilla.org/releases/mozilla-release
1
0
Hello community,
here is the log from the commit of package sanlock for openSUSE:Factory checked in at 2018-03-30 11:59:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sanlock (Old)
and /work/SRC/openSUSE:Factory/.sanlock.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sanlock"
Fri Mar 30 11:59:27 2018 rev:18 rq:591650 version:3.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/sanlock/sanlock.changes 2017-12-12 21:16:57.451841183 +0100
+++ /work/SRC/openSUSE:Factory/.sanlock.new/sanlock.changes 2018-03-30 11:59:32.810821312 +0200
@@ -1,0 +2,22 @@
+Mon Mar 26 16:36:05 UTC 2018 - jfehlig(a)suse.com
+
+- Fix module initialization to work with both python2 and python3
+ Updated sanlock-python3.patch
+ bsc#1076414
+
+-------------------------------------------------------------------
+Wed Mar 21 12:58:08 UTC 2018 - tchvatal(a)suse.com
+
+- Add code to build with both python2 and python3 bindings with
+ provided condition so we can later on optionalize python2 builds
+ sanlock-python3.patch
+ bsc#1076414
+
+-------------------------------------------------------------------
+Wed Mar 21 12:44:29 UTC 2018 - tchvatal(a)suse.com
+
+- Cleanup with spec-cleaner (only support SLE12 and newer)
+- Add -fno-strict-aliasing to python subpkg
+- Create rcsanlk-resetd link for the service control
+
+-------------------------------------------------------------------
New:
----
sanlock-python3.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ sanlock.spec ++++++
--- /var/tmp/diff_new_pack.VsLmAn/_old 2018-03-30 11:59:33.538794986 +0200
+++ /var/tmp/diff_new_pack.VsLmAn/_new 2018-03-30 11:59:33.542794842 +0200
@@ -1,7 +1,7 @@
#
# spec file for package sanlock
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 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
@@ -16,43 +16,24 @@
#
-#Compat macro for new _fillupdir macro introduced in Nov 2017
-%if ! %{defined _fillupdir}
- %define _fillupdir /var/adm/fillup-templates
-%endif
-
%define with_fence_sanlockd 0
%define with_sanlk_reset 0
-
%if 0%{?suse_version} > 1320
%define with_fence_sanlockd 1
%define with_sanlk_reset 1
%endif
-
+#Compat macro for new _fillupdir macro introduced in Nov 2017
+%if ! %{defined _fillupdir}
+ %define _fillupdir %{_localstatedir}/adm/fillup-templates
+%endif
+%bcond_without python2
Name: sanlock
Version: 3.6.0
Release: 0
Summary: A shared disk lock manager
-License: GPL-2.0 and GPL-2.0+ and LGPL-2.1+
+License: GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later
Group: System/Base
-
Url: https://pagure.io/sanlock
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildRequires: libaio-devel
-BuildRequires: libblkid-devel
-BuildRequires: python
-BuildRequires: python-devel
-BuildRequires: systemd
-%{?systemd_requires}
-BuildRequires: xz
-Requires(pre): %fillup_prereq
-%if 0%{?suse_version} > 1320
-Requires(pre): group(disk)
-%endif
-Requires(pre): %{_sbindir}/groupadd
-Requires(pre): %{_sbindir}/useradd
-Requires: %{name}-lib = %{version}-%{release}
-Recommends: logrotate
Source0: %{name}-%{version}.tar.gz
Source1: sysconfig.sanlock
Source2: sysconfig.wdmd
@@ -66,8 +47,20 @@
Patch104: suse-no-date-time.patch
# bsc#1030060
Patch105: suse-fix-link-errors.patch
-
-%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
+Patch106: sanlock-python3.patch
+BuildRequires: %{python_module devel}
+BuildRequires: libaio-devel
+BuildRequires: pkgconfig
+BuildRequires: python-rpm-macros
+BuildRequires: systemd-rpm-macros
+BuildRequires: pkgconfig(blkid)
+Requires(pre): %fillup_prereq
+Requires(pre): shadow
+Recommends: logrotate
+%{?systemd_requires}
+%if 0%{?suse_version} >= 1500
+Requires(pre): group(disk)
+%endif
%description
sanlock uses disk paxos to manage leases on shared storage.
@@ -75,25 +68,36 @@
access to the shared disks.
%package -n libsanlock1
-Provides: sanlock-lib
Summary: A shared disk lock manager library
Group: Development/Libraries/C and C++
+Provides: sanlock-lib = %{version}
%description -n libsanlock1
The runtime libraries for sanlock, a shared disk lock manager.
Hosts connected to a common SAN can use this to synchronize their
access to the shared disks.
-%package -n python-%name
+%package -n python2-%{name}
+Summary: Python bindings for the sanlock library
+Group: Development/Libraries/Python
+Requires: libsanlock1 = %{version}-%{release}
+Provides: python-%{name}
Provides: sanlock-python
+
+%description -n python2-%{name}
+A module that permits applications written in the Python programming
+language to use the interface supplied by the sanlock library.
+
+%package -n python3-%{name}
Summary: Python bindings for the sanlock library
Group: Development/Libraries/Python
Requires: libsanlock1 = %{version}-%{release}
-%description -n python-%name
+%description -n python3-%{name}
A module that permits applications written in the Python programming
language to use the interface supplied by the sanlock library.
+
%package devel
Summary: Development files for %{name}
Group: Development/Libraries/C and C++
@@ -131,69 +135,65 @@
%patch103 -p1
%patch104 -p1
%patch105 -p1
+%patch106 -p1
%build
# upstream does not require configure
# upstream does not support _smp_mflags
-CFLAGS="%{optflags}" make -C wdmd
-CFLAGS="%{optflags}" make -C src
-CFLAGS="%{optflags}" make -C python
+CFLAGS="%{optflags}" make -j1 -C wdmd
+CFLAGS="%{optflags}" make -j1 -C src
+pushd python
+CFLAGS="%{optflags} -fno-strict-aliasing" %python_build
+popd
%if %{with_fence_sanlockd}
-CFLAGS="%{optflags}" make -C fence_sanlock
+CFLAGS="%{optflags}" make -j1 -C fence_sanlock
%endif
%if %{with_sanlk_reset}
-CFLAGS="%{optflags}" make -C reset
+CFLAGS="%{optflags}" make -j1 -C reset
%endif
%install
-make -C src \
- install LIBDIR=%{_libdir} \
- DESTDIR="%{buildroot}"
-make -C wdmd \
- install LIBDIR=%{_libdir} \
- DESTDIR="%{buildroot}"
-make -C python \
- install LIBDIR=%{_libdir} \
- DESTDIR="%{buildroot}" PREFIX=%_prefix
+%make_install LIBDIR=%{_libdir} -C src
+%make_install LIBDIR=%{_libdir} -C wdmd
+pushd python
+%python_install
+popd
%if %{with_fence_sanlockd}
-make -C fence_sanlock \
- install LIBDIR=%{_libdir} \
- DESTDIR="%{buildroot}"
+%make_install LIBDIR=%{_libdir} -C fence_sanlock
%endif
%if %{with_sanlk_reset}
-make -C reset \
- install LIBDIR=%{_libdir} \
- DESTDIR="%{buildroot}"
+%make_install LIBDIR=%{_libdir} -C reset
%endif
install -D -m 644 src/sanlock.conf %{buildroot}/%{_sysconfdir}/sanlock/sanlock.conf
-install -D -m 644 %SOURCE1 %{buildroot}/%{_fillupdir}/sysconfig.sanlock
-install -D -m 644 %SOURCE2 %{buildroot}/%{_fillupdir}/sysconfig.wdmd
+install -D -m 644 %{SOURCE1} %{buildroot}/%{_fillupdir}/sysconfig.sanlock
+install -D -m 644 %{SOURCE2} %{buildroot}/%{_fillupdir}/sysconfig.wdmd
install -D -m 644 init.d/sanlock.service %{buildroot}/%{_unitdir}/sanlock.service
-ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rcsanlock
+ln -s service %{buildroot}%{_sbindir}/rcsanlock
install -D -m 644 init.d/wdmd.service %{buildroot}/%{_unitdir}/wdmd.service
-ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rcwdmd
+ln -s service %{buildroot}%{_sbindir}/rcwdmd
%if %{with_fence_sanlockd}
-install -D -m 0755 %SOURCE3 %{buildroot}/usr/lib/systemd/systemd-fence_sanlockd
+install -D -m 0755 %{SOURCE3} %{buildroot}%{_prefix}/lib/systemd/systemd-fence_sanlockd
install -D -m 0644 init.d/fence_sanlockd.service %{buildroot}/%{_unitdir}/fence_sanlockd.service
-ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rcfence_sanlockd
+ln -s service %{buildroot}%{_sbindir}/rcfence_sanlockd
%endif
%if %{with_sanlk_reset}
install -D -m 0644 init.d/sanlk-resetd.service %{buildroot}/%{_unitdir}/sanlk-resetd.service
+ln -s service %{buildroot}%{_sbindir}/rcsanlk-resetd
%endif
install -Dm 0644 src/logrotate.sanlock \
- %{buildroot}/etc/logrotate.d/sanlock
+ %{buildroot}%{_sysconfdir}/logrotate.d/sanlock
-install -Dd -m 0755 %{buildroot}/etc/wdmd.d
+install -Dd -m 0755 %{buildroot}%{_sysconfdir}/wdmd.d
%pre
-%{_bindir}/getent group sanlock > /dev/null || %{_sbindir}/groupadd \
+getent group sanlock > /dev/null || groupadd \
-g 179 sanlock
-%{_bindir}/getent passwd sanlock > /dev/null || %{_sbindir}/useradd \
+getent passwd sanlock > /dev/null || useradd \
-u 179 -c "sanlock" -s /sbin/nologin -r \
- -g 179 -G disk -d /var/run/sanlock sanlock
+ -g 179 -G disk -d %{_localstatedir}/run/sanlock sanlock
%service_add_pre wdmd.service
%service_add_pre sanlock.service
@@ -215,15 +215,10 @@
%if %{with_fence_sanlockd}
%post -n fence-sanlock
%service_add_post fence_sanlockd.service
-%restart_on_update fence_sanlockd
-#if [ $1 -eq 1 ] ; then
-#ccs_update_schema > /dev/null 2>&1 ||:
-#fi
%endif
%post -n sanlk-reset
%service_add_post sanlk-resetd.service
-%restart_on_update sanlk-resetd
%preun
%service_del_preun wdmd.service sanlock.service
@@ -238,7 +233,6 @@
%service_del_postun wdmd.service sanlock.service
%postun -n libsanlock1 -p /sbin/ldconfig
-
%postun -n fence-sanlock
%service_del_postun fence_sanlockd.service
@@ -246,7 +240,6 @@
%service_del_postun sanlk-resetd.service
%files
-%defattr(-,root,root,-)
%dir %attr(0700, root, root) %{_sysconfdir}/wdmd.d/
%dir %attr(0700, root, root) %{_sysconfdir}/sanlock/
%config(noreplace) %{_sysconfdir}/sanlock/sanlock.conf
@@ -263,18 +256,19 @@
%config(noreplace) %{_sysconfdir}/logrotate.d/sanlock
%files -n libsanlock1
-%defattr(-,root,root,-)
%{_libdir}/libsanlock.so.*
%{_libdir}/libsanlock_client.so.*
%{_libdir}/libwdmd.so.*
-%files -n python-%name
-%defattr(-,root,root,-)
-%{python_sitearch}/sanlock_python-%{version}_-py*.egg-info
-%{python_sitearch}/sanlock.so
+%if %{with python2}
+%files -n python2-%{name}
+%{python2_sitearch}/*
+%endif
+
+%files -n python3-%{name}
+%{python3_sitearch}/*
%files devel
-%defattr(-,root,root,-)
%{_libdir}/libwdmd.so
%{_includedir}/wdmd.h
%{_libdir}/libsanlock.so
@@ -289,9 +283,8 @@
%if %{with_fence_sanlockd}
%files -n fence-sanlock
-%defattr(-,root,root,-)
%{_sbindir}/fence_sanlockd
-/usr/lib/systemd/systemd-fence_sanlockd
+%{_prefix}/lib/systemd/systemd-fence_sanlockd
%{_unitdir}/fence_sanlockd.service
%{_sbindir}/fence_sanlock
%{_sbindir}/fence_sanlockd
@@ -301,12 +294,12 @@
%if %{with_sanlk_reset}
%files -n sanlk-reset
-%defattr(-,root,root,-)
%{_sbindir}/sanlk-reset
%{_sbindir}/sanlk-resetd
+%{_sbindir}/rcsanlk-resetd
%{_unitdir}/sanlk-resetd.service
-%{_mandir}/man8/sanlk-reset.8.gz
-%{_mandir}/man8/sanlk-resetd.8.gz
+%{_mandir}/man8/sanlk-reset.8%{?ext_man}
+%{_mandir}/man8/sanlk-resetd.8%{?ext_man}
%endif
%changelog
++++++ sanlock-python3.patch ++++++
Index: sanlock-3.6.0/python/sanlock.c
===================================================================
--- sanlock-3.6.0.orig/python/sanlock.c
+++ sanlock-3.6.0/python/sanlock.c
@@ -12,6 +12,10 @@
#include <sanlock_admin.h>
#include <sanlock_direct.h>
+#if PY_MAJOR_VERSION >= 3
+#define IS_PY3K
+#endif
+
#ifndef __unused
#define __unused __attribute__ ((unused))
#endif
@@ -30,6 +34,17 @@
#define __neg_sets_exception
#endif
+struct module_state {
+ PyObject *error;
+};
+
+#ifdef IS_PY3K
+#define GETSTATE(m) ((struct module_state*)PyModule_GetState(m))
+#else
+#define GETSTATE(m) (&_state)
+static struct module_state _state;
+#endif
+
/* Functions prototypes */
static void __set_exception(int en, char *msg) __sets_exception;
static int __parse_resource(PyObject *obj, struct sanlk_resource **res_ret) __neg_sets_exception;
@@ -102,14 +117,27 @@ __parse_resource(PyObject *obj, struct s
path = PyTuple_GetItem(tuple, 0);
offset = PyTuple_GetItem(tuple, 1);
+#ifdef IS_PY3K
+ p = PyBytes_AsString(path);
+#else
p = PyString_AsString(path);
+#endif
+#ifdef IS_PY3K
+ if (!PyLong_Check(offset)) {
+#else
if (!PyInt_Check(offset)) {
+#endif
__set_exception(EINVAL, "Invalid resource offset");
goto exit_fail;
}
+#ifdef IS_PY3K
+ } else if (PyBytes_Check(tuple)) {
+ p = PyBytes_AsString(tuple);
+#else
} else if (PyString_Check(tuple)) {
p = PyString_AsString(tuple);
+#endif
}
if (p == NULL) {
@@ -122,7 +150,11 @@ __parse_resource(PyObject *obj, struct s
if (offset == NULL) {
res->disks[i].offset = 0;
} else {
+#ifdef IS_PY3K
+ res->disks[i].offset = PyLong_AsLong(offset);
+#else
res->disks[i].offset = PyInt_AsLong(offset);
+#endif
}
}
@@ -149,7 +181,11 @@ __hosts_to_list(struct sanlk_host *hss,
goto exit_fail;
/* fill the dictionary information: host_id */
+#ifdef IS_PY3K
+ if ((ls_value = PyLong_FromLong(hss[i].host_id)) == NULL)
+#else
if ((ls_value = PyInt_FromLong(hss[i].host_id)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_entry, "host_id", ls_value);
Py_DECREF(ls_value);
@@ -157,7 +193,11 @@ __hosts_to_list(struct sanlk_host *hss,
goto exit_fail;
/* fill the dictionary information: generation */
+#ifdef IS_PY3K
+ if ((ls_value = PyLong_FromLong(hss[i].generation)) == NULL)
+#else
if ((ls_value = PyInt_FromLong(hss[i].generation)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_entry, "generation", ls_value);
Py_DECREF(ls_value);
@@ -165,7 +205,11 @@ __hosts_to_list(struct sanlk_host *hss,
goto exit_fail;
/* fill the dictionary information: timestamp */
+#ifdef IS_PY3K
+ if ((ls_value = PyLong_FromLong(hss[i].timestamp)) == NULL)
+#else
if ((ls_value = PyInt_FromLong(hss[i].timestamp)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_entry, "timestamp", ls_value);
Py_DECREF(ls_value);
@@ -173,7 +217,11 @@ __hosts_to_list(struct sanlk_host *hss,
goto exit_fail;
/* fill the dictionary information: io_timeout */
+#ifdef IS_PY3K
+ if ((ls_value = PyLong_FromLong(hss[i].io_timeout)) == NULL)
+#else
if ((ls_value = PyInt_FromLong(hss[i].io_timeout)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_entry, "io_timeout", ls_value);
Py_DECREF(ls_value);
@@ -181,7 +229,11 @@ __hosts_to_list(struct sanlk_host *hss,
goto exit_fail;
/* fill the dictionary information: flags */
+#ifdef IS_PY3K
+ if ((ls_value = PyLong_FromLong(hss[i].flags)) == NULL)
+#else
if ((ls_value = PyInt_FromLong(hss[i].flags)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_entry, "flags", ls_value);
Py_DECREF(ls_value);
@@ -220,7 +272,11 @@ py_register(PyObject *self __unused, PyO
return NULL;
}
+#ifdef IS_PY3K
+ return PyLong_FromLong(sanlockfd);
+#else
return PyInt_FromLong(sanlockfd);
+#endif
}
/* get_alignment */
@@ -253,7 +309,11 @@ py_get_alignment(PyObject *self __unused
return NULL;
}
+#ifdef IS_PY3K
+ return PyLong_FromLong(rv);
+#else
return PyInt_FromLong(rv);
+#endif
}
/* init_lockspace */
@@ -439,7 +499,11 @@ py_read_lockspace(PyObject *self __unuse
goto exit_fail;
/* fill the dictionary information: lockspace */
+#ifdef IS_PY3K
+ if ((ls_entry = PyBytes_FromString(ls.name)) == NULL)
+#else
if ((ls_entry = PyString_FromString(ls.name)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_info, "lockspace", ls_entry);
Py_DECREF(ls_entry);
@@ -447,7 +511,11 @@ py_read_lockspace(PyObject *self __unuse
goto exit_fail;
/* fill the dictionary information: iotimeout */
+#ifdef IS_PY3K
+ if ((ls_entry = PyLong_FromLong(io_timeout)) == NULL)
+#else
if ((ls_entry = PyInt_FromLong(io_timeout)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_info, "iotimeout", ls_entry);
Py_DECREF(ls_entry);
@@ -515,7 +583,11 @@ py_read_resource(PyObject *self __unused
goto exit_fail;
/* fill the dictionary information: lockspace */
+#ifdef IS_PY3K
+ if ((rs_entry = PyBytes_FromString(rs->lockspace_name)) == NULL)
+#else
if ((rs_entry = PyString_FromString(rs->lockspace_name)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(rs_info, "lockspace", rs_entry);
Py_DECREF(rs_entry);
@@ -523,7 +595,11 @@ py_read_resource(PyObject *self __unused
goto exit_fail;
/* fill the dictionary information: resource */
+#ifdef IS_PY3K
+ if ((rs_entry = PyBytes_FromString(rs->name)) == NULL)
+#else
if ((rs_entry = PyString_FromString(rs->name)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(rs_info, "resource", rs_entry);
Py_DECREF(rs_entry);
@@ -804,7 +880,11 @@ py_get_lockspaces(PyObject *self __unuse
goto exit_fail;
/* fill the dictionary information: lockspace */
+#ifdef IS_PY3K
+ if ((ls_value = PyBytes_FromString(lss[i].name)) == NULL)
+#else
if ((ls_value = PyString_FromString(lss[i].name)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_entry, "lockspace", ls_value);
Py_DECREF(ls_value);
@@ -812,7 +892,11 @@ py_get_lockspaces(PyObject *self __unuse
goto exit_fail;
/* fill the dictionary information: host_id */
+#ifdef IS_PY3K
+ if ((ls_value = PyLong_FromLong(lss[i].host_id)) == NULL)
+#else
if ((ls_value = PyInt_FromLong(lss[i].host_id)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_entry, "host_id", ls_value);
Py_DECREF(ls_value);
@@ -820,7 +904,11 @@ py_get_lockspaces(PyObject *self __unuse
goto exit_fail;
/* fill the dictionary information: path */
+#ifdef IS_PY3K
+ if ((ls_value = PyBytes_FromString(lss[i].host_id_disk.path)) == NULL)
+#else
if ((ls_value = PyString_FromString(lss[i].host_id_disk.path)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_entry, "path", ls_value);
Py_DECREF(ls_value);
@@ -828,7 +916,11 @@ py_get_lockspaces(PyObject *self __unuse
goto exit_fail;
/* fill the dictionary information: offset */
+#ifdef IS_PY3K
+ if ((ls_value = PyLong_FromLong(lss[i].host_id_disk.offset)) == NULL)
+#else
if ((ls_value = PyInt_FromLong(lss[i].host_id_disk.offset)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_entry, "offset", ls_value);
Py_DECREF(ls_value);
@@ -836,7 +928,11 @@ py_get_lockspaces(PyObject *self __unuse
goto exit_fail;
/* fill the dictionary information: flags */
+#ifdef IS_PY3K
+ if ((ls_value = PyLong_FromLong(lss[i].flags)) == NULL)
+#else
if ((ls_value = PyInt_FromLong(lss[i].flags)) == NULL)
+#endif
goto exit_fail;
rv = PyDict_SetItemString(ls_entry, "flags", ls_value);
Py_DECREF(ls_value);
@@ -958,7 +1054,11 @@ py_acquire(PyObject *self __unused, PyOb
/* prepare the resource version */
if (version != Py_None) {
res->flags |= SANLK_RES_LVER;
+#ifdef IS_PY3K
+ res->lver = PyLong_AsUnsignedLongMask(version);
+#else
res->lver = PyInt_AsUnsignedLongMask(version);
+#endif
if (res->lver == -1) {
__set_exception(EINVAL, "Unable to convert the version value");
goto exit_fail;
@@ -1074,7 +1174,11 @@ py_request(PyObject *self __unused, PyOb
flags = SANLK_REQUEST_NEXT_LVER;
} else {
res->flags |= SANLK_RES_LVER;
+#ifdef IS_PY3K
+ res->lver = PyLong_AsUnsignedLongMask(version);
+#else
res->lver = PyInt_AsUnsignedLongMask(version);
+#endif
if (res->lver == -1) {
__set_exception(EINVAL, "Unable to convert the version value");
goto exit_fail;
@@ -1189,7 +1293,11 @@ py_killpath(PyObject *self __unused, PyO
size_t arg_len;
item = PyList_GetItem(argslist, i);
+#ifdef IS_PY3K
+ p = PyBytes_AsString(item);
+#else
p = PyString_AsString(item);
+#endif
if (p == NULL) {
__set_exception(EINVAL, "Killpath argument not a string");
@@ -1578,32 +1686,83 @@ exit_fail:
return excp;
}
+#ifdef IS_PY3K
+static int sanlock_traverse(PyObject *m, visitproc visit, void *arg) {
+ Py_VISIT(GETSTATE(m)->error);
+ return 0;
+}
+
+static int sanlock_clear(PyObject *m) {
+ Py_CLEAR(GETSTATE(m)->error);
+ return 0;
+}
+
+static struct PyModuleDef moduledef = {
+ PyModuleDef_HEAD_INIT,
+ "sanlock",
+ pydoc_sanlock,
+ sizeof(struct module_state),
+ sanlock_methods,
+ NULL,
+ sanlock_traverse,
+ sanlock_clear,
+ NULL
+};
+
+#define INITERROR return NULL
+
+PyMODINIT_FUNC
+PyInit_sanlock(void)
+
+#else
+#define INITERROR return
+
PyMODINIT_FUNC
initsanlock(void)
+#endif
{
PyObject *py_module, *sk_constant;
+ struct module_state *st;
+#ifdef IS_PY3K
+ py_module = PyModule_Create(&moduledef);
+#else
py_module = Py_InitModule4("sanlock",
sanlock_methods, pydoc_sanlock, NULL, PYTHON_API_VERSION);
+#endif
if (py_module == NULL)
- return;
+ INITERROR;
py_exception = initexception();
- if (py_exception == NULL)
- return;
+ if (py_exception == NULL) {
+ Py_DECREF(py_module);
+ INITERROR;
+ }
+
+ st = GETSTATE(py_module);
+ st->error = py_exception;
if (PyModule_AddObject(py_module, "SanlockException", py_exception) == 0) {
Py_INCREF(py_exception);
}
+#ifdef IS_PY3K
+#define PYSNLK_INIT_ADD_CONSTANT(x, y) \
+ if ((sk_constant = PyLong_FromLong(x)) != NULL) { \
+ if (PyModule_AddObject(py_module, y, sk_constant)) { \
+ Py_DECREF(sk_constant); \
+ } \
+ }
+#else
#define PYSNLK_INIT_ADD_CONSTANT(x, y) \
if ((sk_constant = PyInt_FromLong(x)) != NULL) { \
if (PyModule_AddObject(py_module, y, sk_constant)) { \
Py_DECREF(sk_constant); \
} \
}
+#endif
/* lockspaces list flags */
PYSNLK_INIT_ADD_CONSTANT(SANLK_LSF_ADD, "LSFLAG_ADD");
@@ -1628,4 +1787,8 @@ initsanlock(void)
PYSNLK_INIT_ADD_CONSTANT(SANLK_SETEV_ALL_HOSTS, "SETEV_ALL_HOSTS");
#undef PYSNLK_INIT_ADD_CONSTANT
+
+#ifdef IS_PY3K
+ return py_module;
+#endif
}
1
0
Hello community,
here is the log from the commit of package xorg-x11-server for openSUSE:Factory checked in at 2018-03-30 11:59:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old)
and /work/SRC/openSUSE:Factory/.xorg-x11-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xorg-x11-server"
Fri Mar 30 11:59:22 2018 rev:357 rq:591648 version:1.19.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes 2018-03-08 10:56:17.075961230 +0100
+++ /work/SRC/openSUSE:Factory/.xorg-x11-server.new/xorg-x11-server.changes 2018-03-30 11:59:23.703150670 +0200
@@ -1,0 +2,6 @@
+Tue Mar 27 14:42:18 UTC 2018 - msrb(a)suse.com
+
+- Update and re-enable n_xserver-optimus-autoconfig-hack.patch.
+ (bnc#1084411)
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xorg-x11-server.spec ++++++
--- /var/tmp/diff_new_pack.VTrK2u/_old 2018-03-30 11:59:24.835109736 +0200
+++ /var/tmp/diff_new_pack.VTrK2u/_new 2018-03-30 11:59:24.835109736 +0200
@@ -361,8 +361,7 @@
%patch216 -p1
%patch217 -p1
-### disabled for now
-#%patch1000 -p1
+%patch1000 -p1
### disabled for now
#%patch1162 -p1
++++++ n_xserver-optimus-autoconfig-hack.patch ++++++
--- /var/tmp/diff_new_pack.VTrK2u/_old 2018-03-30 11:59:24.943105830 +0200
+++ /var/tmp/diff_new_pack.VTrK2u/_new 2018-03-30 11:59:24.943105830 +0200
@@ -8,6 +8,11 @@
v2: fix if config or slave config is NULL
v3: fix multi useful slaves
+
+v4: do not unbound GPUs before attaching them
+ compatibility fix for 5c7af02b10
+ -- Michal Srb <msrb(a)suse.com>
+
DO NOT UPSTREAM.
Signed-off-by: Dave Airlie <airlied(a)gmail.com>
@@ -17,11 +22,11 @@
hw/xfree86/modes/xf86Crtc.c | 32 ++++++++++++++++++++++++++++++++
3 files changed, 47 insertions(+)
-diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
-index 1e95061..c58fd2b 100644
---- a/hw/xfree86/common/xf86Init.c
-+++ b/hw/xfree86/common/xf86Init.c
-@@ -361,6 +361,16 @@ xf86CreateRootWindow(WindowPtr pWin)
+Index: xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
+===================================================================
+--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Init.c
++++ xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
+@@ -297,6 +297,16 @@ xf86PrivsElevated(void)
return privsElevated;
}
@@ -38,7 +43,7 @@
static void
InstallSignalHandlers(void)
{
-@@ -931,6 +941,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
+@@ -872,6 +882,8 @@ InitOutput(ScreenInfo * pScreenInfo, int
for (i = 0; i < xf86NumGPUScreens; i++)
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
@@ -47,11 +52,11 @@
xf86VGAarbiterWrapFunctions();
if (sigio_blocked)
input_unlock();
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index 33b2b7d..be3bdd9 100644
---- a/hw/xfree86/common/xf86platformBus.c
-+++ b/hw/xfree86/common/xf86platformBus.c
-@@ -393,6 +393,8 @@ xf86platformProbeDev(DriverPtr drvp)
+Index: xorg-server-1.19.6/hw/xfree86/common/xf86platformBus.c
+===================================================================
+--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86platformBus.c
++++ xorg-server-1.19.6/hw/xfree86/common/xf86platformBus.c
+@@ -489,6 +489,8 @@ xf86platformProbeDev(DriverPtr drvp)
return foundScreen;
}
@@ -60,7 +65,7 @@
int
xf86platformAddDevice(int index)
{
-@@ -465,6 +467,7 @@ xf86platformAddDevice(int index)
+@@ -560,6 +562,7 @@ xf86platformAddDevice(int index)
}
/* attach unbound to 0 protocol screen */
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
@@ -68,11 +73,11 @@
RRResourcesChanged(xf86Screens[0]->pScreen);
RRTellChanged(xf86Screens[0]->pScreen);
-diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
-index a441fd1..c1a56a5 100644
---- a/hw/xfree86/modes/xf86Crtc.c
-+++ b/hw/xfree86/modes/xf86Crtc.c
-@@ -3383,3 +3383,35 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn)
+Index: xorg-server-1.19.6/hw/xfree86/modes/xf86Crtc.c
+===================================================================
+--- xorg-server-1.19.6.orig/hw/xfree86/modes/xf86Crtc.c
++++ xorg-server-1.19.6/hw/xfree86/modes/xf86Crtc.c
+@@ -3462,3 +3462,29 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn)
crtc->x = crtc->y = 0;
}
}
@@ -83,7 +88,6 @@
+ RRProviderPtr master_provider;
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(master);
+ xf86CrtcConfigPtr slave_config = XF86_CRTC_CONFIG_PTR(pScrn);
-+ Bool unbound = FALSE;
+
+ if (!config || !slave_config)
+ return;
@@ -92,22 +96,14 @@
+
+ if ((master->capabilities & RR_Capability_SinkOffload) &&
+ pScrn->capabilities & RR_Capability_SourceOffload) {
-+ /* source offload */
-+
-+ DetachUnboundGPU(pScrn->pScreen);
-+ unbound = TRUE;
++ /* source offload */
+ AttachOffloadGPU(master->pScreen, pScrn->pScreen);
+ slave_config->randr_provider->offload_sink = master_provider;
+ }
+ if ((master->capabilities & RR_Capability_SourceOutput) &&
+ pScrn->capabilities & RR_Capability_SinkOutput) {
+ /* sink offload */
-+ if (!unbound)
-+ DetachUnboundGPU(pScrn->pScreen);
+ AttachOutputGPU(master->pScreen, pScrn->pScreen);
+ slave_config->randr_provider->output_source = master_provider;
+ }
+}
---
-1.8.4.5
-
1
0