openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 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
January 2025
- 1 participants
- 346 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-aiohttp for openSUSE:Factory checked in at 2025-01-07 20:50:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-aiohttp (Old)
and /work/SRC/openSUSE:Factory/.python-aiohttp.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-aiohttp"
Tue Jan 7 20:50:48 2025 rev:54 rq:1235442 version:3.11.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-aiohttp/python-aiohttp.changes 2024-12-06 14:25:20.329850786 +0100
+++ /work/SRC/openSUSE:Factory/.python-aiohttp.new.1881/python-aiohttp.changes 2025-01-07 20:51:11.811398592 +0100
@@ -1,0 +2,31 @@
+Mon Jan 6 19:02:59 UTC 2025 - Matej Cepl <mcepl(a)cepl.eu>
+
+- Update to 3.11.11:
+ - Bug fixes
+ - Updated :py:meth:~aiohttp.ClientSession.request to reuse
+ the quote_cookie setting from ClientSession._cookie_jar
+ when processing cookies parameter.
+ - Fixed type of SSLContext for some static type checkers
+ (e.g. pyright).
+ - Updated :meth:aiohttp.web.StreamResponse.write annotation
+ to also allow :class:bytearray and :class:memoryview as
+ inputs
+ - Fixed a hang where a connection previously used for a
+ streaming download could be returned to the pool in a
+ paused state.
+ - Features
+ - Enabled ALPN on default SSL contexts. This improves
+ compatibility with some proxies which don't work without
+ this extension.
+ - Miscellaneous internal changes
+ - Fixed an infinite loop that can occur when using aiohttp in
+ combination with async-solipsism
+- Update to 3.11.10:
+ - Fixed race condition in :class:aiohttp.web.FileResponse
+ that could have resulted in an incorrect response if the
+ file was replaced on the file system during prepare
+ - Replaced deprecated call to :func:mimetypes.guess_type with
+ :func:mimetypes.guess_file_type when using Python 3.13+
+ - Disabled zero copy writes in the StreamWriter
+
+-------------------------------------------------------------------
Old:
----
aiohttp-3.11.9.tar.gz
New:
----
aiohttp-3.11.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-aiohttp.spec ++++++
--- /var/tmp/diff_new_pack.36XxGj/_old 2025-01-07 20:51:12.631432497 +0100
+++ /var/tmp/diff_new_pack.36XxGj/_new 2025-01-07 20:51:12.631432497 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-aiohttp
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%bcond_with docs
%{?sle15_python_module_pythons}
Name: python-aiohttp
-Version: 3.11.9
+Version: 3.11.11
Release: 0
Summary: Asynchronous HTTP client/server framework
License: Apache-2.0
@@ -128,15 +128,15 @@
%check
donttest="test_aiohttp_request_coroutine or test_mark_formdata_as_processed or test_aiohttp_plugin_async or test_secure_https_proxy_absolute_path"
-# no name resolution
-donttest+=" or test_client_session_timeout_zero"
-# flaky
-donttest+=" or test_https_proxy_unsupported_tls_in_tls"
-donttest+=" or test_shutdown_handler_cancellation_suppressed"
+# # no name resolution
+# donttest+=" or test_client_session_timeout_zero"
+# # flaky
+# donttest+=" or test_https_proxy_unsupported_tls_in_tls"
+# donttest+=" or test_shutdown_handler_cancellation_suppressed"
# raises not expected "ConnectionResetError" with openssl 3.2 and python < 3.11
donttest+=" or test_tcp_connector_raise_connector_ssl_error[pyloop]"
-# fails with pytest 8 https://github.com/aio-libs/aiohttp/issues/8234
-donttest+=" or (test_pytest_plugin and test_aiohttp_plugin)"
+# # fails with pytest 8 https://github.com/aio-libs/aiohttp/issues/8234
+# donttest+=" or (test_pytest_plugin and test_aiohttp_plugin)"
# requires python-on-whales
rm -v tests/autobahn/test_autobahn.py
++++++ aiohttp-3.11.9.tar.gz -> aiohttp-3.11.11.tar.gz ++++++
/work/SRC/openSUSE:Factory/python-aiohttp/aiohttp-3.11.9.tar.gz /work/SRC/openSUSE:Factory/.python-aiohttp.new.1881/aiohttp-3.11.11.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-YAML-Tiny for openSUSE:Factory checked in at 2025-01-07 20:50:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-YAML-Tiny (Old)
and /work/SRC/openSUSE:Factory/.perl-YAML-Tiny.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-YAML-Tiny"
Tue Jan 7 20:50:24 2025 rev:19 rq:1235292 version:1.760.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-YAML-Tiny/perl-YAML-Tiny.changes 2023-04-04 21:17:25.704045839 +0200
+++ /work/SRC/openSUSE:Factory/.perl-YAML-Tiny.new.1881/perl-YAML-Tiny.changes 2025-01-07 20:50:45.506311004 +0100
@@ -1,0 +2,16 @@
+Tue Dec 17 05:36:26 UTC 2024 - Tina Müller <timueller+perl(a)suse.de>
+
+- updated to 1.760.0 (1.76)
+ see /usr/share/doc/packages/perl-YAML-Tiny/Changes
+
+ 1.76 2024-12-16 18:59:46Z
+ [FIXED]
+ - revert change from #60: "yes", "y" etc are not actually booleans.
+ (see issue #66).
+ 1.75 2024-12-15 21:24:54Z
+ [FIXED]
+ - fixed regression in %QUOTE (Nathan Monfils, PR#60) [later reverted
+ in release 1.76, see above)
+ - fix version comparison logic for forward compatibility (BooK, PR#63)
+
+-------------------------------------------------------------------
Old:
----
YAML-Tiny-1.74.tar.gz
New:
----
YAML-Tiny-1.76.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-YAML-Tiny.spec ++++++
--- /var/tmp/diff_new_pack.6TpkRZ/_old 2025-01-07 20:50:46.022332339 +0100
+++ /var/tmp/diff_new_pack.6TpkRZ/_new 2025-01-07 20:50:46.026332504 +0100
@@ -1,7 +1,7 @@
#
# spec file for package perl-YAML-Tiny
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,12 +18,14 @@
%define cpan_name YAML-Tiny
Name: perl-YAML-Tiny
-Version: 1.74
+Version: 1.760.0
Release: 0
+# 1.76 -> normalize -> 1.760.0
+%define cpan_version 1.76
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Read/Write YAML files with as little code as possible
URL: https://metacpan.org/release/%{cpan_name}
-Source0: https://cpan.metacpan.org/authors/id/E/ET/ETHER/%{cpan_name}-%{version}.tar…
+Source0: https://cpan.metacpan.org/authors/id/E/ET/ETHER/%{cpan_name}-%{cpan_version…
Source1: cpanspec.yml
BuildArch: noarch
BuildRequires: perl
@@ -31,6 +33,8 @@
BuildRequires: perl(File::Temp) >= 0.19
BuildRequires: perl(JSON::PP)
BuildRequires: perl(Test::More) >= 0.88
+Provides: perl(YAML::Tiny) = %{version}
+%undefine __perllib_provides
%{perl_requires}
%description
@@ -71,9 +75,9 @@
to file and back again just fine.
%prep
-%autosetup -n %{cpan_name}-%{version}
+%autosetup -n %{cpan_name}-%{cpan_version}
-find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path "*/script/*" ! -name "configure" -print0 | xargs -0 chmod 644
+find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path "*/script/*" ! -path "*/scripts/*" ! -name "configure" -print0 | xargs -0 chmod 644
%build
perl Makefile.PL INSTALLDIRS=vendor
++++++ YAML-Tiny-1.74.tar.gz -> YAML-Tiny-1.76.tar.gz ++++++
++++ 1749 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-PPI for openSUSE:Factory checked in at 2025-01-07 20:50:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-PPI (Old)
and /work/SRC/openSUSE:Factory/.perl-PPI.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-PPI"
Tue Jan 7 20:50:23 2025 rev:30 rq:1235290 version:1.281.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-PPI/perl-PPI.changes 2024-09-29 18:09:17.758304284 +0200
+++ /work/SRC/openSUSE:Factory/.perl-PPI.new.1881/perl-PPI.changes 2025-01-07 20:50:43.858242864 +0100
@@ -1,0 +2,23 @@
+Sat Dec 28 05:32:21 UTC 2024 - Tina Müller <timueller+perl(a)suse.de>
+
+- updated to 1.281.0 (1.281)
+ see /usr/share/doc/packages/perl-PPI/Changes
+
+ 1.281 2024-12-27 14:44:47Z
+ Summary:
+ - Implement support for signatures and other parsing features
+
+ Details:
+ - Framework for recognition of parsing feature activation via:
+ - `use $PERL_VERSION` in code
+ - `use feature` in code
+ - `use $Common::CPAN::Module` in code
+ - PPI::Document->new( feature_mods => ... )
+ - PPI::Document->new( custom_feature_includes => ... )
+ - PPI::Document->new( custom_feature_include_cb => ... )
+ - $ENV{PPI_CUSTOM_FEATURE_INCLUDES}
+ - Added ability to parse features:
+ - signatures, as PPI::Structure::Signature
+ - try catch, as PPI::Statement::Compound
+
+-------------------------------------------------------------------
Old:
----
PPI-1.279.tar.gz
New:
----
PPI-1.281.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-PPI.spec ++++++
--- /var/tmp/diff_new_pack.Z4a1Zd/_old 2025-01-07 20:50:44.274260064 +0100
+++ /var/tmp/diff_new_pack.Z4a1Zd/_new 2025-01-07 20:50:44.278260230 +0100
@@ -18,10 +18,10 @@
%define cpan_name PPI
Name: perl-PPI
-Version: 1.279.0
+Version: 1.281.0
Release: 0
-# 1.279 -> normalize -> 1.279.0
-%define cpan_version 1.279
+# 1.281 -> normalize -> 1.281.0
+%define cpan_version 1.281
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Parse, Analyze and Manipulate Perl (without perl)
URL: https://metacpan.org/release/%{cpan_name}
@@ -34,18 +34,24 @@
BuildRequires: perl(Clone) >= 0.30
BuildRequires: perl(List::Util) >= 1.33
BuildRequires: perl(Params::Util) >= 1.00
+BuildRequires: perl(Safe::Isa)
BuildRequires: perl(Storable) >= 2.17
BuildRequires: perl(Task::Weaken)
BuildRequires: perl(Test::More) >= 0.96
BuildRequires: perl(Test::NoWarnings)
BuildRequires: perl(Test::Object) >= 0.07
BuildRequires: perl(Test::SubCalls) >= 1.07
+BuildRequires: perl(YAML::PP)
BuildRequires: perl(parent)
+BuildRequires: perl(version) >= 0.77
Requires: perl(Clone) >= 0.30
Requires: perl(List::Util) >= 1.33
Requires: perl(Params::Util) >= 1.00
+Requires: perl(Safe::Isa)
Requires: perl(Storable) >= 2.17
Requires: perl(Task::Weaken)
+Requires: perl(YAML::PP)
+Requires: perl(version) >= 0.77
Provides: perl(PPI) = %{version}
Provides: perl(PPI::Cache) = %{version}
Provides: perl(PPI::Document) = %{version}
@@ -86,6 +92,7 @@
Provides: perl(PPI::Structure::For) = %{version}
Provides: perl(PPI::Structure::Given) = %{version}
Provides: perl(PPI::Structure::List) = %{version}
+Provides: perl(PPI::Structure::Signature) = %{version}
Provides: perl(PPI::Structure::Subscript) = %{version}
Provides: perl(PPI::Structure::Unknown) = %{version}
Provides: perl(PPI::Structure::When) = %{version}
++++++ PPI-1.279.tar.gz -> PPI-1.281.tar.gz ++++++
++++ 4113 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-namespace-autoclean for openSUSE:Factory checked in at 2025-01-07 20:50:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-namespace-autoclean (Old)
and /work/SRC/openSUSE:Factory/.perl-namespace-autoclean.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-namespace-autoclean"
Tue Jan 7 20:50:21 2025 rev:18 rq:1235283 version:0.310.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-namespace-autoclean/perl-namespace-autoclean.changes 2019-09-02 12:42:32.453777638 +0200
+++ /work/SRC/openSUSE:Factory/.perl-namespace-autoclean.new.1881/perl-namespace-autoclean.changes 2025-01-07 20:50:42.970206149 +0100
@@ -1,0 +2,13 @@
+Sun Oct 13 05:33:40 UTC 2024 - Tina Müller <timueller+perl(a)suse.de>
+
+- updated to 0.310.0 (0.31)
+ see /usr/share/doc/packages/perl-namespace-autoclean/Changes
+
+ 0.31 2024-10-12 16:06:26Z
+ - no changes from last trial release
+
+ 0.30 2021-04-20 17:51:47Z (TRIAL RELEASE)
+ - switch from Sub::Identify to Sub::Util (core in modern perls), falling
+ back to B.pm as needed
+
+-------------------------------------------------------------------
Old:
----
namespace-autoclean-0.29.tar.gz
New:
----
namespace-autoclean-0.31.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-namespace-autoclean.spec ++++++
--- /var/tmp/diff_new_pack.za3Nx1/_old 2025-01-07 20:50:43.526229137 +0100
+++ /var/tmp/diff_new_pack.za3Nx1/_new 2025-01-07 20:50:43.526229137 +0100
@@ -1,7 +1,7 @@
#
# spec file for package perl-namespace-autoclean
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,28 +16,28 @@
#
+%define cpan_name namespace-autoclean
Name: perl-namespace-autoclean
-Version: 0.29
+Version: 0.310.0
Release: 0
-%define cpan_name namespace-autoclean
-Summary: Keep imports out of your namespace
+# 0.31 -> normalize -> 0.310.0
+%define cpan_version 0.31
License: Artistic-1.0 OR GPL-1.0-or-later
-Group: Development/Libraries/Perl
-Url: https://metacpan.org/release/%{cpan_name}
-Source0: https://cpan.metacpan.org/authors/id/E/ET/ETHER/%{cpan_name}-%{version}.tar…
+Summary: Keep imports out of your namespace
+URL: https://metacpan.org/release/%{cpan_name}
+Source0: https://cpan.metacpan.org/authors/id/E/ET/ETHER/%{cpan_name}-%{cpan_version…
Source1: cpanspec.yml
BuildArch: noarch
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(B::Hooks::EndOfScope) >= 0.12
-BuildRequires: perl(Sub::Identify)
BuildRequires: perl(Test::More) >= 0.88
BuildRequires: perl(Test::Needs)
BuildRequires: perl(namespace::clean) >= 0.20
Requires: perl(B::Hooks::EndOfScope) >= 0.12
-Requires: perl(Sub::Identify)
Requires: perl(namespace::clean) >= 0.20
+Provides: perl(namespace::autoclean) = %{version}
+%undefine __perllib_provides
%{perl_requires}
%description
@@ -70,11 +70,11 @@
}
%prep
-%setup -q -n %{cpan_name}-%{version}
+%autosetup -n %{cpan_name}-%{cpan_version}
%build
perl Makefile.PL INSTALLDIRS=vendor
-make %{?_smp_mflags}
+%make_build
%check
make test
@@ -85,7 +85,6 @@
%perl_gen_filelist
%files -f %{name}.files
-%defattr(-,root,root,755)
%doc Changes CONTRIBUTING README
%license LICENCE
++++++ namespace-autoclean-0.29.tar.gz -> namespace-autoclean-0.31.tar.gz ++++++
++++ 2376 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package webkit2gtk3 for openSUSE:Factory checked in at 2025-01-07 20:50:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/webkit2gtk3 (Old)
and /work/SRC/openSUSE:Factory/.webkit2gtk3.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "webkit2gtk3"
Tue Jan 7 20:50:16 2025 rev:212 rq:1235270 version:2.46.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/webkit2gtk3/webkit2gtk3.changes 2024-12-30 12:51:00.534342017 +0100
+++ /work/SRC/openSUSE:Factory/.webkit2gtk3.new.1881/webkit2gtk3.changes 2025-01-07 20:50:38.566024014 +0100
@@ -110 +110 @@
- + Security fixes: CVE-2024-40866, CVE-2024-44187, CVE-2044-44185,
+ + Security fixes: CVE-2024-40866, CVE-2024-44187, CVE-2024-44185,
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ webkit2gtk3.spec ++++++
--- /var/tmp/diff_new_pack.gw1EwT/_old 2025-01-07 20:50:39.370057265 +0100
+++ /var/tmp/diff_new_pack.gw1EwT/_new 2025-01-07 20:50:39.370057265 +0100
@@ -1,7 +1,7 @@
#
# spec file for package webkit2gtk3
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package xen for openSUSE:Factory checked in at 2025-01-07 20:50:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xen (Old)
and /work/SRC/openSUSE:Factory/.xen.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xen"
Tue Jan 7 20:50:13 2025 rev:354 rq:1235233 version:4.20.0_02
Changes:
--------
--- /work/SRC/openSUSE:Factory/xen/xen.changes 2024-12-05 17:05:59.954956164 +0100
+++ /work/SRC/openSUSE:Factory/.xen.new.1881/xen.changes 2025-01-07 20:50:26.633530530 +0100
@@ -1,0 +2,44 @@
+Mon Jan 6 06:01:11 MST 2025 - carnold(a)suse.com
+
+- Update to Xen 4.20.0 pre-release (jsc#PED-8907)
+ xen-4.20.0-testing-src.tar.bz2
+- New Features
+ * On Arm:
+ - Experimental support for Armv8-R.
+ - Support for NXP S32G3 Processors Family and NXP LINFlexD UART driver.
+ - Basic handling for SCMI requests over SMC using Shared Memory, by allowing
+ forwarding the calls to EL3 FW if coming from hwdom.
+ - Support for LLC (Last Level Cache) coloring.
+ * On x86:
+ - xl suspend/resume subcommands.
+ - Support for SRSO_U/S_NO and SRSO_MSR_FIX
+- Changed Features
+ * Fixed blkif protocol specification for sector sizes different than 512b.
+ * The dombuilder in libxenguest no longer un-gzips secondary modules, instead
+ leaving this to the guest kernel to do in guest context.
+ * On x86:
+ - Prefer ACPI reboot over UEFI ResetSystem() run time service call.
+ - Switched the xAPIC flat driver to use physical destination mode for external
+ interrupts instead of logical destination mode.
+- Removed Features
+ * On x86:
+ - Support for running on Xeon Phi processors.
+ - Removed the `ucode=allow-same` command line option.
+ - Removed x2APIC Cluster Mode for external interrupts. x2APIC Physical and
+ Mixed Modes are still available.
+- Dropped patches
+ xsa466.patch
+
+-------------------------------------------------------------------
+Wed Dec 11 11:11:11 UTC 2024 - ohering(a)suse.de
+
+- Move /etc/bash_completion.d/xl back to %_datadir/bash-completion/completions
+
+-------------------------------------------------------------------
+Mon Dec 9 10:13:51 MST 2024 - carnold(a)suse.com
+
+- bsc#1234282 - VUL-0: xen: XSA-466: Xen hypercall page unsafe
+ against speculative attacks
+ xsa466.patch
+
+-------------------------------------------------------------------
Old:
----
xen-4.19.1-testing-src.tar.bz2
New:
----
xen-4.20.0-testing-src.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:31.053713332 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:31.085714656 +0100
@@ -1,7 +1,7 @@
#
# spec file for package xen
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -30,7 +30,7 @@
Name: xen
ExclusiveArch: %ix86 x86_64 aarch64
-%define xen_build_dir xen-4.19.1-testing
+%define xen_build_dir xen-4.20.0-testing
#
%define with_gdbsx 0
%define with_dom0_support 0
@@ -124,12 +124,12 @@
BuildRequires: python-rpm-macros
Provides: installhint(reboot-needed)
-Version: 4.19.1_02
+Version: 4.20.0_02
Release: 0
Summary: Xen Virtualization: Hypervisor (aka VMM aka Microkernel)
License: GPL-2.0-only
Group: System/Kernel
-Source0: xen-4.19.1-testing-src.tar.bz2
+Source0: xen-4.20.0-testing-src.tar.bz2
Source1: stubdom.tar.bz2
Source2: mini-os.tar.bz2
Source9: xen.changes
@@ -512,6 +512,7 @@
DESTDIR=%{buildroot} \
SYSCONFIG_DIR=%{_fillupdir} \
PKG_INSTALLDIR=%{_libdir}/pkgconfig \
+ BASH_COMPLETION_DIR=%{_datadir}/bash-completion/completions \
%{?_smp_mflags} \
install
find %{buildroot} -ls
@@ -940,7 +941,7 @@
rm -rf %{buildroot}/usr/sbin
rm -rf %{buildroot}/etc/xen
rm -rf %{buildroot}/var
-rm -f %{buildroot}/%{_sysconfdir}/bash_completion.d/xl
+rm -f %{buildroot}/%{_datadir}/bash-completion/completions/xl
rm -f %{buildroot}/%{_sysconfdir}/init.d/xen*
rm -f %{buildroot}/%{_bindir}/*trace*
rm -f %{buildroot}/%{_bindir}/vchan-socket-proxy
@@ -1076,7 +1077,7 @@
%exclude %{_unitdir}/%{name}-vcpu-watch.service
%exclude %{_unitdir}/xendomains-wait-disks.service
%config %{with_systemd_modules_load}
-/etc/bash_completion.d/xl
+%{_datadir}/bash-completion/completions/xl
%dir %{_libdir}/python%{pyver}/site-packages/grub
%dir %{_libdir}/python%{pyver}/site-packages/xen
%dir %{_libdir}/python%{pyver}/site-packages/xen/lowlevel
++++++ build-python3-conversion.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:32.193760480 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:32.229761969 +0100
@@ -136,54 +136,4 @@
import re,sys
-Index: xen-4.19.0-testing/tools/misc/xensymoops
-===================================================================
---- xen-4.19.0-testing.orig/tools/misc/xensymoops
-+++ xen-4.19.0-testing/tools/misc/xensymoops
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/python3
-
- # An oops analyser for Xen
- # Usage: xensymoops path-to-xen.s < oops-message
-@@ -43,12 +43,12 @@ def read_oops():
- return (eip_addr, stack_addresses)
-
- def usage():
-- print >> sys.stderr, """Usage: %s path-to-asm < oops-msg
-+ print("""Usage: %s path-to-asm < oops-msg
- The oops message should be fed to the standard input. The
- command-line argument specifies the path to the Xen assembly dump
- produced by \"make debug\". The location of EIP and the backtrace
- will be output to standard output.
-- """ % sys.argv[0]
-+ """ % sys.argv[0], file=sys.stderr)
- sys.exit()
-
- ##### main
-@@ -99,7 +99,7 @@ while True:
-
- # if this address was seen as a potential code address in the backtrace then
- # record it in the backtrace list
-- if stk_addrs.has_key(address):
-+ if address in stk_addrs:
- backtrace.append((stk_addrs[address], address, func))
-
- # if this was the address that EIP...
-@@ -107,12 +107,12 @@ while True:
- eip_func = func
-
-
--print "EIP %s in function %s" % (eip_addr, eip_func)
--print "Backtrace:"
-+print("EIP %s in function %s" % (eip_addr, eip_func))
-+print("Backtrace:")
-
- # sorting will order primarily by the first element of each tuple,
- # i.e. the order in the original oops
- backtrace.sort()
-
- for (i, a, f) in backtrace:
-- print "%s in function %s" % ( a, f )
-+ print("%s in function %s" % ( a, f ))
++++++ libxc-sr-LIBXL_HAVE_DOMAIN_SUSPEND_PROPS.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:32.553775369 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:32.585776693 +0100
@@ -20,7 +20,7 @@
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
-@@ -1850,13 +1850,28 @@ static inline int libxl_retrieve_domain_
+@@ -1855,13 +1855,28 @@ static inline int libxl_retrieve_domain_
libxl_retrieve_domain_configuration_0x041200
#endif
++++++ libxc-sr-abort_if_busy.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:32.725782483 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:32.761783972 +0100
@@ -53,7 +53,7 @@
=item B<remus> [I<OPTIONS>] I<domain-id> I<host>
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
-@@ -1863,6 +1863,7 @@ typedef struct {
+@@ -1868,6 +1868,7 @@ typedef struct {
} libxl_domain_suspend_suse_properties;
#define LIBXL_SUSPEND_DEBUG 1
#define LIBXL_SUSPEND_LIVE 2
++++++ libxc-sr-max_iters.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:32.913790258 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:32.957792078 +0100
@@ -46,7 +46,7 @@
=item B<remus> [I<OPTIONS>] I<domain-id> I<host>
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
-@@ -1858,6 +1858,7 @@ static inline int libxl_retrieve_domain_
+@@ -1863,6 +1863,7 @@ static inline int libxl_retrieve_domain_
typedef struct {
uint32_t flags; /* LIBXL_SUSPEND_* */
++++++ libxc-sr-min_remaining.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:33.077797041 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:33.113798530 +0100
@@ -51,7 +51,7 @@
=item B<remus> [I<OPTIONS>] I<domain-id> I<host>
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
-@@ -1859,6 +1859,7 @@ static inline int libxl_retrieve_domain_
+@@ -1864,6 +1864,7 @@ static inline int libxl_retrieve_domain_
typedef struct {
uint32_t flags; /* LIBXL_SUSPEND_* */
uint32_t max_iters;
++++++ libxc-sr-readv_exact.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:33.333807629 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:33.389809945 +0100
@@ -19,7 +19,7 @@
--- a/tools/libs/ctrl/xc_private.c
+++ b/tools/libs/ctrl/xc_private.c
-@@ -699,8 +699,23 @@ int write_exact(int fd, const void *data
+@@ -633,8 +633,23 @@ int write_exact(int fd, const void *data
#if defined(__MINIOS__)
/*
@@ -44,7 +44,7 @@
int writev_exact(int fd, const struct iovec *iov, int iovcnt)
{
int rc, i;
-@@ -715,6 +730,46 @@ int writev_exact(int fd, const struct io
+@@ -649,6 +664,46 @@ int writev_exact(int fd, const struct io
return 0;
}
#else
@@ -93,7 +93,7 @@
struct iovec *local_iov = NULL;
--- a/tools/libs/ctrl/xc_private.h
+++ b/tools/libs/ctrl/xc_private.h
-@@ -389,6 +389,7 @@ int xc_flush_mmu_updates(xc_interface *x
+@@ -382,6 +382,7 @@ int xc_flush_mmu_updates(xc_interface *x
/* Return 0 on success; -1 on error setting errno. */
int read_exact(int fd, void *data, size_t size); /* EOF => -1, errno=0 */
++++++ libxl.LIBXL_HOTPLUG_TIMEOUT.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:33.609819044 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:33.633820036 +0100
@@ -85,7 +85,7 @@
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
-@@ -1345,6 +1345,7 @@ static void initiate_domain_create(libxl
+@@ -1363,6 +1363,7 @@ static void initiate_domain_create(libxl
* build info around just to know if the domain has a device model or not.
*/
store_libxl_entry(gc, domid, &d_config->b_info);
@@ -294,7 +294,7 @@
/* private */
libxl__ev_time time;
libxl__ev_child child;
-@@ -4892,6 +4895,9 @@ _hidden int userlookup_helper_getpwuid(l
+@@ -4899,6 +4902,9 @@ _hidden int userlookup_helper_getpwuid(l
#endif
++++++ libxl.add-option-to-disable-disk-cache-flushes-in-qdisk.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:33.725823841 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:33.749824833 +0100
@@ -7,10 +7,10 @@
tools/libxl/libxlu_disk_l.l | 1 +
5 files changed, 18 insertions(+), 1 deletion(-)
-Index: xen-4.19.0-testing/docs/man/xl-disk-configuration.5.pod.in
+Index: xen-4.20.0-testing/docs/man/xl-disk-configuration.5.pod.in
===================================================================
---- xen-4.19.0-testing.orig/docs/man/xl-disk-configuration.5.pod.in
-+++ xen-4.19.0-testing/docs/man/xl-disk-configuration.5.pod.in
+--- xen-4.20.0-testing.orig/docs/man/xl-disk-configuration.5.pod.in
++++ xen-4.20.0-testing/docs/man/xl-disk-configuration.5.pod.in
@@ -339,6 +339,32 @@ No
discard
@@ -44,10 +44,10 @@
=back
An advisory setting for the backend driver, specifying whether to
-Index: xen-4.19.0-testing/tools/include/libxl.h
+Index: xen-4.20.0-testing/tools/include/libxl.h
===================================================================
---- xen-4.19.0-testing.orig/tools/include/libxl.h
-+++ xen-4.19.0-testing/tools/include/libxl.h
+--- xen-4.20.0-testing.orig/tools/include/libxl.h
++++ xen-4.20.0-testing/tools/include/libxl.h
@@ -603,6 +603,21 @@
#define LIBXL_HAVE_P9_ADD 1
@@ -70,10 +70,10 @@
* libxl ABI compatibility
*
* The only guarantee which libxl makes regarding ABI compatibility
-Index: xen-4.19.0-testing/tools/libs/light/libxl_disk.c
+Index: xen-4.20.0-testing/tools/libs/light/libxl_disk.c
===================================================================
---- xen-4.19.0-testing.orig/tools/libs/light/libxl_disk.c
-+++ xen-4.19.0-testing/tools/libs/light/libxl_disk.c
+--- xen-4.20.0-testing.orig/tools/libs/light/libxl_disk.c
++++ xen-4.20.0-testing/tools/libs/light/libxl_disk.c
@@ -464,6 +464,8 @@ static void device_disk_add(libxl__egc *
flexarray_append_pair(back, "discard-enable",
libxl_defbool_val(disk->discard_enable) ?
@@ -83,10 +83,10 @@
flexarray_append(back, "specification");
flexarray_append(back, libxl__device_disk_string_of_specification(disk->specification));
if (disk->specification == LIBXL_DISK_SPECIFICATION_VIRTIO) {
-Index: xen-4.19.0-testing/tools/libs/light/libxl_dm.c
+Index: xen-4.20.0-testing/tools/libs/light/libxl_dm.c
===================================================================
---- xen-4.19.0-testing.orig/tools/libs/light/libxl_dm.c
-+++ xen-4.19.0-testing/tools/libs/light/libxl_dm.c
+--- xen-4.20.0-testing.orig/tools/libs/light/libxl_dm.c
++++ xen-4.20.0-testing/tools/libs/light/libxl_dm.c
@@ -1019,14 +1019,27 @@ enum {
LIBXL__COLO_SECONDARY,
};
@@ -164,7 +164,7 @@
break;
default:
abort();
-@@ -1997,8 +2012,8 @@ static int libxl__build_device_model_arg
+@@ -2003,8 +2018,8 @@ static int libxl__build_device_model_arg
return ERROR_INVAL;
}
flexarray_vappend(dm_args, "-drive",
@@ -175,10 +175,10 @@
"-device", GCSPRINTF("ide-hd,bus=ahci0.%d,unit=0,drive=ahcidisk-%d",
disk, disk), NULL);
continue;
-Index: xen-4.19.0-testing/tools/libs/util/libxlu_disk.c
+Index: xen-4.20.0-testing/tools/libs/util/libxlu_disk.c
===================================================================
---- xen-4.19.0-testing.orig/tools/libs/util/libxlu_disk.c
-+++ xen-4.19.0-testing/tools/libs/util/libxlu_disk.c
+--- xen-4.20.0-testing.orig/tools/libs/util/libxlu_disk.c
++++ xen-4.20.0-testing/tools/libs/util/libxlu_disk.c
@@ -78,6 +78,8 @@ int xlu_disk_parse(XLU_Config *cfg,
if (!disk->pdev_path || !strcmp(disk->pdev_path, ""))
disk->format = LIBXL_DISK_FORMAT_EMPTY;
@@ -188,10 +188,10 @@
if (!disk->vdev) {
xlu__disk_err(&dpc,0, "no vdev specified");
-Index: xen-4.19.0-testing/tools/libs/util/libxlu_disk_i.h
+Index: xen-4.20.0-testing/tools/libs/util/libxlu_disk_i.h
===================================================================
---- xen-4.19.0-testing.orig/tools/libs/util/libxlu_disk_i.h
-+++ xen-4.19.0-testing/tools/libs/util/libxlu_disk_i.h
+--- xen-4.20.0-testing.orig/tools/libs/util/libxlu_disk_i.h
++++ xen-4.20.0-testing/tools/libs/util/libxlu_disk_i.h
@@ -10,7 +10,7 @@ typedef struct {
void *scanner;
YY_BUFFER_STATE buf;
@@ -201,10 +201,10 @@
const char *spec;
} DiskParseContext;
-Index: xen-4.19.0-testing/tools/libs/util/libxlu_disk_l.l
+Index: xen-4.20.0-testing/tools/libs/util/libxlu_disk_l.l
===================================================================
---- xen-4.19.0-testing.orig/tools/libs/util/libxlu_disk_l.l
-+++ xen-4.19.0-testing/tools/libs/util/libxlu_disk_l.l
+--- xen-4.20.0-testing.orig/tools/libs/util/libxlu_disk_l.l
++++ xen-4.20.0-testing/tools/libs/util/libxlu_disk_l.l
@@ -216,6 +216,7 @@ colo-port=[^,]*,? { STRIP(','); setcolop
colo-export=[^,]*,? { STRIP(','); SAVESTRING("colo-export", colo_export, FROMEQUALS); }
active-disk=[^,]*,? { STRIP(','); SAVESTRING("active-disk", active_disk, FROMEQUALS); }
++++++ mini-os.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extras/mini-os-remote/Config.mk new/extras/mini-os-remote/Config.mk
--- old/extras/mini-os-remote/Config.mk 2024-12-04 16:30:52.000000000 +0100
+++ new/extras/mini-os-remote/Config.mk 2025-01-06 14:00:36.000000000 +0100
@@ -193,6 +193,15 @@
CONFIG-n += CONFIG_TPM_TIS
CONFIG-n += CONFIG_TPMBACK
CONFIG-n += CONFIG_BALLOON
+CONFIG-n += CONFIG_LIBXENCALL
+CONFIG-n += CONFIG_LIBXENCTRL
+CONFIG-n += CONFIG_LIBXENDEVICEMODEL
+CONFIG-n += CONFIG_LIBXENEVTCHN
+CONFIG-n += CONFIG_LIBXENFOREIGNMEMORY
+CONFIG-n += CONFIG_LIBXENGNTTAB
+CONFIG-n += CONFIG_LIBXENGUEST
+CONFIG-n += CONFIG_LIBXENTOOLCORE
+CONFIG-n += CONFIG_LIBXENTOOLLOG
# Setting CONFIG_USE_XEN_CONSOLE copies all print output to the Xen emergency
# console apart of standard dom0 handled console.
CONFIG-n += CONFIG_USE_XEN_CONSOLE
@@ -201,8 +210,6 @@
else
CONFIG-n += CONFIG_PARAVIRT
endif
-# Support legacy CONFIG_XC value
-CONFIG_XC ?= $(libc)
CONFIG-$(lwip) += CONFIG_LWIP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extras/mini-os-remote/Makefile new/extras/mini-os-remote/Makefile
--- old/extras/mini-os-remote/Makefile 2024-12-04 16:30:52.000000000 +0100
+++ new/extras/mini-os-remote/Makefile 2025-01-06 14:00:36.000000000 +0100
@@ -123,23 +123,39 @@
OBJS := $(filter-out $(OBJ_DIR)/lwip%.o $(LWO), $(OBJS))
ifeq ($(libc),y)
-ifeq ($(CONFIG_XC),y)
+ifeq ($(CONFIG_LIBXENTOOLCORE),y)
APP_LDLIBS += -L$(TOOLCORE_PATH) -whole-archive -lxentoolcore -no-whole-archive
LIBS += $(TOOLCORE_PATH)/libxentoolcore.a
+endif
+ifeq ($(CONFIG_LIBXENTOOLLOG),y)
APP_LDLIBS += -L$(TOOLLOG_PATH) -whole-archive -lxentoollog -no-whole-archive
LIBS += $(TOOLLOG_PATH)/libxentoollog.a
+endif
+ifeq ($(CONFIG_LIBXENEVTCHN),y)
APP_LDLIBS += -L$(EVTCHN_PATH) -whole-archive -lxenevtchn -no-whole-archive
LIBS += $(EVTCHN_PATH)/libxenevtchn.a
+endif
+ifeq ($(CONFIG_LIBXENGNTTAB),y)
APP_LDLIBS += -L$(GNTTAB_PATH) -whole-archive -lxengnttab -no-whole-archive
LIBS += $(GNTTAB_PATH)/libxengnttab.a
+endif
+ifeq ($(CONFIG_LIBXENCALL),y)
APP_LDLIBS += -L$(CALL_PATH) -whole-archive -lxencall -no-whole-archive
LIBS += $(CALL_PATH)/libxencall.a
+endif
+ifeq ($(CONFIG_LIBXENFOREIGNMEMORY),y)
APP_LDLIBS += -L$(FOREIGNMEMORY_PATH) -whole-archive -lxenforeignmemory -no-whole-archive
LIBS += $(FOREIGNMEMORY_PATH)/libxenforeignmemory.a
+endif
+ifeq ($(CONFIG_LIBXENDEVICEMODEL),y)
APP_LDLIBS += -L$(DEVICEMODEL_PATH) -whole-archive -lxendevicemodel -no-whole-archive
LIBS += $(DEVICEMODEL_PATH)/libxendevicemodel.a
+endif
+ifeq ($(CONFIG_LIBXENGUEST),y)
APP_LDLIBS += -L$(GUEST_PATH) -whole-archive -lxenguest -no-whole-archive
LIBS += $(GUEST_PATH)/libxenguest.a
+endif
+ifeq ($(CONFIG_LIBXENCTRL),y)
APP_LDLIBS += -L$(CTRL_PATH) -whole-archive -lxenctrl -no-whole-archive
LIBS += $(CTRL_PATH)/libxenctrl.a
endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extras/mini-os-remote/arch/x86/mm.c new/extras/mini-os-remote/arch/x86/mm.c
--- old/extras/mini-os-remote/arch/x86/mm.c 2024-12-04 16:30:52.000000000 +0100
+++ new/extras/mini-os-remote/arch/x86/mm.c 2025-01-06 14:00:36.000000000 +0100
@@ -126,20 +126,30 @@
}
#endif
+static const struct {
+ unsigned int shift;
+ unsigned int entries;
+ pgentry_t prot;
+} ptdata[PAGETABLE_LEVELS + 1] = {
+ { 0, 0, 0 },
+ { L1_PAGETABLE_SHIFT, L1_PAGETABLE_ENTRIES, L1_PROT },
+ { L2_PAGETABLE_SHIFT, L2_PAGETABLE_ENTRIES, L2_PROT },
+ { L3_PAGETABLE_SHIFT, L3_PAGETABLE_ENTRIES, L3_PROT },
+#if defined(__x86_64__)
+ { L4_PAGETABLE_SHIFT, L4_PAGETABLE_ENTRIES, L4_PROT },
+#endif
+};
+
+static inline unsigned int idx_from_va_lvl(unsigned long va, unsigned int lvl)
+{
+ return (va >> ptdata[lvl].shift) & (ptdata[lvl].entries - 1);
+}
+
/*
* Make pt_pfn a new 'level' page table frame and hook it into the page
* table at offset in previous level MFN (pref_l_mfn). pt_pfn is a guest
* PFN.
*/
-static pgentry_t pt_prot[PAGETABLE_LEVELS] = {
- L1_PROT,
- L2_PROT,
- L3_PROT,
-#if defined(__x86_64__)
- L4_PROT,
-#endif
-};
-
static void new_pt_frame(unsigned long *pt_pfn, unsigned long prev_l_mfn,
unsigned long offset, unsigned long level)
{
@@ -171,7 +181,7 @@
mmu_updates[0].ptr = (tab[l2_table_offset(pt_page)] & PAGE_MASK) +
sizeof(pgentry_t) * l1_table_offset(pt_page);
mmu_updates[0].val = (pgentry_t)pfn_to_mfn(*pt_pfn) << PAGE_SHIFT |
- (pt_prot[level - 1] & ~_PAGE_RW);
+ (ptdata[level].prot & ~_PAGE_RW);
if ( (rc = HYPERVISOR_mmu_update(mmu_updates, 1, NULL, DOMID_SELF)) < 0 )
{
@@ -184,7 +194,7 @@
mmu_updates[0].ptr =
((pgentry_t)prev_l_mfn << PAGE_SHIFT) + sizeof(pgentry_t) * offset;
mmu_updates[0].val = (pgentry_t)pfn_to_mfn(*pt_pfn) << PAGE_SHIFT |
- pt_prot[level];
+ ptdata[level + 1].prot;
if ( (rc = HYPERVISOR_mmu_update(mmu_updates, 1, NULL, DOMID_SELF)) < 0 )
{
@@ -193,12 +203,92 @@
}
#else
tab = mfn_to_virt(prev_l_mfn);
- tab[offset] = (*pt_pfn << PAGE_SHIFT) | pt_prot[level];
+ tab[offset] = (*pt_pfn << PAGE_SHIFT) | ptdata[level + 1].prot;
#endif
*pt_pfn += 1;
}
+#ifdef CONFIG_PARAVIRT
+static mmu_update_t mmu_updates[L1_PAGETABLE_ENTRIES + 1];
+#endif
+
+/*
+ * Walk recursively through all PTEs calling a specified function. The function
+ * is allowed to change the PTE, the walker will follow the new value.
+ * The walk will cover the virtual address range [from_va .. to_va].
+ * The supplied function will be called with the following parameters:
+ * va: base virtual address of the area covered by the current PTE
+ * lvl: page table level of the PTE (1 = lowest level, PAGETABLE_LEVELS =
+ * PTE in page table addressed by %cr3)
+ * is_leaf: true if PTE doesn't address another page table (it is either at
+ * level 1, or invalid, or has its PSE bit set)
+ * pte: address of the PTE
+ * par: parameter, passed to walk_pt() by caller
+ * Return value of func() being non-zero will terminate walk_pt(), walk_pt()
+ * will return that value in this case, zero else.
+ */
+static int walk_pt(unsigned long from_va, unsigned long to_va,
+ int (func)(unsigned long va, unsigned int lvl,
+ bool is_leaf, pgentry_t *pte, void *par),
+ void *par)
+{
+ unsigned int lvl = PAGETABLE_LEVELS;
+ unsigned int ptindex[PAGETABLE_LEVELS + 1];
+ unsigned long va = round_pgdown(from_va);
+ unsigned long va_lvl;
+ pgentry_t *tab[PAGETABLE_LEVELS + 1];
+ pgentry_t *pte;
+ bool is_leaf;
+ int ret;
+
+ /* Start at top level page table. */
+ tab[lvl] = pt_base;
+ ptindex[lvl] = idx_from_va_lvl(va, lvl);
+
+ while ( va < (to_va | (PAGE_SIZE - 1)) )
+ {
+ pte = tab[lvl] + ptindex[lvl];
+ is_leaf = (lvl == L1_FRAME) || (*pte & _PAGE_PSE) ||
+ !(*pte & _PAGE_PRESENT);
+ va_lvl = va & ~((1UL << ptdata[lvl].shift) - 1);
+ ret = func(va_lvl, lvl, is_leaf, pte, par);
+ if ( ret )
+ return ret;
+
+ /* PTE might have been modified by func(), reevaluate leaf state. */
+ is_leaf = (lvl == L1_FRAME) || (*pte & _PAGE_PSE) ||
+ !(*pte & _PAGE_PRESENT);
+
+ if ( is_leaf )
+ {
+ /* Reached a leaf PTE. Advance to next page. */
+ va += 1UL << ptdata[lvl].shift;
+ ptindex[lvl]++;
+
+ /* Check for the need to traverse up again. */
+ while ( ptindex[lvl] == ptdata[lvl].entries )
+ {
+ /* End of virtual address space? */
+ if ( lvl == PAGETABLE_LEVELS )
+ return 0;
+ /* Reached end of current page table, one level up. */
+ lvl++;
+ ptindex[lvl]++;
+ }
+ }
+ else
+ {
+ /* Not a leaf, walk one level down. */
+ lvl--;
+ tab[lvl] = mfn_to_virt(pte_to_mfn(*pte));
+ ptindex[lvl] = idx_from_va_lvl(va, lvl);
+ }
+ }
+
+ return 0;
+}
+
/*
* Build the initial pagetable.
*/
@@ -210,7 +300,6 @@
unsigned long pt_mfn = pfn_to_mfn(virt_to_pfn(pt_base));
unsigned long offset;
#ifdef CONFIG_PARAVIRT
- static mmu_update_t mmu_updates[L1_PAGETABLE_ENTRIES + 1];
int count = 0;
int rc;
#endif
@@ -314,128 +403,108 @@
* Mark portion of the address space read only.
*/
extern struct shared_info shared_info;
-static void set_readonly(void *text, void *etext)
-{
- unsigned long start_address =
- ((unsigned long) text + PAGE_SIZE - 1) & PAGE_MASK;
- unsigned long end_address = (unsigned long) etext;
- pgentry_t *tab = pt_base, page;
- unsigned long mfn = pfn_to_mfn(virt_to_pfn(pt_base));
- unsigned long offset;
- unsigned long page_size = PAGE_SIZE;
+
+struct set_readonly_par {
+ unsigned long etext;
#ifdef CONFIG_PARAVIRT
- static mmu_update_t mmu_updates[L1_PAGETABLE_ENTRIES + 1];
- int count = 0;
- int rc;
+ unsigned int count;
#endif
+};
- printk("setting %p-%p readonly\n", text, etext);
+static int set_readonly_func(unsigned long va, unsigned int lvl, bool is_leaf,
+ pgentry_t *pte, void *par)
+{
+ struct set_readonly_par *ro = par;
- while ( start_address + page_size <= end_address )
- {
- tab = pt_base;
- mfn = pfn_to_mfn(virt_to_pfn(pt_base));
+ if ( !is_leaf )
+ return 0;
-#if defined(__x86_64__)
- offset = l4_table_offset(start_address);
- page = tab[offset];
- mfn = pte_to_mfn(page);
- tab = to_virt(mfn_to_pfn(mfn) << PAGE_SHIFT);
-#endif
- offset = l3_table_offset(start_address);
- page = tab[offset];
- mfn = pte_to_mfn(page);
- tab = to_virt(mfn_to_pfn(mfn) << PAGE_SHIFT);
- offset = l2_table_offset(start_address);
- if ( !(tab[offset] & _PAGE_PSE) )
- {
- page = tab[offset];
- mfn = pte_to_mfn(page);
- tab = to_virt(mfn_to_pfn(mfn) << PAGE_SHIFT);
+ if ( va + (1UL << ptdata[lvl].shift) > ro->etext )
+ return 1;
- offset = l1_table_offset(start_address);
- }
+ if ( va == (unsigned long)&shared_info )
+ {
+ printk("skipped %lx\n", va);
+ return 0;
+ }
- if ( start_address != (unsigned long)&shared_info )
- {
#ifdef CONFIG_PARAVIRT
- mmu_updates[count].ptr =
- ((pgentry_t)mfn << PAGE_SHIFT) + sizeof(pgentry_t) * offset;
- mmu_updates[count].val = tab[offset] & ~_PAGE_RW;
- count++;
+ mmu_updates[ro->count].ptr = virt_to_mach(pte);
+ mmu_updates[ro->count].val = *pte & ~_PAGE_RW;
+ ro->count++;
+
+ if ( ro->count == L1_PAGETABLE_ENTRIES )
+ {
+ if ( HYPERVISOR_mmu_update(mmu_updates, ro->count, NULL,
+ DOMID_SELF) < 0 )
+ BUG();
+ ro->count = 0;
+ }
#else
- tab[offset] &= ~_PAGE_RW;
+ *pte &= ~_PAGE_RW;
#endif
- }
- else
- printk("skipped %lx\n", start_address);
- start_address += page_size;
+ return 0;
+}
#ifdef CONFIG_PARAVIRT
- if ( count == L1_PAGETABLE_ENTRIES ||
- start_address + page_size > end_address )
- {
- rc = HYPERVISOR_mmu_update(mmu_updates, count, NULL, DOMID_SELF);
- if ( rc < 0 )
- {
- printk("ERROR: set_readonly(): PTE could not be updated\n");
- do_exit();
- }
- count = 0;
- }
+static void tlb_flush(void)
+{
+ mmuext_op_t op = { .cmd = MMUEXT_TLB_FLUSH_ALL };
+ int count;
+
+ HYPERVISOR_mmuext_op(&op, 1, &count, DOMID_SELF);
+}
#else
- if ( start_address == (1UL << L2_PAGETABLE_SHIFT) )
- page_size = 1UL << L2_PAGETABLE_SHIFT;
+static void tlb_flush(void)
+{
+ write_cr3((unsigned long)pt_base);
+}
#endif
- }
+
+static void set_readonly(void *text, void *etext)
+{
+ struct set_readonly_par setro = { .etext = (unsigned long)etext };
+ unsigned long start_address = PAGE_ALIGN((unsigned long)text);
+
+ printk("setting %p-%p readonly\n", text, etext);
+ walk_pt(start_address, setro.etext, set_readonly_func, &setro);
#ifdef CONFIG_PARAVIRT
- {
- mmuext_op_t op = {
- .cmd = MMUEXT_TLB_FLUSH_ALL,
- };
- int count;
- HYPERVISOR_mmuext_op(&op, 1, &count, DOMID_SELF);
- }
-#else
- write_cr3((unsigned long)pt_base);
+ if ( setro.count &&
+ HYPERVISOR_mmu_update(mmu_updates, setro.count, NULL, DOMID_SELF) < 0)
+ BUG();
#endif
+
+ tlb_flush();
}
/*
* get the PTE for virtual address va if it exists. Otherwise NULL.
*/
-static pgentry_t *get_pgt(unsigned long va)
+static int get_pgt_func(unsigned long va, unsigned int lvl, bool is_leaf,
+ pgentry_t *pte, void *par)
{
- unsigned long mfn;
- pgentry_t *tab;
- unsigned offset;
+ pgentry_t **result;
- tab = pt_base;
- mfn = virt_to_mfn(pt_base);
+ if ( !(*pte & _PAGE_PRESENT) && lvl > L1_FRAME )
+ return -1;
-#if defined(__x86_64__)
- offset = l4_table_offset(va);
- if ( !(tab[offset] & _PAGE_PRESENT) )
- return NULL;
- mfn = pte_to_mfn(tab[offset]);
- tab = mfn_to_virt(mfn);
-#endif
- offset = l3_table_offset(va);
- if ( !(tab[offset] & _PAGE_PRESENT) )
- return NULL;
- mfn = pte_to_mfn(tab[offset]);
- tab = mfn_to_virt(mfn);
- offset = l2_table_offset(va);
- if ( !(tab[offset] & _PAGE_PRESENT) )
- return NULL;
- if ( tab[offset] & _PAGE_PSE )
- return &tab[offset];
- mfn = pte_to_mfn(tab[offset]);
- tab = mfn_to_virt(mfn);
- offset = l1_table_offset(va);
- return &tab[offset];
+ if ( lvl > L1_FRAME && !(*pte & _PAGE_PSE) )
+ return 0;
+
+ result = par;
+ *result = pte;
+
+ return 0;
+}
+
+static pgentry_t *get_pgt(unsigned long va)
+{
+ pgentry_t *tab = NULL;
+
+ walk_pt(va, va, get_pgt_func, &tab);
+ return tab;
}
@@ -443,57 +512,45 @@
* return a valid PTE for a given virtual address. If PTE does not exist,
* allocate page-table pages.
*/
-pgentry_t *need_pgt(unsigned long va)
+static int need_pgt_func(unsigned long va, unsigned int lvl, bool is_leaf,
+ pgentry_t *pte, void *par)
{
+ pgentry_t **result = par;
unsigned long pt_mfn;
- pgentry_t *tab;
unsigned long pt_pfn;
- unsigned offset;
+ unsigned int idx;
- tab = pt_base;
- pt_mfn = virt_to_mfn(pt_base);
+ if ( !is_leaf )
+ return 0;
-#if defined(__x86_64__)
- offset = l4_table_offset(va);
- if ( !(tab[offset] & _PAGE_PRESENT) )
- {
- pt_pfn = virt_to_pfn(alloc_page());
- if ( !pt_pfn )
- return NULL;
- new_pt_frame(&pt_pfn, pt_mfn, offset, L3_FRAME);
- }
- ASSERT(tab[offset] & _PAGE_PRESENT);
- pt_mfn = pte_to_mfn(tab[offset]);
- tab = mfn_to_virt(pt_mfn);
-#endif
- offset = l3_table_offset(va);
- if ( !(tab[offset] & _PAGE_PRESENT) )
+ if ( lvl == L1_FRAME || (*pte & _PAGE_PRESENT) )
{
- pt_pfn = virt_to_pfn(alloc_page());
- if ( !pt_pfn )
- return NULL;
- new_pt_frame(&pt_pfn, pt_mfn, offset, L2_FRAME);
+ /*
+ * The PTE is not addressing a page table (is_leaf is true). If we are
+ * either at the lowest level or we have a valid large page, we don't
+ * need to allocate a page table.
+ */
+ ASSERT(lvl == L1_FRAME || (*pte & _PAGE_PSE));
+ *result = pte;
+ return 1;
}
- ASSERT(tab[offset] & _PAGE_PRESENT);
- pt_mfn = pte_to_mfn(tab[offset]);
- tab = mfn_to_virt(pt_mfn);
- offset = l2_table_offset(va);
- if ( !(tab[offset] & _PAGE_PRESENT) )
- {
- pt_pfn = virt_to_pfn(alloc_page());
- if ( !pt_pfn )
- return NULL;
- new_pt_frame(&pt_pfn, pt_mfn, offset, L1_FRAME);
- }
- ASSERT(tab[offset] & _PAGE_PRESENT);
- if ( tab[offset] & _PAGE_PSE )
- return &tab[offset];
- pt_mfn = pte_to_mfn(tab[offset]);
- tab = mfn_to_virt(pt_mfn);
+ pt_mfn = virt_to_mfn(pte);
+ pt_pfn = virt_to_pfn(alloc_page());
+ if ( !pt_pfn )
+ return -1;
+ idx = idx_from_va_lvl(va, lvl);
+ new_pt_frame(&pt_pfn, pt_mfn, idx, lvl - 1);
+
+ return 0;
+}
+
+pgentry_t *need_pgt(unsigned long va)
+{
+ pgentry_t *tab = NULL;
- offset = l1_table_offset(va);
- return &tab[offset];
+ walk_pt(va, va, need_pgt_func, &tab);
+ return tab;
}
EXPORT_SYMBOL(need_pgt);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extras/mini-os-remote/arch/x86/sched.c new/extras/mini-os-remote/arch/x86/sched.c
--- old/extras/mini-os-remote/arch/x86/sched.c 2024-12-04 16:30:52.000000000 +0100
+++ new/extras/mini-os-remote/arch/x86/sched.c 2025-01-06 14:00:36.000000000 +0100
@@ -60,16 +60,10 @@
unsigned long *bottom = (unsigned long *)(thread->stack + STACK_SIZE);
unsigned long *pointer = (unsigned long *)thread->sp;
int count;
- if(thread == current)
- {
-#ifdef __i386__
- asm("movl %%esp,%0"
- : "=r"(pointer));
-#else
- asm("movq %%rsp,%0"
- : "=r"(pointer));
-#endif
- }
+
+ if ( thread == current )
+ asm ( "mov %%"ASM_SP",%0" : "=r" (pointer) );
+
printk("The stack for \"%s\"\n", thread->name);
for(count = 0; count < 25 && pointer < bottom; count ++)
{
@@ -119,20 +113,12 @@
void run_idle_thread(void)
{
- /* Switch stacks and run the thread */
-#if defined(__i386__)
- __asm__ __volatile__("mov %0,%%esp\n\t"
- "push %1\n\t"
- "ret"
- :"=m" (idle_thread->sp)
- :"m" (idle_thread->ip));
-#elif defined(__x86_64__)
- __asm__ __volatile__("mov %0,%%rsp\n\t"
- "push %1\n\t"
- "ret"
- :"=m" (idle_thread->sp)
- :"m" (idle_thread->ip));
-#endif
+ /* Switch stacks and run the thread */
+ asm volatile ( "mov %[sp], %%"ASM_SP"\n\t"
+ "jmp *%[ip]\n\t"
+ :
+ : [sp] "m" (idle_thread->sp),
+ [ip] "m" (idle_thread->ip) );
}
unsigned long __local_irq_save(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extras/mini-os-remote/arch/x86/time.c new/extras/mini-os-remote/arch/x86/time.c
--- old/extras/mini-os-remote/arch/x86/time.c 2024-12-04 16:30:52.000000000 +0100
+++ new/extras/mini-os-remote/arch/x86/time.c 2025-01-06 14:00:36.000000000 +0100
@@ -1,7 +1,7 @@
/* -*- Mode:C; c-basic-offset:4; tab-width:4 -*-
****************************************************************************
* (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
- * (C) 2002-2003 - Keir Fraser - University of Cambridge
+ * (C) 2002-2003 - Keir Fraser - University of Cambridge
* (C) 2005 - Grzegorz Milos - Intel Research Cambridge
* (C) 2006 - Robert Kaiser - FH Wiesbaden
****************************************************************************
@@ -18,20 +18,19 @@
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
- *
+ *
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
-
#include <mini-os/os.h>
#include <mini-os/traps.h>
#include <mini-os/types.h>
@@ -45,45 +44,16 @@
*************************************************************************/
/* These are peridically updated in shared_info, and then copied here. */
-struct shadow_time_info {
- uint64_t tsc_timestamp; /* TSC at last update of time vals. */
- uint64_t system_timestamp; /* Time, in nanosecs, since boot. */
- uint32_t tsc_to_nsec_mul;
- uint32_t tsc_to_usec_mul;
- int tsc_shift;
- uint32_t version;
-};
static struct timespec shadow_ts;
static uint32_t shadow_ts_version;
-static struct shadow_time_info shadow;
-
-
-#ifndef rmb
-#define rmb() __asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory")
-#endif
-
-#define HANDLE_USEC_OVERFLOW(_tv) \
- do { \
- while ( (_tv)->tv_usec >= 1000000 ) \
- { \
- (_tv)->tv_usec -= 1000000; \
- (_tv)->tv_sec++; \
- } \
- } while ( 0 )
-
-static inline int time_values_up_to_date(void)
-{
- struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
-
- return (shadow.version == src->version);
-}
+static struct vcpu_time_info shadow;
static inline int wc_values_up_to_date(void)
{
- shared_info_t *s= HYPERVISOR_shared_info;
+ shared_info_t *s = HYPERVISOR_shared_info;
- return (shadow_ts_version == s->wc_version);
+ return shadow_ts_version == s->wc_version;
}
/*
@@ -92,109 +62,90 @@
*/
static inline uint64_t scale_delta(uint64_t delta, uint32_t mul_frac, int shift)
{
- uint64_t product;
+ uint64_t product;
#ifdef __i386__
- uint32_t tmp1, tmp2;
+ uint32_t tmp1, tmp2;
#endif
- if ( shift < 0 )
- delta >>= -shift;
- else
- delta <<= shift;
+ if ( shift < 0 )
+ delta >>= -shift;
+ else
+ delta <<= shift;
#ifdef __i386__
- __asm__ (
- "mul %5 ; "
- "mov %4,%%eax ; "
- "mov %%edx,%4 ; "
- "mul %5 ; "
- "add %4,%%eax ; "
- "xor %5,%5 ; "
- "adc %5,%%edx ; "
- : "=A" (product), "=r" (tmp1), "=r" (tmp2)
- : "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), "2" (mul_frac) );
+ __asm__ (
+ "mul %5 ; "
+ "mov %4,%%eax ; "
+ "mov %%edx,%4 ; "
+ "mul %5 ; "
+ "add %4,%%eax ; "
+ "xor %5,%5 ; "
+ "adc %5,%%edx ; "
+ : "=A" (product), "=r" (tmp1), "=r" (tmp2)
+ : "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), "2" (mul_frac) );
#else
- __asm__ (
- "mul %%rdx ; shrd $32,%%rdx,%%rax"
- : "=a" (product) : "0" (delta), "d" ((uint64_t)mul_frac) );
+ __asm__ (
+ "mul %%rdx ; shrd $32,%%rdx,%%rax"
+ : "=a" (product) : "0" (delta), "d" ((uint64_t)mul_frac) );
#endif
- return product;
+ return product;
}
-
static unsigned long get_nsec_offset(void)
{
- uint64_t now, delta;
- rdtscll(now);
- delta = now - shadow.tsc_timestamp;
- return scale_delta(delta, shadow.tsc_to_nsec_mul, shadow.tsc_shift);
-}
-
-
-static void get_time_values_from_xen(void)
-{
- struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
+ uint64_t now, delta;
- do {
- shadow.version = src->version;
- rmb();
- shadow.tsc_timestamp = src->tsc_timestamp;
- shadow.system_timestamp = src->system_time;
- shadow.tsc_to_nsec_mul = src->tsc_to_system_mul;
- shadow.tsc_shift = src->tsc_shift;
- rmb();
- }
- while ((src->version & 1) | (shadow.version ^ src->version));
+ rdtscll(now);
+ delta = now - shadow.tsc_timestamp;
- shadow.tsc_to_usec_mul = shadow.tsc_to_nsec_mul / 1000;
+ return scale_delta(delta, shadow.tsc_to_system_mul, shadow.tsc_shift);
}
-
-
-
-/* monotonic_clock(): returns # of nanoseconds passed since time_init()
- * Note: This function is required to return accurate
- * time even in the absence of multiple timer ticks.
+/*
+ * monotonic_clock(): returns # of nanoseconds passed since time_init()
+ * Note: This function is required to return accurate
+ * time even in the absence of multiple timer ticks.
*/
uint64_t monotonic_clock(void)
{
- uint64_t time;
- uint32_t local_time_version;
+ struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
- do {
- local_time_version = shadow.version;
- rmb();
- time = shadow.system_timestamp + get_nsec_offset();
- if (!time_values_up_to_date())
- get_time_values_from_xen();
- rmb();
- } while (local_time_version != shadow.version);
+ if ( shadow.version != src->version )
+ {
+ do {
+ shadow.version = src->version;
+ rmb();
+ shadow.tsc_timestamp = src->tsc_timestamp;
+ shadow.system_time = src->system_time;
+ shadow.tsc_to_system_mul = src->tsc_to_system_mul;
+ shadow.tsc_shift = src->tsc_shift;
+ rmb();
+ } while ( (src->version & 1) || (shadow.version != src->version) );
+ }
- return time;
+ return shadow.system_time + get_nsec_offset();
}
static void update_wallclock(void)
{
- shared_info_t *s = HYPERVISOR_shared_info;
+ shared_info_t *s = HYPERVISOR_shared_info;
- do {
- shadow_ts_version = s->wc_version;
- rmb();
- shadow_ts.tv_sec = s->wc_sec;
- shadow_ts.tv_nsec = s->wc_nsec;
- rmb();
- }
- while ((s->wc_version & 1) | (shadow_ts_version ^ s->wc_version));
+ do {
+ shadow_ts_version = s->wc_version;
+ rmb();
+ shadow_ts.tv_sec = s->wc_sec;
+ shadow_ts.tv_nsec = s->wc_nsec;
+ rmb();
+ } while ( (s->wc_version & 1) | (shadow_ts_version ^ s->wc_version) );
}
-
int gettimeofday(struct timeval *tv, void *tz)
{
uint64_t nsec = monotonic_clock();
- if (!wc_values_up_to_date())
- update_wallclock();
+ if ( !wc_values_up_to_date() )
+ update_wallclock();
nsec += shadow_ts.tv_nsec;
@@ -209,7 +160,7 @@
void block_domain(s_time_t until)
{
ASSERT(irqs_disabled());
- if(monotonic_clock() < until)
+ if ( monotonic_clock() < until )
{
HYPERVISOR_set_timer_op(until);
#ifdef CONFIG_PARAVIRT
@@ -228,9 +179,8 @@
HYPERVISOR_set_timer_op(monotonic_clock() + MILLISECS(1));
}
-
-
static evtchn_port_t port;
+
void init_time(void)
{
port = bind_virq(VIRQ_TIMER, &timer_handler, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extras/mini-os-remote/include/lib.h new/extras/mini-os-remote/include/lib.h
--- old/extras/mini-os-remote/include/lib.h 2024-12-04 16:30:52.000000000 +0100
+++ new/extras/mini-os-remote/include/lib.h 2025-01-06 14:00:36.000000000 +0100
@@ -152,8 +152,10 @@
#define BUG_ON(x) ASSERT(!(x))
+#ifdef CONFIG_TEST
/* Consistency check as much as possible. */
void sanity_check(void);
+#endif
/* Get own domid. */
domid_t get_domid(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extras/mini-os-remote/include/x86/os.h new/extras/mini-os-remote/include/x86/os.h
--- old/extras/mini-os-remote/include/x86/os.h 2024-12-04 16:30:52.000000000 +0100
+++ new/extras/mini-os-remote/include/x86/os.h 2025-01-06 14:00:36.000000000 +0100
@@ -61,6 +61,16 @@
#define TRAP_deferred_nmi 31
#define TRAP_xen_callback 32
+#if defined(__i386__)
+#define __SZ "l"
+#define __REG "e"
+#else
+#define __SZ "q"
+#define __REG "r"
+#endif
+
+#define ASM_SP __REG"sp"
+
/* Everything below this point is not included by assembler (.S) files. */
#ifndef __ASSEMBLY__
@@ -141,14 +151,6 @@
#else
-#if defined(__i386__)
-#define __SZ "l"
-#define __REG "e"
-#else
-#define __SZ "q"
-#define __REG "r"
-#endif
-
#define __cli() asm volatile ( "cli" : : : "memory" )
#define __sti() asm volatile ( "sti" : : : "memory" )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extras/mini-os-remote/mm.c new/extras/mini-os-remote/mm.c
--- old/extras/mini-os-remote/mm.c 2024-12-04 16:30:52.000000000 +0100
+++ new/extras/mini-os-remote/mm.c 2025-01-06 14:00:36.000000000 +0100
@@ -1,4 +1,4 @@
-/*
+/*
****************************************************************************
* (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
* (C) 2005 - Grzegorz Milos - Intel Research Cambridge
@@ -7,9 +7,9 @@
* File: mm.c
* Author: Rolf Neugebauer (neugebar(a)dcs.gla.ac.uk)
* Changes: Grzegorz Milos
- *
+ *
* Date: Aug 2003, chages Aug 2005
- *
+ *
* Environment: Xen Minimal OS
* Description: memory management related functions
* contains buddy page allocator from Xen.
@@ -21,16 +21,16 @@
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
- *
+ *
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
@@ -45,7 +45,7 @@
#include <mini-os/xmalloc.h>
#include <mini-os/e820.h>
-/*********************
+/*
* ALLOCATION BITMAP
* One bit per page of memory. Bit set => page is allocated.
*/
@@ -55,7 +55,7 @@
#define PAGES_PER_MAPWORD (sizeof(unsigned long) * 8)
-#define allocated_in_map(_pn) \
+#define allocated_in_map(_pn) \
(mm_alloc_bitmap[(_pn) / PAGES_PER_MAPWORD] & \
(1UL << ((_pn) & (PAGES_PER_MAPWORD - 1))))
@@ -63,8 +63,8 @@
/*
* Hint regarding bitwise arithmetic in map_{alloc,free}:
- * -(1<<n) sets all bits >= n.
- * (1<<n)-1 sets all bits < n.
+ * -(1 << n) sets all bits >= n.
+ * (1 << n) - 1 sets all bits < n.
* Variable names in map_{alloc,free}:
* *_idx == Index into `mm_alloc_bitmap' array.
* *_off == Bit offset within an element of the `mm_alloc_bitmap' array.
@@ -75,72 +75,80 @@
unsigned long start_off, end_off, curr_idx, end_idx;
curr_idx = first_page / PAGES_PER_MAPWORD;
- start_off = first_page & (PAGES_PER_MAPWORD-1);
+ start_off = first_page & (PAGES_PER_MAPWORD - 1);
end_idx = (first_page + nr_pages) / PAGES_PER_MAPWORD;
- end_off = (first_page + nr_pages) & (PAGES_PER_MAPWORD-1);
+ end_off = (first_page + nr_pages) & (PAGES_PER_MAPWORD - 1);
if ( curr_idx == end_idx )
{
- mm_alloc_bitmap[curr_idx] |= ((1UL<<end_off)-1) & -(1UL<<start_off);
+ mm_alloc_bitmap[curr_idx] |= ((1UL << end_off) - 1) &
+ -(1UL << start_off);
}
- else
+ else
{
- mm_alloc_bitmap[curr_idx] |= -(1UL<<start_off);
- while ( ++curr_idx < end_idx ) mm_alloc_bitmap[curr_idx] = ~0UL;
- mm_alloc_bitmap[curr_idx] |= (1UL<<end_off)-1;
+ mm_alloc_bitmap[curr_idx] |= -(1UL << start_off);
+ while ( ++curr_idx < end_idx )
+ mm_alloc_bitmap[curr_idx] = ~0UL;
+ mm_alloc_bitmap[curr_idx] |= (1UL << end_off) - 1;
}
nr_free_pages -= nr_pages;
}
-
static void map_free(unsigned long first_page, unsigned long nr_pages)
{
unsigned long start_off, end_off, curr_idx, end_idx;
curr_idx = first_page / PAGES_PER_MAPWORD;
- start_off = first_page & (PAGES_PER_MAPWORD-1);
+ start_off = first_page & (PAGES_PER_MAPWORD - 1);
end_idx = (first_page + nr_pages) / PAGES_PER_MAPWORD;
- end_off = (first_page + nr_pages) & (PAGES_PER_MAPWORD-1);
+ end_off = (first_page + nr_pages) & (PAGES_PER_MAPWORD - 1);
nr_free_pages += nr_pages;
if ( curr_idx == end_idx )
{
- mm_alloc_bitmap[curr_idx] &= -(1UL<<end_off) | ((1UL<<start_off)-1);
+ mm_alloc_bitmap[curr_idx] &= -(1UL << end_off) |
+ ((1UL << start_off) - 1);
}
- else
+ else
{
- mm_alloc_bitmap[curr_idx] &= (1UL<<start_off)-1;
- while ( ++curr_idx != end_idx ) mm_alloc_bitmap[curr_idx] = 0;
- mm_alloc_bitmap[curr_idx] &= -(1UL<<end_off);
+ mm_alloc_bitmap[curr_idx] &= (1UL << start_off) - 1;
+ while ( ++curr_idx != end_idx )
+ mm_alloc_bitmap[curr_idx] = 0;
+ mm_alloc_bitmap[curr_idx] &= -(1UL << end_off);
}
}
-
-
-/*************************
- * BINARY BUDDY ALLOCATOR
- */
+/* BINARY BUDDY ALLOCATOR */
typedef struct chunk_head_st chunk_head_t;
-typedef struct chunk_tail_st chunk_tail_t;
struct chunk_head_st {
- chunk_head_t *next;
- chunk_head_t **pprev;
- int level;
-};
-
-struct chunk_tail_st {
- int level;
+ chunk_head_t *next;
+ chunk_head_t *prev;
+ unsigned int level;
};
/* Linked lists of free chunks of different powers-of-two in size. */
-#define FREELIST_SIZE ((sizeof(void*)<<3)-PAGE_SHIFT)
-static chunk_head_t *free_head[FREELIST_SIZE];
-static chunk_head_t free_tail[FREELIST_SIZE];
-#define FREELIST_EMPTY(_l) ((_l)->next == NULL)
+#define FREELIST_SIZE ((sizeof(void *) << 3) - PAGE_SHIFT)
+static chunk_head_t free_list[FREELIST_SIZE];
+#define FREELIST_EMPTY(_l) ((_l)->level == FREELIST_SIZE)
+
+static void enqueue_elem(chunk_head_t *elem, unsigned int level)
+{
+ elem->level = level;
+ elem->next = free_list[level].next;
+ elem->prev = &free_list[level];
+ elem->next->prev = elem;
+ free_list[level].next = elem;
+}
+
+static void dequeue_elem(chunk_head_t *elem)
+{
+ elem->prev->next = elem->next;
+ elem->next->prev = elem->prev;
+}
/*
* Initialise allocator, placing addresses [@min,@max] in free pool.
@@ -152,25 +160,24 @@
unsigned long range;
unsigned long r_min, r_max;
chunk_head_t *ch;
- chunk_tail_t *ct;
printk("MM: Initialise page allocator for %lx(%lx)-%lx(%lx)\n",
(u_long)to_virt(min), min, (u_long)to_virt(max), max);
for ( i = 0; i < FREELIST_SIZE; i++ )
{
- free_head[i] = &free_tail[i];
- free_tail[i].pprev = &free_head[i];
- free_tail[i].next = NULL;
+ free_list[i].next = &free_list[i];
+ free_list[i].prev = &free_list[i];
+ free_list[i].level = FREELIST_SIZE;
}
- min = round_pgup (min);
+ min = round_pgup(min);
max = round_pgdown(max);
/* Allocate space for the allocation bitmap. */
- mm_alloc_bitmap_size = (max + 1) >> (PAGE_SHIFT + 3);
- mm_alloc_bitmap_size = round_pgup(mm_alloc_bitmap_size);
+ mm_alloc_bitmap_size = (max + 1) >> (PAGE_SHIFT + 3);
+ mm_alloc_bitmap_size = round_pgup(mm_alloc_bitmap_size);
mm_alloc_bitmap = (unsigned long *)to_virt(min);
- min += mm_alloc_bitmap_size;
+ min += mm_alloc_bitmap_size;
/* All allocated by default. */
memset(mm_alloc_bitmap, ~0, mm_alloc_bitmap_size);
@@ -208,74 +215,61 @@
* must not be bigger than remaining range.
*/
for ( i = PAGE_SHIFT; (1UL << (i + 1)) <= range; i++ )
- if ( r_min & (1UL << i) ) break;
+ {
+ if ( r_min & (1UL << i) )
+ break;
+ }
ch = (chunk_head_t *)r_min;
r_min += 1UL << i;
range -= 1UL << i;
- ct = (chunk_tail_t *)r_min - 1;
- i -= PAGE_SHIFT;
- ch->level = i;
- ch->next = free_head[i];
- ch->pprev = &free_head[i];
- ch->next->pprev = &ch->next;
- free_head[i] = ch;
- ct->level = i;
+ enqueue_elem(ch, i - PAGE_SHIFT);
}
}
mm_alloc_bitmap_remap();
}
-
/* Allocate 2^@order contiguous pages. Returns a VIRTUAL address. */
unsigned long alloc_pages(int order)
{
int i;
chunk_head_t *alloc_ch, *spare_ch;
- chunk_tail_t *spare_ct;
if ( !chk_free_pages(1UL << order) )
goto no_memory;
/* Find smallest order which can satisfy the request. */
- for ( i = order; i < FREELIST_SIZE; i++ ) {
- if ( !FREELIST_EMPTY(free_head[i]) )
- break;
+ for ( i = order; i < FREELIST_SIZE; i++ )
+ {
+ if ( !FREELIST_EMPTY(free_list[i].next) )
+ break;
}
- if ( i == FREELIST_SIZE ) goto no_memory;
-
+ if ( i >= FREELIST_SIZE )
+ goto no_memory;
+
/* Unlink a chunk. */
- alloc_ch = free_head[i];
- free_head[i] = alloc_ch->next;
- alloc_ch->next->pprev = alloc_ch->pprev;
+ alloc_ch = free_list[i].next;
+ dequeue_elem(alloc_ch);
/* We may have to break the chunk a number of times. */
while ( i != order )
{
/* Split into two equal parts. */
i--;
- spare_ch = (chunk_head_t *)((char *)alloc_ch + (1UL<<(i+PAGE_SHIFT)));
- spare_ct = (chunk_tail_t *)((char *)spare_ch + (1UL<<(i+PAGE_SHIFT)))-1;
+ spare_ch = (chunk_head_t *)((char *)alloc_ch +
+ (1UL << (i + PAGE_SHIFT)));
/* Create new header for spare chunk. */
- spare_ch->level = i;
- spare_ch->next = free_head[i];
- spare_ch->pprev = &free_head[i];
- spare_ct->level = i;
-
- /* Link in the spare chunk. */
- spare_ch->next->pprev = &spare_ch->next;
- free_head[i] = spare_ch;
+ enqueue_elem(spare_ch, i);
}
-
- map_alloc(PHYS_PFN(to_phys(alloc_ch)), 1UL<<order);
- return((unsigned long)alloc_ch);
+ map_alloc(PHYS_PFN(to_phys(alloc_ch)), 1UL << order);
- no_memory:
+ return (unsigned long)alloc_ch;
+ no_memory:
printk("Cannot handle page request order %d!\n", order);
return 0;
@@ -285,57 +279,45 @@
void free_pages(void *pointer, int order)
{
chunk_head_t *freed_ch, *to_merge_ch;
- chunk_tail_t *freed_ct;
unsigned long mask;
-
+
/* First free the chunk */
map_free(virt_to_pfn(pointer), 1UL << order);
-
+
/* Create free chunk */
freed_ch = (chunk_head_t *)pointer;
- freed_ct = (chunk_tail_t *)((char *)pointer + (1UL<<(order + PAGE_SHIFT)))-1;
-
+
/* Now, possibly we can conseal chunks together */
- while(order < FREELIST_SIZE)
+ while ( order < FREELIST_SIZE )
{
mask = 1UL << (order + PAGE_SHIFT);
- if((unsigned long)freed_ch & mask)
+ if ( (unsigned long)freed_ch & mask )
{
to_merge_ch = (chunk_head_t *)((char *)freed_ch - mask);
- if(allocated_in_map(virt_to_pfn(to_merge_ch)) ||
- to_merge_ch->level != order)
+ if ( allocated_in_map(virt_to_pfn(to_merge_ch)) ||
+ to_merge_ch->level != order )
break;
-
+
/* Merge with predecessor */
- freed_ch = to_merge_ch;
+ freed_ch = to_merge_ch;
}
- else
+ else
{
to_merge_ch = (chunk_head_t *)((char *)freed_ch + mask);
- if(allocated_in_map(virt_to_pfn(to_merge_ch)) ||
- to_merge_ch->level != order)
+ if ( allocated_in_map(virt_to_pfn(to_merge_ch)) ||
+ to_merge_ch->level != order )
break;
-
- /* Merge with successor */
- freed_ct = (chunk_tail_t *)((char *)to_merge_ch + mask) - 1;
}
-
- /* We are commited to merging, unlink the chunk */
- *(to_merge_ch->pprev) = to_merge_ch->next;
- to_merge_ch->next->pprev = to_merge_ch->pprev;
-
+
+ /* We are committed to merging, unlink the chunk */
+ dequeue_elem(to_merge_ch);
+
order++;
}
/* Link the new chunk */
- freed_ch->level = order;
- freed_ch->next = free_head[order];
- freed_ch->pprev = &free_head[order];
- freed_ct->level = order;
-
- freed_ch->next->pprev = &freed_ch->next;
- free_head[order] = freed_ch;
-
+ enqueue_elem(freed_ch, order);
+
}
EXPORT_SYMBOL(free_pages);
@@ -347,6 +329,7 @@
reservation.nr_extents = n;
reservation.extent_order = 0;
reservation.domid = DOMID_SELF;
+
return HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation);
}
@@ -362,16 +345,15 @@
unsigned long old_brk = brk;
unsigned long new_brk = old_brk + increment;
- if (new_brk > heap_end) {
- printk("Heap exhausted: %lx + %lx = %p > %p\n",
- old_brk,
- (unsigned long) increment,
- (void *) new_brk,
- (void *) heap_end);
- return NULL;
+ if ( new_brk > heap_end )
+ {
+ printk("Heap exhausted: %lx + %lx = %p > %p\n", old_brk,
+ (unsigned long) increment, (void *)new_brk, (void *)heap_end);
+ return NULL;
}
-
- if (new_brk > heap_mapped) {
+
+ if ( new_brk > heap_mapped )
+ {
unsigned long n = (new_brk - heap_mapped + PAGE_SIZE - 1) / PAGE_SIZE;
if ( !chk_free_pages(n) )
@@ -386,16 +368,13 @@
brk = new_brk;
- return (void *) old_brk;
+ return (void *)old_brk;
}
EXPORT_SYMBOL(sbrk);
#endif
-
-
void init_mm(void)
{
-
unsigned long start_pfn, max_pfn;
printk("MM: Init\n");
@@ -403,14 +382,12 @@
arch_init_mm(&start_pfn, &max_pfn);
get_max_pages();
- /*
- * now we can initialise the page allocator
- */
+ /* Now we can initialise the page allocator. */
init_page_allocator(PFN_PHYS(start_pfn), PFN_PHYS(max_pfn));
printk("MM: done\n");
arch_init_p2m(max_pfn);
-
+
arch_init_demand_mapping_area();
}
@@ -418,19 +395,20 @@
{
}
+#ifdef CONFIG_TEST
void sanity_check(void)
{
int x;
chunk_head_t *head;
- for (x = 0; x < FREELIST_SIZE; x++) {
- for (head = free_head[x]; !FREELIST_EMPTY(head); head = head->next) {
+ for ( x = 0; x < FREELIST_SIZE; x++ )
+ {
+ for ( head = free_list[x].next; !FREELIST_EMPTY(head);
+ head = head->next )
+ {
ASSERT(!allocated_in_map(virt_to_pfn(head)));
- if (head->next)
- ASSERT(head->next->pprev == &head->next);
- }
- if (free_head[x]) {
- ASSERT(free_head[x]->pprev == &free_head[x]);
+ ASSERT(head->next->prev == head);
}
}
}
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extras/mini-os-remote/test.c new/extras/mini-os-remote/test.c
--- old/extras/mini-os-remote/test.c 2024-12-04 16:30:52.000000000 +0100
+++ new/extras/mini-os-remote/test.c 2025-01-06 14:00:36.000000000 +0100
@@ -185,6 +185,7 @@
{
gettimeofday(&tv, NULL);
printk("T(s=%ld us=%ld)\n", tv.tv_sec, tv.tv_usec);
+ sanity_check();
msleep(1000);
}
}
++++++ stubdom.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/xen/stubdom.tar.bz2 /work/SRC/openSUSE:Factory/.xen.new.1881/stubdom.tar.bz2 differ: char 11, line 1
++++++ x86-ioapic-ack-default.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:34.949874463 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:34.973875456 +0100
@@ -2,7 +2,7 @@
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
-@@ -2136,7 +2136,10 @@ void __init setup_IO_APIC(void)
+@@ -2152,7 +2152,10 @@ void __init setup_IO_APIC(void)
io_apic_irqs = ~PIC_IRQS;
printk("ENABLING IO-APIC IRQs\n");
++++++ xen-4.19.1-testing-src.tar.bz2 -> xen-4.20.0-testing-src.tar.bz2 ++++++
++++ 58754 lines of diff (skipped)
++++++ xen-arch-kconfig-nr_cpus.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:37.745990100 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:37.749990266 +0100
@@ -1,14 +1,14 @@
-Index: xen-4.19.0-testing/xen/arch/Kconfig
+Index: xen-4.20.0-testing/xen/arch/Kconfig
===================================================================
---- xen-4.19.0-testing.orig/xen/arch/Kconfig
-+++ xen-4.19.0-testing/xen/arch/Kconfig
-@@ -7,7 +7,7 @@ config PHYS_ADDR_T_32
- config NR_CPUS
+--- xen-4.20.0-testing.orig/xen/arch/Kconfig
++++ xen-4.20.0-testing/xen/arch/Kconfig
+@@ -8,7 +8,7 @@ config NR_CPUS
int "Maximum number of CPUs"
+ range 1 1 if ARM && MPU
range 1 16383
- default "256" if X86
+ default "1024" if X86
+ default "1" if ARM && MPU
default "8" if ARM && RCAR3
default "4" if ARM && QEMU
- default "4" if ARM && MPSOC
++++++ xen.bug1026236.suse_vtsc_tolerance.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:37.785991754 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:37.789991920 +0100
@@ -20,7 +20,7 @@
unsigned long __read_mostly cpu_khz; /* CPU clock frequency in kHz. */
DEFINE_SPINLOCK(rtc_lock);
unsigned long pit0_ticks;
-@@ -2797,6 +2800,8 @@ int tsc_set_info(struct domain *d,
+@@ -2887,6 +2890,8 @@ int tsc_set_info(struct domain *d,
switch ( tsc_mode )
{
@@ -29,7 +29,7 @@
case XEN_CPUID_TSC_MODE_DEFAULT:
case XEN_CPUID_TSC_MODE_ALWAYS_EMULATE:
d->arch.vtsc_offset = get_s_time() - elapsed_nsec;
-@@ -2810,8 +2815,25 @@ int tsc_set_info(struct domain *d,
+@@ -2900,8 +2905,25 @@ int tsc_set_info(struct domain *d,
* When a guest is created, gtsc_khz is passed in as zero, making
* d->arch.tsc_khz == cpu_khz. Thus no need to check incarnation.
*/
++++++ xen.libxl.dmmd.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:37.801992416 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:37.805992582 +0100
@@ -72,9 +72,9 @@
+}
+
static int libxl__build_device_model_args_new(libxl__gc *gc,
- const char *dm, int guest_domid,
- const libxl_domain_config *guest_config,
-@@ -1885,9 +1909,11 @@ static int libxl__build_device_model_arg
+ const char *dm, int guest_domid,
+ const libxl_domain_config *guest_config,
+@@ -1891,9 +1915,11 @@ static int libxl__build_device_model_arg
libxl__device_disk_dev_number(disks[i].vdev, &disk, &part);
const char *format;
char *drive;
++++++ xl-save-pc.patch ++++++
--- /var/tmp/diff_new_pack.gLbPbJ/_old 2025-01-07 20:50:37.933997875 +0100
+++ /var/tmp/diff_new_pack.gLbPbJ/_new 2025-01-07 20:50:37.937998041 +0100
@@ -40,8 +40,8 @@
install: all
--- a/tools/xl/xl.h
+++ b/tools/xl/xl.h
-@@ -303,6 +303,7 @@ typedef enum {
- DOMAIN_RESTART_SOFT_RESET, /* Soft reset should be performed */
+@@ -306,6 +306,7 @@ typedef enum {
+ DOMAIN_RESTART_SUSPENDED, /* Domain suspended - keep looping */
} domain_restart_type;
+#define XL_SAVE_PAUSE_CHECKPOINT "suse-xl-save-pc"
@@ -102,7 +102,7 @@
#include <libxl.h>
#include <libxl_utils.h>
#include <libxlutil.h>
-@@ -668,6 +669,10 @@ int create_domain(struct domain_create *
+@@ -706,6 +707,10 @@ int create_domain(struct domain_create *
int migrate_fd = dom_info->migrate_fd;
bool config_in_json;
@@ -113,7 +113,7 @@
int i;
int need_daemon = daemonize;
int ret, rc;
-@@ -1034,6 +1039,24 @@ start:
+@@ -1073,6 +1078,24 @@ start:
ret = domain_wait_event(domid, &event);
if (ret) goto out;
@@ -138,7 +138,7 @@
switch (event->type) {
case LIBXL_EVENT_TYPE_DOMAIN_SHUTDOWN:
-@@ -1095,14 +1118,39 @@ start:
+@@ -1134,10 +1157,34 @@ start:
goto start;
case DOMAIN_RESTART_NONE:
@@ -171,11 +171,6 @@
goto out;
+ }
- default:
- abort();
- }
-+ break;
-
- case LIBXL_EVENT_TYPE_DOMAIN_DEATH:
- LOG("Domain %u has been destroyed.", domid);
+ case DOMAIN_RESTART_SUSPENDED:
+ LOG("Continue waiting for domain %u", domid);
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package uasm for openSUSE:Factory checked in at 2025-01-07 20:50:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/uasm (Old)
and /work/SRC/openSUSE:Factory/.uasm.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "uasm"
Tue Jan 7 20:50:11 2025 rev:3 rq:1235214 version:2.57r
Changes:
--------
--- /work/SRC/openSUSE:Factory/uasm/uasm.changes 2024-07-17 15:14:16.812163703 +0200
+++ /work/SRC/openSUSE:Factory/.uasm.new.1881/uasm.changes 2025-01-07 20:50:22.133344419 +0100
@@ -1,0 +2,25 @@
+Sun Jan 5 20:48:04 UTC 2025 - Antonio Teixeira <antonio.teixeira(a)suse.com>
+
+- Update to 2.57:
+ * Added aam/aad imm8 missing instruction variant.
+ * Added corrections for constant too large warnings and included >64bit size immediate errors.
+ * Corrected a conflict between local and struct having the same name.
+ * Updated the encoding of xchg eax,eax to not just be a NOP in 64bit code as a side effect is
+ clearing the top half of RAX.
+ * Reduced unnecessary REX prefixes in PROC prologue.
+ * Cleaned up makefile names
+ * Fixed a general failure on empty unions.
+ * Applied typedef ptr fix in legacy codeview symbolic debugging info.
+ * Noted string literal usage in manual.
+ * Fixed a stack balancing regression leading to an umatched add/sub rsp,8 pair forLinux 64bit.
+ * Prevented vmovd/vmovq from accepting ymm or zmm registes.
+ * Prevent OR rax,64bit immediate and other instructions that aren't MOV.
+ * Based on a patch to original Jwasm which may have entered an infinite loop if a structured
+ variable wasn't defined (yet), but a member name matched a local name.
+ * Included Vortex Def2Lib utility in the distribution with Import Definitions kindly supplied
+ from MASM32.
+ Can be run via MakeLib.bat or
+ def2lib *.def
+ def2lib ntvdm.def -e
+
+-------------------------------------------------------------------
Old:
----
v2.56.2.tar.gz
New:
----
v2.57r.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ uasm.spec ++++++
--- /var/tmp/diff_new_pack.FTOcRi/_old 2025-01-07 20:50:23.265391236 +0100
+++ /var/tmp/diff_new_pack.FTOcRi/_new 2025-01-07 20:50:23.265391236 +0100
@@ -1,7 +1,7 @@
#
# spec file for package uasm
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: uasm
-Version: 2.56.2
+Version: 2.57r
Release: 0
Summary: MASM-compatible assembler based on JWasm
License: Watcom-1.0
@@ -35,7 +35,7 @@
%build
# Workaround for boo#1225948
%global optflags %{optflags} -fpermissive
-%make_build -f gccLinux64.mak CFLAGS="%{optflags}"
+%make_build -f Makefile-Linux-GCC-64.mak CFLAGS="%{optflags}"
%install
mkdir -p %{buildroot}%{_bindir}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package cloud-init for openSUSE:Factory checked in at 2025-01-07 20:50:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cloud-init (Old)
and /work/SRC/openSUSE:Factory/.cloud-init.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cloud-init"
Tue Jan 7 20:50:09 2025 rev:103 rq:1235207 version:23.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/cloud-init/cloud-init.changes 2024-06-17 19:27:47.362510930 +0200
+++ /work/SRC/openSUSE:Factory/.cloud-init.new.1881/cloud-init.changes 2025-01-07 20:50:20.461275268 +0100
@@ -1,0 +2,6 @@
+Mon Jan 6 13:17:05 UTC 2025 - Robert Schweikert <rjschwei(a)suse.com>
+
+- Add cloud-init-wait-for-net.patch (bsc#1227237)
+ + Wait for udev once if we cannot find the expected MAC
+
+-------------------------------------------------------------------
@@ -10 +16 @@
- + Brute force appraoch to skip renames if the device is already present
+ + Brute force approach to skip renames if the device is already present
New:
----
cloud-init-wait-for-net.patch
BETA DEBUG BEGIN:
New:
- Add cloud-init-wait-for-net.patch (bsc#1227237)
+ Wait for udev once if we cannot find the expected MAC
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cloud-init.spec ++++++
--- /var/tmp/diff_new_pack.6lPSA8/_old 2025-01-07 20:50:21.457316460 +0100
+++ /var/tmp/diff_new_pack.6lPSA8/_new 2025-01-07 20:50:21.461316626 +0100
@@ -53,6 +53,8 @@
Patch14: cloud-init-usr-sudoers.patch
# FIXME https://github.com/canonical/cloud-init/issues/5075
Patch15: cloud-init-skip-rename.patch
+# FIXME https://github.com/canonical/cloud-init/pull/5947
+Patch16: cloud-init-wait-for-net.patch
BuildRequires: fdupes
BuildRequires: filesystem
# pkg-config is needed to find correct systemd unit dir
@@ -166,6 +168,7 @@
%patch -P 13
%patch -P 14
%patch -P 15
+%patch -P 16
# patch in the full version to version.py
version_pys=$(find . -name version.py -type f)
++++++ cloud-init-wait-for-net.patch ++++++
--- cloudinit/sources/helpers/openstack.py.orig
+++ cloudinit/sources/helpers/openstack.py
@@ -736,7 +736,14 @@ def convert_net_json(network_json=None,
if not mac:
raise ValueError("No mac_address or name entry for %s" % d)
if mac not in known_macs:
- raise ValueError("Unable to find a system nic for %s" % d)
+ # Let's give udev a chance to catch up
+ try:
+ util.udevadm_settle()
+ except subp.ProcessExecutionError:
+ pass
+ known_macs = net.get_interfaces_by_mac()
+ if mac not in known_macs:
+ raise ValueError("Unable to find a system nic for %s" % d)
d["name"] = known_macs[mac]
for cfg, key, fmt, targets in link_updates:
--- tests/unittests/sources/test_configdrive.py.orig
+++ tests/unittests/sources/test_configdrive.py
@@ -389,6 +389,7 @@ class TestConfigDriveDataSource(CiTestCa
M_PATH + "util.find_devs_with", "m_find_devs_with", return_value=[]
)
self.tmp = self.tmp_dir()
+ self.allowed_subp = True
def test_ec2_metadata(self):
populate_dir(self.tmp, CFG_DRIVE_FILES_V2)
@@ -869,6 +870,7 @@ class TestConvertNetworkData(CiTestCase)
def setUp(self):
super(TestConvertNetworkData, self).setUp()
self.tmp = self.tmp_dir()
+ self.allowed_subp = True
def _getnames_in_config(self, ncfg):
return set(
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ffmpeg-4 for openSUSE:Factory checked in at 2025-01-07 20:50:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ffmpeg-4 (Old)
and /work/SRC/openSUSE:Factory/.ffmpeg-4.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ffmpeg-4"
Tue Jan 7 20:50:08 2025 rev:72 rq:1235206 version:4.4.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/ffmpeg-4/ffmpeg-4.changes 2024-09-18 15:26:34.068053675 +0200
+++ /work/SRC/openSUSE:Factory/.ffmpeg-4.new.1881/ffmpeg-4.changes 2025-01-07 20:50:18.357188250 +0100
@@ -1,0 +2,15 @@
+Mon Jan 6 11:53:32 UTC 2025 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 4.4.5
+ * Reliability/bug fixes
+- Delete
+ 0001-avcodec-libsvtav1-remove-compressed_ten_bit_format-a.patch
+ 0001-avcodec-x86-mathops-clip-constants-used-with-shift-i.patch
+ 0001-avfilter-vf_minterpolate-Check-pts-before-division.patch
+ ffmpeg-CVE-2023-51793.patch
+ 0001-avfilter-af_stereowiden-Check-length.patch
+ ffmpeg-CVE-2023-50010.patch
+ ffmpeg-4-CVE-2024-32230.patch
+ ffmpeg-4-CVE-2024-7055.patch (all merged)
+
+-------------------------------------------------------------------
Old:
----
0001-avcodec-libsvtav1-remove-compressed_ten_bit_format-a.patch
0001-avcodec-x86-mathops-clip-constants-used-with-shift-i.patch
0001-avfilter-af_stereowiden-Check-length.patch
0001-avfilter-vf_minterpolate-Check-pts-before-division.patch
ffmpeg-4-CVE-2024-32230.patch
ffmpeg-4-CVE-2024-7055.patch
ffmpeg-4.4.4.tar.xz
ffmpeg-4.4.4.tar.xz.asc
ffmpeg-CVE-2023-50010.patch
ffmpeg-CVE-2023-51793.patch
New:
----
ffmpeg-4.4.5.tar.xz
ffmpeg-4.4.5.tar.xz.asc
BETA DEBUG BEGIN:
Old:- Delete
0001-avcodec-libsvtav1-remove-compressed_ten_bit_format-a.patch
0001-avcodec-x86-mathops-clip-constants-used-with-shift-i.patch
Old: 0001-avcodec-libsvtav1-remove-compressed_ten_bit_format-a.patch
0001-avcodec-x86-mathops-clip-constants-used-with-shift-i.patch
0001-avfilter-vf_minterpolate-Check-pts-before-division.patch
Old: ffmpeg-CVE-2023-51793.patch
0001-avfilter-af_stereowiden-Check-length.patch
ffmpeg-CVE-2023-50010.patch
Old: 0001-avcodec-x86-mathops-clip-constants-used-with-shift-i.patch
0001-avfilter-vf_minterpolate-Check-pts-before-division.patch
ffmpeg-CVE-2023-51793.patch
Old: ffmpeg-CVE-2023-50010.patch
ffmpeg-4-CVE-2024-32230.patch
ffmpeg-4-CVE-2024-7055.patch (all merged)
Old: ffmpeg-4-CVE-2024-32230.patch
ffmpeg-4-CVE-2024-7055.patch (all merged)
Old: 0001-avfilter-af_stereowiden-Check-length.patch
ffmpeg-CVE-2023-50010.patch
ffmpeg-4-CVE-2024-32230.patch
Old: 0001-avfilter-vf_minterpolate-Check-pts-before-division.patch
ffmpeg-CVE-2023-51793.patch
0001-avfilter-af_stereowiden-Check-length.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ffmpeg-4.spec ++++++
--- /var/tmp/diff_new_pack.eFE29g/_old 2025-01-07 20:50:19.261225638 +0100
+++ /var/tmp/diff_new_pack.eFE29g/_new 2025-01-07 20:50:19.261225638 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ffmpeg-4
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -98,7 +98,7 @@
%define _major_version 4
%define _major_expected 5
Name: ffmpeg-4
-Version: 4.4.4
+Version: 4.4.5
Release: 0
Summary: Set of libraries for working with various multimedia formats
License: GPL-3.0-or-later
@@ -122,19 +122,11 @@
Patch9: ffmpeg-4.4-CVE-2020-22046.patch
Patch10: ffmpeg-chromium.patch
Patch11: ffmpeg-libglslang-detection.patch
-Patch12: 0001-avcodec-libsvtav1-remove-compressed_ten_bit_format-a.patch
-Patch13: 0001-avcodec-x86-mathops-clip-constants-used-with-shift-i.patch
Patch14: ffmpeg-glslang-cxx17.patch
Patch15: 0001-avutil-hwcontext-Don-t-assume-frames_uninit-is-reent.patch
-Patch16: 0001-avfilter-vf_minterpolate-Check-pts-before-division.patch
Patch17: ffmpeg-CVE-2023-49502.patch
-Patch18: ffmpeg-CVE-2023-51793.patch
-Patch19: 0001-avfilter-af_stereowiden-Check-length.patch
-Patch20: ffmpeg-CVE-2023-50010.patch
-Patch21: ffmpeg-4-CVE-2024-32230.patch
Patch22: ffmpeg-c99.patch
Patch23: 0001-libavcodec-arm-mlpdsp_armv5te-fix-label-format-to-wo.patch
-Patch24: ffmpeg-4-CVE-2024-7055.patch
BuildRequires: ladspa-devel
BuildRequires: libgsm-devel
BuildRequires: libmp3lame-devel
++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.eFE29g/_old 2025-01-07 20:50:19.313227789 +0100
+++ /var/tmp/diff_new_pack.eFE29g/_new 2025-01-07 20:50:19.317227954 +0100
@@ -1,5 +1,5 @@
-mtime: 1726314299
-commit: 79e46abe5636072004aa47101b1fe0b5408a73862b22b9beadc828972944d9f3
+mtime: 1736168221
+commit: 52f36ca5b3383586c1ae8abf1b64353de97005272d185339a0eca858376b3ac2
url: https://src.opensuse.org/jengelh/ffmpeg-4
revision: master
++++++ build.specials.obscpio ++++++
diff: old/*: No such file or directory
diff: new/*: No such file or directory
++++++ ffmpeg-4.2-dlopen-fdk_aac.patch ++++++
--- /var/tmp/diff_new_pack.eFE29g/_old 2025-01-07 20:50:19.445233248 +0100
+++ /var/tmp/diff_new_pack.eFE29g/_new 2025-01-07 20:50:19.449233413 +0100
@@ -1,7 +1,14 @@
-Index: ffmpeg-4.4.3/configure
+---
+ configure | 3 ++
+ libavcodec/dlopen.h | 12 ++++++++++
+ libavcodec/libfdk-aacdec.c | 53 +++++++++++++++++++++++++++++++++++++++++++++
+ libavcodec/libfdk-aacenc.c | 47 +++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 115 insertions(+)
+
+Index: ffmpeg-4.4.5/configure
===================================================================
---- ffmpeg-4.4.3.orig/configure
-+++ ffmpeg-4.4.3/configure
+--- ffmpeg-4.4.5.orig/configure
++++ ffmpeg-4.4.5/configure
@@ -232,6 +232,7 @@ External library support:
--enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
and libraw1394 [no]
@@ -15,10 +22,10 @@
decklink
libfdk_aac
+ libfdk_aac_dlopen
- openssl
libtls
"
-@@ -6368,6 +6370,7 @@ enabled libdrm && require_pkg
+
+@@ -6370,6 +6372,7 @@ enabled libdrm && require_pkg
enabled libfdk_aac && { check_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
{ require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
warn "using libfdk without pkg-config"; } }
@@ -26,10 +33,10 @@
flite_extralibs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
enabled libflite && require libflite "flite/flite.h" flite_init $flite_extralibs
enabled fontconfig && enable libfontconfig
-Index: ffmpeg-4.4.3/libavcodec/dlopen.h
+Index: ffmpeg-4.4.5/libavcodec/dlopen.h
===================================================================
--- /dev/null
-+++ ffmpeg-4.4.3/libavcodec/dlopen.h
++++ ffmpeg-4.4.5/libavcodec/dlopen.h
@@ -0,0 +1,12 @@
+#ifndef LOCALINC_DLOPEN_H
+#define LOCALINC_DLOPEN_H
@@ -43,10 +50,10 @@
+ goto error;
+
+#endif
-Index: ffmpeg-4.4.3/libavcodec/libfdk-aacdec.c
+Index: ffmpeg-4.4.5/libavcodec/libfdk-aacdec.c
===================================================================
---- ffmpeg-4.4.3.orig/libavcodec/libfdk-aacdec.c
-+++ ffmpeg-4.4.3/libavcodec/libfdk-aacdec.c
+--- ffmpeg-4.4.5.orig/libavcodec/libfdk-aacdec.c
++++ ffmpeg-4.4.5/libavcodec/libfdk-aacdec.c
@@ -37,6 +37,54 @@
#define AAC_PCM_MAX_OUTPUT_CHANNELS AAC_PCM_OUTPUT_CHANNELS
#endif
@@ -114,10 +121,10 @@
s->handle = aacDecoder_Open(avctx->extradata_size ? TT_MP4_RAW : TT_MP4_ADTS, 1);
if (!s->handle) {
av_log(avctx, AV_LOG_ERROR, "Error opening decoder\n");
-Index: ffmpeg-4.4.3/libavcodec/libfdk-aacenc.c
+Index: ffmpeg-4.4.5/libavcodec/libfdk-aacenc.c
===================================================================
---- ffmpeg-4.4.3.orig/libavcodec/libfdk-aacenc.c
-+++ ffmpeg-4.4.3/libavcodec/libfdk-aacenc.c
+--- ffmpeg-4.4.5.orig/libavcodec/libfdk-aacenc.c
++++ ffmpeg-4.4.5/libavcodec/libfdk-aacenc.c
@@ -35,6 +35,48 @@
#define FDKENC_VER_AT_LEAST(vl0, vl1) 0
#endif
++++++ ffmpeg-4.4.4.tar.xz -> ffmpeg-4.4.5.tar.xz ++++++
/work/SRC/openSUSE:Factory/ffmpeg-4/ffmpeg-4.4.4.tar.xz /work/SRC/openSUSE:Factory/.ffmpeg-4.new.1881/ffmpeg-4.4.5.tar.xz differ: char 26, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package btrfsprogs for openSUSE:Factory checked in at 2025-01-07 20:50:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/btrfsprogs (Old)
and /work/SRC/openSUSE:Factory/.btrfsprogs.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "btrfsprogs"
Tue Jan 7 20:50:06 2025 rev:162 rq:1235200 version:6.12
Changes:
--------
--- /work/SRC/openSUSE:Factory/btrfsprogs/btrfsprogs.changes 2024-08-17 12:40:01.992491356 +0200
+++ /work/SRC/openSUSE:Factory/.btrfsprogs.new.1881/btrfsprogs.changes 2025-01-07 20:50:15.673077245 +0100
@@ -1,0 +2,41 @@
+Mon Jan 6 00:00:00 CET 2025 - dsterba(a)suse.cz
+
+- update to 6.12
+ * subvolume delete: add new option to do recursive subvolume deletion (for
+ regular user delete only accessible subvolumes)
+ * mkfs:
+ * new option --subvol to create subvolumes in given paths, read-write,
+ read-only and default
+ * add hard link detection support for --rootdir option
+ * fixes:
+ * receive: message verbosity fixes
+ * check: fix false positive report of missing checksum for extent holes
+ * check: handle compressed extents when checking tree log
+ * when asking Y/N user questions, flush the terminal so the question is
+ displayed (e.g. btrfstune -S)
+ * other
+ * code refactoring, error handling
+ * python packaging fixes
+ * documentation updates
+ * new tests
+- update to 6.11
+ * check:
+ * check items in tree-log
+ * detect invalid file extent items for symlinks
+ * properly detect inode cache and suggest removal by 'clear-ino-cache'
+ * convert: fix symlink length checks
+ * fi show: remove stray newline at the end of the output
+ * fixes:
+ * open devices in write-exclusive mode in most commands, prevent
+ concurrent mount by other programs
+ * rescue clear-ino-cache: fix subvolume iteration that can fail in some cases
+ * map-logical: fix first extent searching condition
+ * fi resize: warn if new size is below 256M
+ * tree-checker:
+ * slightly stricter file type validation
+ * verify device extent items
+ * other:
+ * documentation updates
+ * ship btrfs-ioctl manual page (incomplete)
+
+-------------------------------------------------------------------
Old:
----
btrfs-progs-v6.10.1.tar.gz
btrfs-progs-v6.10.1.tar.sign
New:
----
btrfs-progs-v6.12.tar.gz
btrfs-progs-v6.12.tar.sign
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ btrfsprogs.spec ++++++
--- /var/tmp/diff_new_pack.uPPG3Q/_old 2025-01-07 20:50:16.353105369 +0100
+++ /var/tmp/diff_new_pack.uPPG3Q/_new 2025-01-07 20:50:16.357105534 +0100
@@ -1,7 +1,7 @@
#
# spec file for package btrfsprogs
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -34,7 +34,7 @@
%define _dracutmodulesdir %(pkg-config --variable dracutmodulesdir dracut)
Name: btrfsprogs
-Version: 6.10.1
+Version: 6.12
Release: 0
Summary: Utilities for the Btrfs filesystem
License: GPL-2.0-only
++++++ btrfs-progs-v6.10.1.tar.gz -> btrfs-progs-v6.12.tar.gz ++++++
++++ 8251 lines of diff (skipped)
1
0