openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
November 2010
- 1 participants
- 1023 discussions
Hello community,
here is the log from the commit of package libsmi for openSUSE:Factory
checked in at Mon Nov 15 15:57:25 CET 2010.
--------
--- libsmi/libsmi.changes 2010-10-06 12:04:59.000000000 +0200
+++ /mounts/work_src_done/STABLE/libsmi/libsmi.changes 2010-11-11 11:36:59.000000000 +0100
@@ -1,0 +2,5 @@
+Thu Nov 11 10:38:11 UTC 2010 - nadvornik(a)novell.com
+
+- fixed buffer overflow CVE-2010-2891 (bnc#649867)
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
New:
----
libsmi-CVE-2010-2891.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libsmi.spec ++++++
--- /var/tmp/diff_new_pack.BHzPLR/_old 2010-11-15 15:57:08.000000000 +0100
+++ /var/tmp/diff_new_pack.BHzPLR/_new 2010-11-15 15:57:08.000000000 +0100
@@ -20,7 +20,7 @@
Name: libsmi
Version: 0.4.8
-Release: 1
+Release: 2
AutoReqProv: on
Group: System/Libraries
License: MIT
@@ -29,6 +29,7 @@
Source: %{name}-%{version}.tar.gz
Patch0: libsmi-0.4.8-parser.patch
Patch1: libsmi-0.4.8-gnu-source.patch
+Patch2: libsmi-CVE-2010-2891.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: bison flex
@@ -95,6 +96,7 @@
%setup -q
%patch0 -p1
%patch1 -p1
+%patch2
%build
autoreconf --force --install
++++++ libsmi-CVE-2010-2891.patch ++++++
Index: lib/smi.c
===================================================================
--- lib/smi.c (revision 29144)
+++ lib/smi.c (working copy)
@@ -1793,10 +1793,15 @@
}
if (isdigit((int)node2[0])) {
- for (oidlen = 0, p = strtok(node2, ". "); p;
+ for (oidlen = 0, p = strtok(node2, ". ");
+ p && oidlen < sizeof(oid)/sizeof(oid[0]);
oidlen++, p = strtok(NULL, ". ")) {
oid[oidlen] = strtoul(p, NULL, 0);
}
+ if (p) {
+ /* the numeric OID is too long */
+ return NULL;
+ }
nodePtr = getNode(oidlen, oid);
if (nodePtr) {
if (modulePtr) {
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package virtualbox-ose for openSUSE:Factory
checked in at Mon Nov 15 15:56:39 CET 2010.
--------
--- virtualbox-ose/virtualbox-ose.changes 2010-10-13 23:49:52.000000000 +0200
+++ /mounts/work_src_done/STABLE/virtualbox-ose/virtualbox-ose.changes 2010-11-12 10:03:15.000000000 +0100
@@ -1,0 +2,6 @@
+Wed Nov 10 00:06:58 UTC 2010 - javier(a)opensuse.org
+
+- Added vbox-default-os-type.diff
+ * Changes the default Linux guest OS to openSUSE
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
vbox-no-build-dates.patch
New:
----
vbox-default-os-type.diff
vbox-no-build-dates.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ virtualbox-ose.spec ++++++
--- /var/tmp/diff_new_pack.9Clc7f/_old 2010-11-15 15:55:37.000000000 +0100
+++ /var/tmp/diff_new_pack.9Clc7f/_new 2010-11-15 15:55:37.000000000 +0100
@@ -40,7 +40,7 @@
#
ExclusiveArch: %ix86 x86_64
Version: 3.2.10
-Release: 1
+Release: 2
Summary: VirtualBox OSE is an Emulator
License: GPLv2+
Group: System/Emulators/PC
@@ -78,7 +78,8 @@
#try to start VirtualBox and is not memeber of vboxusers group
Patch99: vbox-permissions_warning.diff
#PATCH-FIX-OPENSUSE Do not include build dates on binaries, makes build-compare happier
-Patch100: vbox-no-build-dates.patch
+Patch100: vbox-no-build-dates.diff
+Patch101: vbox-default-os-type.diff
#
BuildRoot: %{_tmppath}/%{name}-%{version}-build
PreReq: pwdutils permissions
@@ -170,6 +171,7 @@
%patch4 -p1
%patch99 -p1
%patch100
+%patch101
#copy user manual
%__cp %{S:1} ./UserManual.pdf
++++++ vbox-default-os-type.diff ++++++
--- src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp.orig 2010-11-10 21:27:23.000000000 +0100
+++ src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp 2010-11-10 21:27:53.000000000 +0100
@@ -199,10 +199,10 @@
if (xpIndex != -1)
mCbType->setCurrentIndex (xpIndex);
}
- /* Or select Ubuntu item for Linux family as default */
+ /* Or select openSUSE item for Linux family as default */
else if (familyId == "Linux")
{
- int ubIndex = mCbType->findData ("Ubuntu", RoleTypeID);
+ int ubIndex = mCbType->findData ("OpenSUSE", RoleTypeID);
if (ubIndex != -1)
mCbType->setCurrentIndex (ubIndex);
}
++++++ vbox-no-build-dates.diff ++++++
--- src/VBox/Frontends/VBoxBFE/VBoxBFE.cpp.orig
+++ src/VBox/Frontends/VBoxBFE/VBoxBFE.cpp
@@ -1150,10 +1150,9 @@ DECLCALLBACK(int) VMPowerUpThread(RTTHRE
char szNowUct[64];
RTTimeSpecToString(RTTimeNow(&TimeSpec), szNowUct, sizeof(szNowUct));
RTLogRelLogger(pLogger, 0, ~0U,
- "VBoxBFE %s (%s %s) release log\n"
+ "VBoxBFE %s release log\n"
"Log opened %s\n",
- VBOX_VERSION_STRING, __DATE__, __TIME__,
- szNowUct);
+ VBOX_VERSION_STRING, szNowUct);
/* register this logger as the release logger */
RTLogRelSetDefaultInstance(pLogger);
--- src/VBox/Main/ConsoleImpl.cpp.orig
+++ src/VBox/Main/ConsoleImpl.cpp
@@ -5063,13 +5063,12 @@ HRESULT Console::consoleInitReleaseLog(c
char szTmp[256];
RTTimeSpecToString(RTTimeNow(&timeSpec), szTmp, sizeof(szTmp));
RTLogRelLogger(loggerRelease, 0, ~0U,
- "VirtualBox %s r%u %s (%s %s) release log\n"
+ "VirtualBox %s r%u %s release log\n"
#ifdef VBOX_BLEEDING_EDGE
"EXPERIMENTAL build " VBOX_BLEEDING_EDGE "\n"
#endif
"Log opened %s\n",
- VBOX_VERSION_STRING, RTBldCfgRevision(), VBOX_BUILD_TARGET,
- __DATE__, __TIME__, szTmp);
+ VBOX_VERSION_STRING, RTBldCfgRevision(), VBOX_BUILD_TARGET, szTmp);
vrc = RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szTmp, sizeof(szTmp));
if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)
--- src/VBox/Main/generic/OpenGLTestApp.cpp.orig
+++ src/VBox/Main/generic/OpenGLTestApp.cpp
@@ -141,13 +141,12 @@ static int vboxInitLogging(const char *p
char szTmp[256];
RTTimeSpecToString(RTTimeNow(&timeSpec), szTmp, sizeof(szTmp));
RTLogRelLogger(loggerRelease, 0, ~0U,
- "VBoxTestGL %s r%u %s (%s %s) release log\n"
+ "VBoxTestGL %s r%u %s release log\n"
#ifdef VBOX_BLEEDING_EDGE
"EXPERIMENTAL build " VBOX_BLEEDING_EDGE "\n"
#endif
"Log opened %s\n",
- VBOX_VERSION_STRING, RTBldCfgRevision(), VBOX_BUILD_TARGET,
- __DATE__, __TIME__, szTmp);
+ VBOX_VERSION_STRING, RTBldCfgRevision(), VBOX_BUILD_TARGET, szTmp);
vrc = RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szTmp, sizeof(szTmp));
if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)
--- src/VBox/Frontends/VBoxFB/VBoxFB.cpp.orig
+++ src/VBox/Frontends/VBoxFB/VBoxFB.cpp
@@ -62,7 +62,7 @@ int main(int argc, char *argv[])
printf("VirtualBox DirectFB GUI built %s %s\n"
"(C) 2004-" VBOX_C_YEAR " " VBOX_VENDOR "\n"
- "(C) 2004-2005 secunet Security Networks AG\n", __DATE__, __TIME__);
+ "(C) 2004-2005 secunet Security Networks AG\n");
for (;;)
{
--- src/VBox/Runtime/common/string/uniread.cpp.orig
+++ src/VBox/Runtime/common/string/uniread.cpp
@@ -979,7 +979,7 @@ int PrintHeader(const char *argv0)
" *\n"
" * IPRT - Unicode Tables.\n"
" *\n"
- " * Automatically Generated by %s (" __DATE__ " " __TIME__ ")\n"
+ " * Automatically Generated by %s\n"
" */\n"
"\n"
"/*\n"
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package yast2-ntp-client for openSUSE:Factory
checked in at Mon Nov 15 15:55:08 CET 2010.
--------
--- yast2-ntp-client/yast2-ntp-client.changes 2010-06-24 08:02:26.000000000 +0200
+++ /mounts/work_src_done/STABLE/yast2-ntp-client/yast2-ntp-client.changes 2010-11-12 07:49:03.000000000 +0100
@@ -1,0 +2,17 @@
+Fri Nov 12 08:38:53 CEST 2010 - varkoly(a)novell.com
+
+- bnc#650879 - Missing newline makes /etc/cron.d/novell.ntp-synchronize not work
+
+-------------------------------------------------------------------
+Wed Nov 10 15:11:04 CEST 2010 - varkoly(a)novell.com
+
+- bnc#619782 Time zone configuration during initial installation.
+
+-------------------------------------------------------------------
+Thu Sep 2 11:21:09 CEST 2010 - jsuchome(a)suse.cz
+
+- provide public API for info about time synchronization without
+ daemon running (bnc#627818)
+- 2.20.0
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
yast2-ntp-client-2.18.1.tar.bz2
New:
----
yast2-ntp-client-2.20.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-ntp-client.spec ++++++
--- /var/tmp/diff_new_pack.VlUnpM/_old 2010-11-15 15:53:06.000000000 +0100
+++ /var/tmp/diff_new_pack.VlUnpM/_new 2010-11-15 15:53:06.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package yast2-ntp-client (Version 2.18.1)
+# spec file for package yast2-ntp-client (Version 2.20.1)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -19,11 +19,11 @@
Name: yast2-ntp-client
-Version: 2.18.1
-Release: 3
+Version: 2.20.1
+Release: 1
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-ntp-client-2.18.1.tar.bz2
+Source0: yast2-ntp-client-2.20.1.tar.bz2
Prefix: /usr
@@ -44,7 +44,7 @@
This package contains the YaST2 component for NTP client configuration.
%prep
-%setup -n yast2-ntp-client-2.18.1
+%setup -n yast2-ntp-client-2.20.1
%build
%{prefix}/bin/y2tool y2autoconf
@@ -84,5 +84,4 @@
/usr/share/YaST2/data/ntp_servers.ycp
%doc %{prefix}/share/doc/packages/yast2-ntp-client
/usr/share/YaST2/schema/autoyast/rnc/ntpclient.rnc
-
%changelog
++++++ yast2-ntp-client-2.18.1.tar.bz2 -> yast2-ntp-client-2.20.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ntp-client-2.18.1/data/ntp_servers.ycp new/yast2-ntp-client-2.20.1/data/ntp_servers.ycp
--- old/yast2-ntp-client-2.18.1/data/ntp_servers.ycp 2010-04-06 12:23:22.000000000 +0200
+++ new/yast2-ntp-client-2.20.1/data/ntp_servers.ycp 2010-11-10 13:49:04.000000000 +0100
@@ -46,15 +46,6 @@
"synchronization" : "xntpd (stratum 2), linux/unix",
],
$[
- "access_policy" : "Open access to stratum 2 and stratum 3 NTP servers. Please, send a mail to notify.",
- "address" : "ntp.cais.rnp.br",
- "country" : "BR",
- "exact_location" : "RNP - Brazilian Research Network/Rede Nacional de Pesquisa",
- "location" : "Brazil",
- "stratum" : "2",
- "synchronization" : "NTP V4 Secondary (stratum 2), FreeBSD/UNIX",
- ],
- $[
"access_policy" : "Open access to stratum 3 server. Please, send a mail to notify.",
"address" : "ntp.pop-pr.rnp.br",
"country" : "BR",
@@ -156,15 +147,6 @@
],
$[
"access_policy" : "open access",
- "address" : "ntp.globe.cz",
- "country" : "CZ",
- "exact_location" : "Prague, The Czech Republic",
- "location" : "Czech Republic",
- "stratum" : "2",
- "synchronization" : "NTP V4 secondary (stratum 2), PC/Linux",
- ],
- $[
- "access_policy" : "open access",
"address" : "ntp.karpo.cz",
"country" : "CZ",
"exact_location" : "Prague, The Czech Republic",
@@ -174,15 +156,6 @@
],
$[
"access_policy" : "open access",
- "address" : "ntp1.contactel.cz",
- "country" : "CZ",
- "exact_location" : "Prague, The Czech Republic",
- "location" : "Czech Republic",
- "stratum" : "2",
- "synchronization" : "NTP V4 secondary (stratum 2), PC/Linux",
- ],
- $[
- "access_policy" : "open access",
"address" : "ntp2.contactel.cz",
"country" : "CZ",
"exact_location" : "Prague, The Czech Republic",
@@ -191,13 +164,6 @@
"synchronization" : "NTP V4 secondary (stratum 2), PC/Linux",
],
$[
- "address" : "tack.fh-augsburg.de",
- "country" : "DE",
- "exact_location" : "Augsburg University of Applied Sciences (FH), Augsburg, Bavaria, Germany",
- "stratum" : "2",
- "synchronization" : "NTP V4 secondary (stratum 2), i486/Linux",
- ],
- $[
"address" : "tick.fh-augsburg.de",
"country" : "DE",
"exact_location" : "Augsburg University of Applied Sciences (FH), Augsburg, Bavaria, Germany",
@@ -271,16 +237,6 @@
"synchronization" : "NTP V3 secondary (stratum 2), i686/FreeBSD",
],
$[
- "access_policy" : "open access",
- "address" : "ntp.cuhk.edu.hk",
- "coordinates" : "22:25:10N, 114:12:22E",
- "country" : "HK",
- "exact_location" : "The Chinese University of Hong Kong.",
- "location" : "Hong Kong, Taiwan, China, and South East Asia",
- "stratum" : "2",
- "synchronization" : "NTP V3 secondary (stratum 2), i686/Linux",
- ],
- $[
"access_policy" : "open access, glad to receive a note",
"address" : "os.ntp.carnet.hr",
"country" : "HR",
@@ -344,22 +300,6 @@
"synchronization" : "NTPV4 secondary (stratum 2), Intel, FreeBSD 2.2",
],
$[
- "address" : "ntps.net4u.it",
- "country" : "IT",
- "exact_location" : "4u Srl, Vercelli, Italy",
- "stratum" : "2",
- "synchronization" : "NTP secondary (stratum 2), Linux 2 on Intel PIII 500MHz",
- ],
- $[
- "access_policy" : "open access",
- "address" : "ntp.doubleukay.com",
- "country" : "MY",
- "exact_location" : "Cyberjaya, Malaysia",
- "location" : "Malaysia",
- "stratum" : "2",
- "synchronization" : "NTP V4 secondary (stratum 2), Intel/Linux",
- ],
- $[
"access_policy" : "open access",
"address" : "fartein.ifi.uio.no",
"coordinates" : "59:56:32N, 10:43:22E",
@@ -485,7 +425,7 @@
$[
"access_policy" : "open access",
"address" : "a.ntp.alphazed.net",
- "country" : "UK",
+ "country" : "GB",
"exact_location" : "Telehouse, London E14",
"location" : "all areas",
"stratum" : "2",
@@ -501,18 +441,10 @@
"synchronization" : "NTP V4 Secondary (stratum 2), Sun SPARC10/Solaris,",
],
$[
- "access_policy" : "Open Access",
- "address" : "bear.zoo.bt.co.uk",
- "country" : "UK",
- "exact_location" : "BT Adastral Park, Ipswich, England",
- "location" : "UK",
- "stratum" : "2",
- ],
- $[
"access_policy" : "open access",
"address" : "ntp.cis.strath.ac.uk",
"coordinates" : "04:14W, 55:52N",
- "country" : "UK",
+ "country" : "GB",
"exact_location" : "Dept. Computer and Information Sciences, University of Strathclyde, Glasgow, Scotland.",
"location" : "UK/Europe",
"stratum" : "2",
@@ -521,49 +453,49 @@
$[
"access_policy" : "Open Access",
"address" : "ntp2a.mcc.ac.uk",
- "country" : "UK",
+ "country" : "GB",
"exact_location" : "University of Manchester, Manchester, England",
- "location" : "UK",
+ "location" : "GB",
"stratum" : "2",
"synchronization" : "NTP secondary (S2), Sun/SunOS",
],
$[
"access_policy" : "Open Access",
"address" : "ntp2b.mcc.ac.uk",
- "country" : "UK",
+ "country" : "GB",
"exact_location" : "University of Manchester, Manchester, England",
- "location" : "UK",
+ "location" : "GB",
"stratum" : "2",
"synchronization" : "NTP secondary (S2), PC/FreeBSD",
],
$[
"access_policy" : "Open Access",
"address" : "ntp2c.mcc.ac.uk",
- "country" : "UK",
+ "country" : "GB",
"exact_location" : "University of Manchester, Manchester, England",
- "location" : "UK",
+ "location" : "GB",
"stratum" : "2",
"synchronization" : "NTP secondary (S2), PC/FreeBSD",
],
$[
"access_policy" : "Open Access",
"address" : "ntp2d.mcc.ac.uk",
- "country" : "UK",
+ "country" : "GB",
"exact_location" : "University of Manchester, Manchester, England",
- "location" : "UK",
+ "location" : "GB",
"stratum" : "2",
"synchronization" : "NTP secondary (S2), SGI/Irix",
],
$[
"address" : "ntp",
- "country" : "UK",
+ "country" : "GB",
"exact_location" : "Telehouse Europe, London E14.Geographic Coordinates: 51°30.71'N 0°00.08'W",
"stratum" : "2",
],
$[
"access_policy" : "Semi-open access. These are primarily for use by UUNET customers who may use them without asking, but others are welcome to peer if they give notice.",
"address" : "ntp0.uk.uu.net",
- "country" : "UK",
+ "country" : "GB",
"exact_location" : "Cambridge, UK",
"location" : "UUNET (formerly known in the UK as PIPEX); UK",
"stratum" : "2",
@@ -571,7 +503,7 @@
$[
"access_policy" : "Semi-open access. These are primarily for use by UUNET customers who may use them without asking, but others are welcome to peer if they give notice.",
"address" : "ntp1.uk.uu.net",
- "country" : "UK",
+ "country" : "GB",
"exact_location" : "Cambridge, UK",
"location" : "UUNET (formerly known in the UK as PIPEX); UK",
"stratum" : "2",
@@ -579,7 +511,7 @@
$[
"access_policy" : "Semi-open access. These are primarily for use by UUNET customers who may use them without asking, but others are welcome to peer if they give notice.",
"address" : "ntp2.uk.uu.net",
- "country" : "UK",
+ "country" : "GB",
"exact_location" : "London, UK",
"location" : "UUNET (formerly known in the UK as PIPEX); UK",
"stratum" : "2",
@@ -615,17 +547,6 @@
"synchronization" : "NTP secondary (stratum 2)",
],
$[
- "access_policy" : "Open Access, please drop us a note so we can add you to our mailing list.",
- "address" : "ntp1.mainecoon.com",
- "coordinates" : "39:56.863N, 120:54.657W",
- "country" : "US",
- "exact_location" : "Quincy, California",
- "location" : "North America",
- "state" : "CA ",
- "stratum" : "2",
- "synchronization" : "NTP V4 secondary (stratum 2) P-II/X86 Solaris 2.7",
- ],
- $[
"access_policy" : "open access, please send a message to notify",
"address" : "ntp1.sf-bay.org",
"country" : "US",
@@ -781,16 +702,6 @@
"synchronization" : "NTP V3 secondary (stratum 2), Linux on Intel",
],
$[
- "access_policy" : "open access",
- "address" : "ntp.ourconcord.net",
- "country" : "US",
- "exact_location" : "Concord, MA",
- "location" : "Eastern time zone",
- "state" : "MA ",
- "stratum" : "2",
- "synchronization" : "NTP v4 stratum 2, Linux",
- ],
- $[
"access_policy" : "open access, please send a message to notify.",
"address" : "ns.nts.umn.edu",
"country" : "US",
@@ -914,17 +825,6 @@
"synchronization" : "NTP secondary (stratum 2), Sun/Unix",
],
$[
- "access_policy" : "open access",
- "address" : "reva.sixgirls.org",
- "coordinates" : "40:42:20N, 74:0:40W",
- "country" : "US",
- "exact_location" : "The NYITC Building, 55 Broad Street, New York City, NY",
- "location" : "New York, New Jersey, Connecticut, Long Island areas",
- "state" : "NY ",
- "stratum" : "2",
- "synchronization" : "NTP V4 secondary (stratum 2), m68k/NetBSD",
- ],
- $[
"access_policy" : "open access; please use name rather than address.",
"address" : "sundial.columbia.edu",
"country" : "US",
@@ -1106,31 +1006,6 @@
"synchronization" : "NTP V4 secondary Solaris 2.7",
],
$[
- "address" : "ntp.cs.unp.ac.za",
- "country" : "ZA",
- "exact_location" : "Natal University, Pietermaritzburg, South Africa",
- "stratum" : "2",
- "synchronization" : "NTP V3 secondary (stratum 2), SGI Indy/Irix6.2",
- ],
- $[
- "access_policy" : "open access",
- "address" : "tock.nml.csir.co.za",
- "coordinates" : "25,7461 S 28,2770 E (WGS-84)",
- "country" : "ZA",
- "exact_location" : "Pretoria, South Africa",
- "location" : "Southern Africa",
- "stratum" : "2",
- "synchronization" : "NTP secondary (stratum 2), i386/FreeBSD",
- ],
- $[
- "address" : "ntp0.coreng.com.au",
- "coordinates" : "33:50S 151:09E",
- "country" : "AU",
- "exact_location" : "Corinthian Engineering P/L, Sydney Australia.",
- "stratum" : "1",
- "synchronization" : "NTP V4 primary (Trimble Acutime GPS+PPS), i386/FreeBSD 4-STABLE.",
- ],
- $[
"address" : "ntp0.cs.mu.OZ.AU",
"coordinates" : "37:48:09.60S 144:57:29.50E",
"country" : "AU",
@@ -1158,26 +1033,6 @@
"synchronization" : "NTP V4 Primary (GPS clock), PC/FreeBSD",
],
$[
- "access_policy" : "open access, prior arrangment required",
- "address" : "tick.usask.ca",
- "coordinates" : "52:08:01N,106:38:11W",
- "country" : "CA",
- "exact_location" : "University oc Saskatchewan, Saskatoon, Saskatchewan, SK, Canada",
- "location" : "SASK#net, CA*net, Canada",
- "stratum" : "1",
- "synchronization" : "NTP V3 Primary (GOES clock), DEC Mips/Unix",
- ],
- $[
- "access_policy" : "open access, prior arrangment required",
- "address" : "tock.usask.ca",
- "coordinates" : "52:08:01N,106:38:11W",
- "country" : "CA",
- "exact_location" : "University oc Saskatchewan, Saskatoon, Saskatchewan, SK, Canada",
- "location" : "SASK#net, CA*net, Canada",
- "stratum" : "1",
- "synchronization" : "NTP V3 Primary (GOES clock), DEC Mips/Unix",
- ],
- $[
"access_policy" : "open access, please send a message to notify",
"address" : "ntp.metas.ch",
"coordinates" : "N 46:55:25 E 07:27:51",
@@ -1288,27 +1143,6 @@
"synchronization" : "NTP V3 primary (GPS), PC/Linux",
],
$[
- "address" : "ntp1.curie.fr",
- "country" : "FR",
- "exact_location" : "Institut Curie, Section de Recherche, Paris, France.",
- "stratum" : "1",
- "synchronization" : "Coetanian TSS100 NTP V3 GPS",
- ],
- $[
- "address" : "ntp2.curie.fr",
- "country" : "FR",
- "exact_location" : "Institut Curie, Section de Recherche, Paris, France.",
- "stratum" : "1",
- "synchronization" : "Datum 2100L NTP V3 GPS",
- ],
- $[
- "address" : "ntp3.curie.fr",
- "country" : "FR",
- "exact_location" : "Institut Curie, Section de Recherche, Paris, France.",
- "stratum" : "1",
- "synchronization" : "Truetime NTS100 GPS",
- ],
- $[
"access_policy" : "open access, please send a message to notify",
"address" : "ntp-galway.hea.net",
"country" : "IE",
@@ -1527,7 +1361,7 @@
$[
"access_policy" : "closed access, see notes below.",
"address" : "ntp2.ja.net",
- "country" : "UK",
+ "country" : "GB",
"exact_location" : "University of London Computer Centre, UK",
"location" : "JANET",
"stratum" : "1",
@@ -1613,17 +1447,6 @@
"synchronization" : "NTP V3 primary GPS Clock",
],
$[
- "access_policy" : "Open to stratum 2 servers for 10 or more hosts, others upon request",
- "address" : "tick.gpsclock.com",
- "coordinates" : "33:50:26.510N, 118:22:55.245W",
- "country" : "US",
- "exact_location" : "GPSClock.com headquarters, Redondo Beach, CA",
- "location" : "US Pacific, Los Angeles area",
- "state" : "CA ",
- "stratum" : "1",
- "synchronization" : "NTP V4 primary, GPSClock 300 hard PPS, FreeBSD",
- ],
- $[
"address" : "tick.ucla.edu",
"country" : "US",
"exact_location" : "UCLA, Los Angeles, CA",
@@ -1732,17 +1555,6 @@
],
$[
"access_policy" : "closed access, except for stratum-2 servers providing synchronization to local networks of ten or more hosts",
- "address" : "ntp1.nss.udel.edu",
- "coordinates" : "39:40:35.8N, 75:44:36.6W (GPS WGS 84)",
- "country" : "US",
- "exact_location" : "University of Delaware, Newark, DE",
- "location" : "BBN Planet SER",
- "state" : "DE ",
- "stratum" : "1",
- "synchronization" : "NTP V3 Primary (GPS clock), TrueTime NTS-100-GPS",
- ],
- $[
- "access_policy" : "closed access, except for stratum-2 servers providing synchronization to local networks of ten or more hosts",
"address" : "rackety.udel.edu",
"coordinates" : "39:40:48.425N, 75:45:02.392W (GPS WGS84)",
"country" : "US",
@@ -1801,16 +1613,6 @@
"synchronization" : "NTP V3 primary (Brandywine Syncclock32/Oncore GPS)",
],
$[
- "access_policy" : "closed access except for peers that meet the three conditions outlined in the "Time Servers" section of this file. State agreement with those conditions in notification message. All others may use the ntp-{0,1,2}.cso.uiuc.edu stratum 2 servers.",
- "address" : "truechimer.cso.uiuc.edu",
- "country" : "US",
- "exact_location" : "University of Illinois, Urbana-Champaign, IL",
- "location" : "CICNET, Midwest, NCSA region",
- "state" : "IL ",
- "stratum" : "1",
- "synchronization" : "NTP V3 primary (WWVB clock), IBM-RS6000/250",
- ],
- $[
"access_policy" : "open access to significant stratum 2 servers in the service areas.",
"address" : "tick.cerias.purdue.edu",
"coordinates" : "40:25:33.2N, 86:54:54.7W (GPS)",
@@ -1851,16 +1653,6 @@
"synchronization" : "NTP V4 primary, Motorola Oncore VP GPS, Linux",
],
$[
- "access_policy" : "open access to stratum-2 servers and to MIT clients",
- "address" : "tick.mit.edu",
- "country" : "US",
- "exact_location" : "Massachusetts Institute of Technology, Cambridge, MA",
- "location" : "eastern time zone, others on request",
- "state" : "MA ",
- "stratum" : "1",
- "synchronization" : "NTP V3 primary (GPS) HP9000/747i",
- ],
- $[
"access_policy" : "open access",
"address" : "time.keneli.org",
"country" : "US",
@@ -1901,15 +1693,6 @@
"synchronization" : "NTP V3 primary (GPS) HP9000/747i",
],
$[
- "access_policy" : "NC-REN region, other use by prior arrangement",
- "address" : "ncnoc.ncren.net",
- "country" : "US",
- "exact_location" : "MCNC, Research Triangle Park, NC",
- "state" : "NC ",
- "stratum" : "1",
- "synchronization" : "NTP V3 primary (WWVB clock), Netclock/2, Sun 4/65",
- ],
- $[
"access_policy" : "Closed access, except for stratum-2 servers providing synchronization to local networks of ten or more hosts; others by arrangement only. Please send a message to notify.",
"address" : "ntp0.jensenresearch.com",
"coordinates" : "41 00.975 N, 74 15.262 W<br>Synchronization: NTP V4 primary; Præcis Ct CDMA clock; Intel PIII/866 Win2K",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ntp-client-2.18.1/src/ntp-client_proposal.ycp new/yast2-ntp-client-2.20.1/src/ntp-client_proposal.ycp
--- old/yast2-ntp-client-2.18.1/src/ntp-client_proposal.ycp 2010-06-24 08:00:04.000000000 +0200
+++ new/yast2-ntp-client-2.20.1/src/ntp-client_proposal.ycp 2010-11-10 16:09:25.000000000 +0100
@@ -77,7 +77,11 @@
}
boolean GetNTPEnabled () {
- return Service::Enabled (NtpClient::service_name);
+
+ if (!Stage::initial())
+ NtpClient::ReadSynchronization ();
+
+ return NtpClient::synchronize_time || Service::Enabled (NtpClient::service_name);
}
boolean ValidateSingleServer( string ntp_server )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ntp-client-2.18.1/src/NtpClient.ycp new/yast2-ntp-client-2.20.1/src/NtpClient.ycp
--- old/yast2-ntp-client-2.18.1/src/NtpClient.ycp 2010-04-09 18:07:41.000000000 +0200
+++ new/yast2-ntp-client-2.20.1/src/NtpClient.ycp 2010-11-12 08:34:11.000000000 +0100
@@ -4,7 +4,7 @@
* Summary: Data for configuration of ntp-client, input and output functions.
* Authors: Jiri Srain <jsrain(a)suse.cz>
*
- * $Id: NtpClient.ycp 61641 2010-04-09 16:07:40Z varkoly $
+ * $Id: NtpClient.ycp 62834 2010-11-12 06:34:02Z varkoly $
*
* Representation of the configuration of ntp-client.
* Input and output routines.
@@ -216,8 +216,14 @@
}
map<string, string> MakePoolRecord (string CC, string location) {
+ string mycc = tolower(CC);
+ //There is no gb.pool.ntp.org only uk.pool.ntp.org
+ if ( mycc == "gb" )
+ {
+ mycc="uk";
+ }
return $[
- "address" : tolower(CC) + ".pool.ntp.org",
+ "address" : mycc + ".pool.ntp.org",
"country" : CC,
"location": location,
];
@@ -434,6 +440,28 @@
}
/**
+ * Read the synchronization status, fill
+ * synchronize_time and sync_interval variables
+ * Return updated value of synchronize_time
+ */
+global boolean ReadSynchronization () {
+
+ list crontab = (list)SCR::Read(.cron, cron_file, "");
+ y2milestone("CRONTAB %1", crontab);
+ string tmp = (string) crontab[0,"events",0,"active"]:"0";
+ synchronize_time = tmp == "1";
+ tmp = (string) crontab[0,"events",0,"minute"]:"*/5";
+ y2milestone("MINUTE %1", tmp);
+ list pos = regexppos(tmp, "[0-9]+");
+ string tmp2 = substring(tmp,pos[0]:0,pos[1]:0);
+ sync_interval = tointeger(tmp2);
+ y2milestone("SYNC_INTERVAL %1", sync_interval);
+
+ return synchronize_time;
+}
+
+
+/**
* Read all ntp-client settings
* @return true on success
*/
@@ -518,16 +546,8 @@
if (! Mode::commandline() && ! FileChanges::CheckFiles (["/etc/ntp.conf"]))
failed = true;
ProcessNtpConf();
- list crontab = (list)SCR::Read(.cron, cron_file, "");
- y2milestone("CRONTAB %1", crontab);
- string tmp = (string) crontab[0,"events",0,"active"]:"0";
- synchronize_time = tmp == "1";
- tmp = (string) crontab[0,"events",0,"minute"]:"*/5";
- y2milestone("MINUTE %1", tmp);
- list pos = regexppos(tmp, "[0-9]+");
- string tmp2 = substring(tmp,pos[0]:0,pos[1]:0);
- sync_interval = tointeger(tmp2);
- y2milestone("SYNC_INTERVAL %1", sync_interval);
+
+ ReadSynchronization ();
string run_chroot_s = (string) SCR::Read (.sysconfig.ntp.NTPD_RUN_CHROOTED);
run_chroot = run_chroot_s == "yes";
@@ -826,7 +846,7 @@
}
if (synchronize_time)
{
- SCR::Write (.target.string,cron_file,"-*/"+sync_interval+" * * * * root /etc/init.d/ntp ntptimeset &>/dev/null");
+ SCR::Write (.target.string,cron_file,"-*/"+sync_interval+" * * * * root /etc/init.d/ntp ntptimeset &>/dev/null\n");
}
else
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ntp-client-2.18.1/VERSION new/yast2-ntp-client-2.20.1/VERSION
--- old/yast2-ntp-client-2.18.1/VERSION 2010-04-09 17:26:18.000000000 +0200
+++ new/yast2-ntp-client-2.20.1/VERSION 2010-11-12 08:55:19.000000000 +0100
@@ -1 +1 @@
-2.18.1
+2.20.1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package yast2-vm for openSUSE:Factory
checked in at Mon Nov 15 15:52:54 CET 2010.
--------
--- yast2-vm/yast2-vm.changes 2010-10-21 20:32:36.000000000 +0200
+++ /mounts/work_src_done/STABLE/yast2-vm/yast2-vm.changes 2010-11-10 23:26:03.000000000 +0100
@@ -1,0 +2,5 @@
+Wed Nov 10 15:20:12 MST 2010 - carnold(a)novell.com
+
+- bnc#628256 - sysvinit: Id "x0" respawning too fast
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
yast2-vm-2.17.0.tar.bz2
New:
----
yast2-vm-2.17.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-vm.spec ++++++
--- /var/tmp/diff_new_pack.2Rv54K/_old 2010-11-15 15:52:09.000000000 +0100
+++ /var/tmp/diff_new_pack.2Rv54K/_new 2010-11-15 15:52:09.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package yast2-vm (Version 2.17.0)
+# spec file for package yast2-vm (Version 2.17.1)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -19,12 +19,12 @@
Name: yast2-vm
-Version: 2.17.0
+Version: 2.17.1
Release: 1
License: GPL
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-vm-2.17.0.tar.bz2
+Source0: yast2-vm-2.17.1.tar.bz2
Prefix: /usr
@@ -39,7 +39,7 @@
This YaST module configures and installs a virtual machine.
%prep
-%setup -n yast2-vm-2.17.0
+%setup -n yast2-vm-2.17.1
%build
%{prefix}/bin/y2tool y2autoconf
++++++ yast2-vm-2.17.0.tar.bz2 -> yast2-vm-2.17.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-vm-2.17.0/src/vm_finish.ycp new/yast2-vm-2.17.1/src/vm_finish.ycp
--- old/yast2-vm-2.17.0/src/vm_finish.ycp 2010-10-21 18:33:05.000000000 +0200
+++ new/yast2-vm-2.17.1/src/vm_finish.ycp 2010-11-10 23:21:50.000000000 +0100
@@ -28,7 +28,7 @@
* Authors:
* Ladislav Slezak <lslezak(a)suse.cz>
*
- * $Id: vm_finish.ycp 56552 2009-04-01 19:45:27Z charlesa $
+ * $Id: vm_finish.ycp 62820 2010-11-10 22:18:38Z charlesa $
*
*/
@@ -38,6 +38,7 @@
import "Arch";
import "Report";
+import "FileUtils";
any ret = nil;
string func = "";
@@ -96,8 +97,15 @@
y2milestone("check for xvc0 in inittab and securetty");
if ( !contains(SCR::Dir(.etc.inittab), "x0") )
{
+ y2milestone("Adding the x0 entry in the inittab file");
SCR::Write (.etc.inittab.x0, sformat ("12345:respawn:/sbin/agetty -L 9600 xvc0 xterm"));
SCR::Write (.etc.inittab, nil);
+ string dev_xvc0 = "/dev/xvc0";
+ if ( ! FileUtils::Exists(dev_xvc0) )
+ {
+ y2milestone("%1 not found, commenting out the x0 entry in the inittab", dev_xvc0);
+ SCR::Execute(.target.bash,"/bin/sed --in-place 's/^x0:/#x0:/g' /etc/inittab");
+ }
}
SCR::Execute(.target.bash,"/usr/bin/grep -q xvc0 /etc/securetty || echo xvc0 >> /etc/securetty");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-vm-2.17.0/VERSION new/yast2-vm-2.17.1/VERSION
--- old/yast2-vm-2.17.0/VERSION 2010-10-21 18:33:05.000000000 +0200
+++ new/yast2-vm-2.17.1/VERSION 2010-11-10 23:16:44.000000000 +0100
@@ -1 +1 @@
-2.17.0
+2.17.1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package libfprint for openSUSE:Factory
checked in at Mon Nov 15 15:41:40 CET 2010.
--------
--- libfprint/libfprint.changes 2010-10-07 11:46:33.000000000 +0200
+++ /mounts/work_src_done/STABLE/libfprint/libfprint.changes 2010-11-11 12:55:15.000000000 +0100
@@ -1,0 +2,5 @@
+Thu Nov 11 11:55:05 UTC 2010 - coolo(a)novell.com
+
+- own parent directories of udev rules
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libfprint.spec ++++++
--- /var/tmp/diff_new_pack.ZqdhIt/_old 2010-11-15 15:40:30.000000000 +0100
+++ /var/tmp/diff_new_pack.ZqdhIt/_new 2010-11-15 15:40:30.000000000 +0100
@@ -24,7 +24,7 @@
Group: Development/Libraries/C and C++
PreReq: %fillup_prereq
Version: 0.3.0
-Release: 1
+Release: 2
Summary: Library for fingerprint reader support
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: %{name}-%{version}.tar.bz2
@@ -111,6 +111,8 @@
%files -n libfprint0
%defattr(-, root, root)
%{_libdir}/%{name}.so.*
+%dir %{_sysconfdir}/udev
+%dir %{_sysconfdir}/udev/rules.d
%{_sysconfdir}/udev/rules.d/60-fprint-autosuspend.rules
%files devel
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package xen for openSUSE:Factory
checked in at Mon Nov 15 15:40:11 CET 2010.
--------
--- xen/xen.changes 2010-10-29 18:37:28.000000000 +0200
+++ /mounts/work_src_done/STABLE/xen/xen.changes 2010-11-12 18:55:07.000000000 +0100
@@ -1,0 +2,106 @@
+Fri Nov 12 09:48:14 MST 2010 - carnold(a)novell.com
+
+- Upstream patch for python 2.7 compatibility
+ 22045-python27-compat.patch
+
+-------------------------------------------------------------------
+Thu Nov 11 18:44:48 CST 2010 - cyliu(a)novell.com
+
+- bnc#641144 - FV Xen VM running windows or linux cannot write to
+ virtual floppy drive
+ bdrv_default_rwflag.patch
+
+-------------------------------------------------------------------
+Thu Nov 11 21:01:12 CET 2010 - ohering(a)suse.de
+
+- fate#310510 - fix xenpaging
+ xenpaging.optimize_p2m_mem_paging_populate.patch
+ xenpaging.HVMCOPY_gfn_paged_out.patch
+
+-------------------------------------------------------------------
+Thu Nov 11 10:11:35 MST 2010 - carnold(a)novell.com
+
+- bnc#649864 - automatic numa cpu placement of xen conflicts with
+ cpupools
+ 22326-cpu-pools-numa-placement.patch
+
+-------------------------------------------------------------------
+Wed Nov 10 17:38:39 CET 2010 - ohering(a)suse.de
+
+- fate#310510 - fix xenpaging
+ xenpaging.populate_only_if_paged.patch
+ - revert logic, populate needs to happen unconditionally
+ xenpaging.p2m_mem_paging_populate_if_p2m_ram_paged.patch
+ - invalidate current mfn only if gfn is not in flight or done
+ xenpaging.mem_event_check_ring-free_requests.patch
+ - print info only if 1 instead of 2 slots are free
+ xenpaging.guest_remove_page.patch
+ - check mfn before usage in resume function
+ xenpaging.machine_to_phys_mapping.patch
+ - check mfn before usage in resume function
+
+-------------------------------------------------------------------
+Tue Nov 9 10:00:48 MST 2010 - jfehlig(a)novell.com
+
+- bnc#552115 - Remove target discovery in block-iscsi
+ modified block-iscsi script
+
+-------------------------------------------------------------------
+Mon Nov 8 13:11:02 MDT 2010 - jfehlig(a)novell.com
+
+- bnc#649277 - Fix pci passthru in xend interface used by libvirt
+ 22369-xend-pci-passthru-fix.patch
+
+-------------------------------------------------------------------
+Mon Nov 8 02:49:00 UTC 2010 - lidongyang(a)novell.com
+
+- bnc#642078 - xm snapshot-create causes qemu-dm to SEGV
+ snapshot-without-pv-fix.patch
+
+-------------------------------------------------------------------
+Fri Nov 5 16:22:15 CET 2010 - ohering(a)suse.de
+
+- fate#310510 - fix xenpaging
+ xenpaging.num_pages_equal_max_pages.patch
+
+-------------------------------------------------------------------
+Fri Nov 5 09:13:38 MDT 2010 - carnold(a)novell.com
+
+- bnc#647681 - L3: Passthrough of certain PCI device broken after
+ SLES 11 to SP1 upgrade
+- bnc#650871 - Regression in Xen PCI Passthrough
+ 22348-vtd-check-secbus-devfn.patch
+- Upstream patches from Jan
+ 22223-vtd-workarounds.patch
+ 22231-x86-pv-ucode-msr-intel.patch
+ 22232-x86-64-lahf-lm-bios-workaround.patch
+ 22280-kexec.patch
+ 22337-vtd-scan-single-func.patch
+
+-------------------------------------------------------------------
+Wed Nov 3 16:26:10 MDT 2010 - carnold(a)novell.com
+
+- bnc#497149 - SLES11 64bit Xen - SLES11 64bit HVM guest has
+ corrupt text console
+ stdvga-cache.patch
+
+-------------------------------------------------------------------
+Wed Nov 3 17:52:14 CET 2010 - ohering(a)suse.de
+
+- fate#310510 - fix xenpaging
+ xenpaging.page_already_populated.patch
+ xenpaging.notify_policy_only_once.patch
+ xenpaging.guest_remove_page.patch
+ xenpaging.machine_to_phys_mapping.patch
+ remove xenpaging.memory_op.patch, retry loops are not needed
+
+-------------------------------------------------------------------
+Tue Nov 2 14:10:34 MDT 2010 - carnold(a)novell.com
+
+- bnc#474789 - xen-tools 3.3 rpm misses pv-grub
+- PV-GRUB replaces PyGrub to boot domU images safely: it runs the
+ regular grub inside the created domain itself and uses regular
+ domU facilities to read the disk / fetch files from network etc.;
+ it eventually loads the PV kernel and chain-boots it.
+
+-------------------------------------------------------------------
@@ -68 +173,0 @@
- 22223-vtd-igd-workaround.patch
calling whatdependson for head-i586
Old:
----
22223-vtd-igd-workaround.patch
xenpaging.memory_op.patch
New:
----
22045-python27-compat.patch
22223-vtd-workarounds.patch
22231-x86-pv-ucode-msr-intel.patch
22232-x86-64-lahf-lm-bios-workaround.patch
22280-kexec.patch
22326-cpu-pools-numa-placement.patch
22337-vtd-scan-single-func.patch
22348-vtd-check-secbus-devfn.patch
22369-xend-pci-passthru-fix.patch
bdrv_default_rwflag.patch
minios-fixups.patch
snapshot-without-pv-fix.patch
stdvga-cache.patch
stubdom.tar.bz2
xenpaging.guest_remove_page.patch
xenpaging.HVMCOPY_gfn_paged_out.patch
xenpaging.machine_to_phys_mapping.patch
xenpaging.notify_policy_only_once.patch
xenpaging.num_pages_equal_max_pages.patch
xenpaging.optimize_p2m_mem_paging_populate.patch
xenpaging.p2m_mem_paging_populate_if_p2m_ram_paged.patch
xenpaging.page_already_populated.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:08.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:08.000000000 +0100
@@ -57,23 +57,27 @@
%endif
%ifarch x86_64
BuildRequires: glibc-32bit glibc-devel-32bit
+BuildRequires: gcc-32bit
+BuildRequires: gcc43-32bit
%define max_cpus 256
%define pae_enabled n
%else
%define max_cpus 32
%define pae_enabled y
%endif
+BuildRequires: glibc-devel
%if %{?with_kmp}0
BuildRequires: kernel-source kernel-syms module-init-tools xorg-x11
%endif
Version: 4.0.1_01
-Release: 2
+Release: 3
License: GPLv2+
Group: System/Kernel
AutoReqProv: on
PreReq: %insserv_prereq %fillup_prereq
Summary: Xen Virtualization: Hypervisor (aka VMM aka Microkernel)
Source0: xen-4.0.1-testing-src.tar.bz2
+Source1: stubdom.tar.bz2
Source2: README.SuSE
Source3: boot.xen
Source4: boot.local.xenU
@@ -121,25 +125,32 @@
Patch16: 21866-xenapi.patch
Patch17: 21894-intel-unmask-cpuid.patch
Patch18: 22019-x86-cpuidle-online-check.patch
-Patch19: 22051-x86-forced-EOI.patch
-Patch20: 22067-x86-irq-domain.patch
-Patch21: 22068-vtd-irte-RH-bit.patch
-Patch22: 22071-ept-get-entry-lock.patch
-Patch23: 22084-x86-xsave-off.patch
-Patch24: 7410-qemu-alt-gr.patch
-Patch25: 22135-heap-lock.patch
-Patch26: 22148-serial-irq-dest.patch
-Patch27: 22157-x86-debug-key-i.patch
-Patch28: 22159-notify-evtchn-dying.patch
-Patch29: 22160-Intel-C6-EOI.patch
-Patch30: 22174-x86-pmtimer-accuracy.patch
-Patch31: 22175-x86-irq-enter-exit.patch
-Patch32: 22177-i386-irq-safe-map_domain_page.patch
-Patch33: 22194-tmem-check-pv-mfn.patch
-Patch34: 22213-x86-xsave-cpuid-check.patch
-Patch35: 22214-x86-msr-misc-enable.patch
-Patch36: 22222-x86-timer-extint.patch
-Patch37: 22223-vtd-igd-workaround.patch
+Patch19: 22045-python27-compat.patch
+Patch20: 22051-x86-forced-EOI.patch
+Patch21: 22067-x86-irq-domain.patch
+Patch22: 22068-vtd-irte-RH-bit.patch
+Patch23: 22071-ept-get-entry-lock.patch
+Patch24: 22084-x86-xsave-off.patch
+Patch25: 7410-qemu-alt-gr.patch
+Patch26: 22135-heap-lock.patch
+Patch27: 22148-serial-irq-dest.patch
+Patch28: 22157-x86-debug-key-i.patch
+Patch29: 22159-notify-evtchn-dying.patch
+Patch30: 22160-Intel-C6-EOI.patch
+Patch31: 22174-x86-pmtimer-accuracy.patch
+Patch32: 22175-x86-irq-enter-exit.patch
+Patch33: 22177-i386-irq-safe-map_domain_page.patch
+Patch34: 22194-tmem-check-pv-mfn.patch
+Patch35: 22213-x86-xsave-cpuid-check.patch
+Patch36: 22214-x86-msr-misc-enable.patch
+Patch37: 22222-x86-timer-extint.patch
+Patch38: 22223-vtd-workarounds.patch
+Patch39: 22231-x86-pv-ucode-msr-intel.patch
+Patch40: 22232-x86-64-lahf-lm-bios-workaround.patch
+Patch41: 22280-kexec.patch
+Patch42: 22337-vtd-scan-single-func.patch
+Patch43: 22348-vtd-check-secbus-devfn.patch
+Patch44: 22369-xend-pci-passthru-fix.patch
# Our patches
Patch300: xen-config.diff
Patch301: xend-config.diff
@@ -200,11 +211,13 @@
Patch372: popen2-argument-fix.patch
Patch373: usb-list.patch
Patch374: xend-devid-or-name.patch
+Patch375: 22326-cpu-pools-numa-placement.patch
# Patches for snapshot support
Patch400: snapshot-ioemu-save.patch
Patch401: snapshot-ioemu-restore.patch
Patch402: snapshot-ioemu-delete.patch
Patch403: snapshot-xend.patch
+Patch404: snapshot-without-pv-fix.patch
# ioemu part of blktap patch series
Patch410: ioemu-blktap-fv-init.patch
Patch411: ioemu-blktap-image-format.patch
@@ -230,6 +243,9 @@
Patch435: change_home_server.patch
Patch436: altgr_2.patch
Patch437: xenfb_32bpp.patch
+Patch438: stdvga-cache.patch
+Patch439: minios-fixups.patch
+Patch440: bdrv_default_rwflag.patch
# Jim's domain lock patch
Patch450: xend-domain-lock.patch
# Hypervisor and PV driver Patches
@@ -266,14 +282,21 @@
Patch10011: xenpaging.pagefile.patch
Patch10012: xenpaging.xenpaging_init.patch
Patch10013: xenpaging.mem_paging_tool_qemu_flush_cache.patch
-Patch10014: xenpaging.memory_op.patch
+Patch10014: xenpaging.machine_to_phys_mapping.patch
Patch10015: xenpaging.populate_only_if_paged.patch
Patch10017: xenpaging.autostart.patch
Patch10018: xenpaging.signal_handling.patch
Patch10019: xenpaging.MRU_SIZE.patch
+Patch10020: xenpaging.guest_remove_page.patch
Patch10021: xenpaging.mem_event_check_ring-free_requests.patch
Patch10022: xenpaging.blacklist.patch
Patch10023: xenpaging.autostart_delay.patch
+Patch10024: xenpaging.page_already_populated.patch
+Patch10025: xenpaging.notify_policy_only_once.patch
+Patch10026: xenpaging.num_pages_equal_max_pages.patch
+Patch10027: xenpaging.p2m_mem_paging_populate_if_p2m_ram_paged.patch
+Patch10028: xenpaging.HVMCOPY_gfn_paged_out.patch
+Patch10029: xenpaging.optimize_p2m_mem_paging_populate.patch
Patch10040: xenpaging.doc.patch
Url: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -606,7 +629,7 @@
Ian Pratt <ian.pratt(a)cl.cam.ac.uk>
%prep
-%setup -q -n %xen_build_dir
+%setup -q -n %xen_build_dir -a 1
%patch0 -p1
%patch1 -p1
%patch2 -p1
@@ -645,6 +668,13 @@
%patch35 -p1
%patch36 -p1
%patch37 -p1
+%patch38 -p1
+%patch39 -p1
+%patch40 -p1
+%patch41 -p1
+%patch42 -p1
+%patch43 -p1
+%patch44 -p1
%patch300 -p1
%patch301 -p1
%patch302 -p1
@@ -703,10 +733,12 @@
%patch372 -p1
%patch373 -p1
%patch374 -p1
+%patch375 -p1
%patch400 -p1
%patch401 -p1
%patch402 -p1
%patch403 -p1
+%patch404 -p1
%patch410 -p1
%patch411 -p1
%patch412 -p1
@@ -730,6 +762,9 @@
%patch435 -p1
%patch436 -p1
%patch437 -p1
+%patch438 -p1
+%patch439 -p1
+%patch440 -p1
%patch450 -p1
%patch500 -p1
%patch501 -p1
@@ -766,9 +801,16 @@
%patch10017 -p1
%patch10018 -p1
%patch10019 -p1
+%patch10020 -p1
%patch10021 -p1
%patch10022 -p1
%patch10023 -p1
+%patch10024 -p1
+%patch10025 -p1
+%patch10026 -p1
+%patch10027 -p1
+%patch10028 -p1
+%patch10029 -p1
%patch10040 -p1
%build
@@ -857,6 +899,17 @@
mkdir -p $RPM_BUILD_ROOT/etc/modprobe.d
install -m644 %SOURCE19 $RPM_BUILD_ROOT/etc/modprobe.d/xen_pvdrivers.conf
%endif
+# stubdom
+make stubdom
+make -C stubdom install \
+ DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir} \
+ DOCDIR=%{_defaultdocdir}/xen INCDIR=%{_includedir}
+mkdir -p $RPM_BUILD_ROOT/%{_defaultdocdir}/xen
+%ifarch x86_64
+ln -s /usr/lib/xen/boot/pv-grub-x86_32.gz $RPM_BUILD_ROOT/usr/lib/xen/boot/pv-grub-x86_32.gz
+ln -s /usr/lib/xen/bin/stubdom-dm $RPM_BUILD_ROOT/usr/lib64/xen/bin/stubdom-dm
+ln -s /usr/lib/xen/bin/stubdompath.sh $RPM_BUILD_ROOT/usr/lib64/xen/bin/stubdompath.sh
+%endif
# docs
make -C docs install \
DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir} \
@@ -1077,6 +1130,12 @@
%{_datadir}/xen/qemu/*
%{_datadir}/xen/man/man1/*
%{_datadir}/xen/man/man8/*
+/usr/lib/xen/bin/stubdom-dm
+/usr/lib/xen/bin/stubdompath.sh
+%ifarch x86_64
+%{_libdir}/xen/bin/stubdom-dm
+%{_libdir}/xen/bin/stubdompath.sh
+%endif
%{_libdir}/xen/bin/qemu-dm
%ifarch x86_64
/usr/lib/xen/bin/qemu-dm
@@ -1092,6 +1151,11 @@
%{_libdir}/python%{pyver}/site-packages/grub/*
#%pysite/fsimage.so
%{_libdir}/python%{pyver}/site-packages/fsimage.so
+/usr/lib/xen/boot/ioemu-stubdom.gz
+/usr/lib/xen/boot/pv-grub-x86_32.gz
+%ifarch x86_64
+/usr/lib/xen/boot/pv-grub-x86_64.gz
+%endif
%files tools-domU
%defattr(-,root,root)
++++++ 22045-python27-compat.patch ++++++
# HG changeset patch
# User Michael Young <m.a.young(a)durham.ac.uk>
# Date 1282234170 -3600
# Node ID 2940165380de2348e0ea3f628dea35750a2b4c8f
# Parent 60746a2c14a6cc123892f973fbdd6acb73251d39
tools/python: fix xm list for Python 2.7
This patch fixes
Unexpected error: <type 'exceptions.AttributeError'>
This is due to xmlrpc changes in Python 2.7. This patch should
fixe it for both old and new versions.
Signed-off-by: Michael Young <m.a.young(a)durham.ac.uk>
Signed-off-by: Ian Jackson <ian.jackson(a)eu.citrix.com>
Index: xen-4.0.1-testing/tools/python/xen/util/xmlrpcclient.py
===================================================================
--- xen-4.0.1-testing.orig/tools/python/xen/util/xmlrpcclient.py
+++ xen-4.0.1-testing/tools/python/xen/util/xmlrpcclient.py
@@ -22,6 +22,7 @@ import socket
import string
import xmlrpclib
from types import StringTypes
+from sys import hexversion
try:
@@ -54,7 +55,12 @@ class UnixTransport(xmlrpclib.Transport)
return xmlrpclib.Transport.request(self, host, '/RPC2',
request_body, verbose)
def make_connection(self, host):
- return HTTPUnix(self.__handler)
+ if hexversion < 0x02070000:
+ # python 2.6 or earlier
+ return HTTPUnix(self.__handler)
+ else:
+ # xmlrpclib.Transport changed in python 2.7
+ return HTTPUnixConnection(self.__handler)
# We need our own transport for HTTPS, because xmlrpclib.SafeTransport is
Index: xen-4.0.1-testing/tools/python/xen/util/xmlrpclib2.py
===================================================================
--- xen-4.0.1-testing.orig/tools/python/xen/util/xmlrpclib2.py
+++ xen-4.0.1-testing/tools/python/xen/util/xmlrpclib2.py
@@ -58,6 +58,9 @@ def stringify(value):
# some bugs in Keep-Alive handling and also enabled it by default
class XMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
protocol_version = "HTTP/1.1"
+ # xend crashes in python 2.7 unless disable_nagle_algorithm = False
+ # it isn't used in earlier versions so it is harmless to set it generally
+ disable_nagle_algorithm = False
def __init__(self, hosts_allowed, request, client_address, server):
self.hosts_allowed = hosts_allowed
++++++ 22223-vtd-workarounds.patch ++++++
++++ 719 lines (skipped)
++++++ 22231-x86-pv-ucode-msr-intel.patch ++++++
# HG changeset patch
# User Keir Fraser <keir(a)xen.org>
# Date 1286784105 -3600
# Node ID a1405385db77c7c81aac27bd88d6c4b2d90b1389
# Parent a33886146b45da46a5161a7ebed4d2f607642aee
x86: emulate MSR_IA32_UCODE_REV Intel access protocol
Intel requires a write of zeros (hence such writes now get silently
ignored) followed by a cpuid(1) followed by the actual read.
Includes some code redundancy elimination possible after the actual
change.
Signed-off-by: Jan Beulich <jbeulich(a)novell.com>
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -2268,6 +2268,14 @@ static int emulate_privileged_op(struct
if ( wrmsr_safe(MSR_FAM10H_MMIO_CONF_BASE, eax, edx) != 0 )
goto fail;
break;
+ case MSR_IA32_UCODE_REV:
+ if ( boot_cpu_data.x86_vendor != X86_VENDOR_INTEL )
+ goto fail;
+ if ( rdmsr_safe(regs->ecx, l, h) )
+ goto fail;
+ if ( l | h )
+ goto invalid;
+ break;
case MSR_IA32_MISC_ENABLE:
if ( rdmsr_safe(regs->ecx, l, h) )
goto invalid;
@@ -2375,16 +2383,21 @@ static int emulate_privileged_op(struct
regs->eax = regs->edx = 0;
break;
}
- if ( rdmsr_safe(regs->ecx, regs->eax, regs->edx) != 0 )
- goto fail;
- break;
+ goto rdmsr_normal;
+ case MSR_IA32_UCODE_REV:
+ BUILD_BUG_ON(MSR_IA32_UCODE_REV != MSR_AMD_PATCHLEVEL);
+ if ( boot_cpu_data.x86_vendor == X86_VENDOR_INTEL )
+ {
+ if ( wrmsr_safe(MSR_IA32_UCODE_REV, 0, 0) )
+ goto fail;
+ sync_core();
+ }
+ goto rdmsr_normal;
case MSR_IA32_MISC_ENABLE:
if ( rdmsr_safe(regs->ecx, regs->eax, regs->edx) )
goto fail;
regs->eax = guest_misc_enable(regs->eax);
break;
- case MSR_EFER:
- case MSR_AMD_PATCHLEVEL:
default:
if ( rdmsr_hypervisor_regs(regs->ecx, &val) )
{
@@ -2400,6 +2413,8 @@ static int emulate_privileged_op(struct
if ( rc )
goto rdmsr_writeback;
+ case MSR_EFER:
+ rdmsr_normal:
/* Everyone can read the MSR space. */
/* gdprintk(XENLOG_WARNING,"Domain attempted RDMSR %p.\n",
_p(regs->ecx));*/
++++++ 22232-x86-64-lahf-lm-bios-workaround.patch ++++++
# HG changeset patch
# User Keir Fraser <keir(a)xen.org>
# Date 1286784156 -3600
# Node ID eb964c4b4f31c6b7bdfe8504839c4acac776f506
# Parent a1405385db77c7c81aac27bd88d6c4b2d90b1389
x86-64: workaround for BIOSes wrongly enabling LAHF_LM feature indicator
This workaround is taken from Linux, and the main motivation (besides
such workarounds indeed belonging in the hypervisor rather than each
kernel) is to suppress the warnings in the Xen log each Linux guest
would cause due to the disallowed wrmsr.
Signed-off-by: Jan Beulich <jbeulich(a)novell.com>
--- a/xen/arch/x86/cpu/amd.c
+++ b/xen/arch/x86/cpu/amd.c
@@ -44,6 +44,47 @@ static inline void wrmsr_amd(unsigned in
);
}
+static inline int rdmsr_amd_safe(unsigned int msr, unsigned int *lo,
+ unsigned int *hi)
+{
+ int err;
+
+ asm volatile("1: rdmsr\n2:\n"
+ ".section .fixup,\"ax\"\n"
+ "3: movl %6,%2\n"
+ " jmp 2b\n"
+ ".previous\n"
+ ".section __ex_table,\"a\"\n"
+ __FIXUP_ALIGN "\n"
+ __FIXUP_WORD " 1b,3b\n"
+ ".previous\n"
+ : "=a" (*lo), "=d" (*hi), "=r" (err)
+ : "c" (msr), "D" (0x9c5a203a), "2" (0), "i" (-EFAULT));
+
+ return err;
+}
+
+static inline int wrmsr_amd_safe(unsigned int msr, unsigned int lo,
+ unsigned int hi)
+{
+ int err;
+
+ asm volatile("1: wrmsr\n2:\n"
+ ".section .fixup,\"ax\"\n"
+ "3: movl %6,%0\n"
+ " jmp 2b\n"
+ ".previous\n"
+ ".section __ex_table,\"a\"\n"
+ __FIXUP_ALIGN "\n"
+ __FIXUP_WORD " 1b,3b\n"
+ ".previous\n"
+ : "=r" (err)
+ : "c" (msr), "a" (lo), "d" (hi), "D" (0x9c5a203a),
+ "0" (0), "i" (-EFAULT));
+
+ return err;
+}
+
/*
* Mask the features and extended features returned by CPUID. Parameters are
* set from the boot line via two methods:
@@ -330,6 +371,24 @@ static void __devinit init_amd(struct cp
3DNow is IDd by bit 31 in extended CPUID (1*32+31) anyway */
clear_bit(0*32+31, c->x86_capability);
+#ifdef CONFIG_X86_64
+ if (c->x86 == 0xf && c->x86_model < 0x14
+ && cpu_has(c, X86_FEATURE_LAHF_LM)) {
+ /*
+ * Some BIOSes incorrectly force this feature, but only K8
+ * revision D (model = 0x14) and later actually support it.
+ * (AMD Erratum #110, docId: 25759).
+ */
+ unsigned int lo, hi;
+
+ clear_bit(X86_FEATURE_LAHF_LM, c->x86_capability);
+ if (!rdmsr_amd_safe(0xc001100d, &lo, &hi)) {
+ hi &= ~1;
+ wrmsr_amd_safe(0xc001100d, lo, hi);
+ }
+ }
+#endif
+
r = get_model_name(c);
switch(c->x86)
++++++ 22280-kexec.patch ++++++
# HG changeset patch
# User Keir Fraser <keir(a)xen.org>
# Date 1287922506 -3600
# Node ID d6e3cd10a9a6ab16d0cc772ee70b2ae99e8fac31
# Parent 2208a036f8d9d932de8ab0aa0206f5c57dba8728
x86/kexec: fix very old regression and make compatible with modern Linux
References: bnc#619122
c/s 13829 lost the (32-bit only) cpu_has_pae argument passed to the
primary kernel's stub (in the 32-bit Xen case only), and Linux
2.6.27/.30 (32-/64-bit) introduced a new argument (for KEXEC_JUMP)
which for now simply gets passed a hardcoded value.
Signed-off-by: Jan Beulich <jbeulich(a)novell.com>
--- a/xen/arch/x86/machine_kexec.c
+++ b/xen/arch/x86/machine_kexec.c
@@ -23,7 +23,11 @@
typedef void (*relocate_new_kernel_t)(
unsigned long indirection_page,
unsigned long *page_list,
- unsigned long start_address);
+ unsigned long start_address,
+#ifdef __i386__
+ unsigned int cpu_has_pae,
+#endif
+ unsigned int preserve_context);
extern int machine_kexec_get_xen(xen_kexec_range_t *range);
@@ -121,7 +125,11 @@ void machine_kexec(xen_kexec_image_t *im
rnk = (relocate_new_kernel_t) image->page_list[1];
(*rnk)(image->indirection_page, image->page_list,
- image->start_address);
+ image->start_address,
+#ifdef __i386__
+ 1 /* cpu_has_pae */,
+#endif
+ 0 /* preserve_context */);
}
}
--- a/xen/arch/x86/x86_64/compat_kexec.S
+++ b/xen/arch/x86/x86_64/compat_kexec.S
@@ -119,6 +119,7 @@ compatibility_mode:
movl %eax, %ss
/* Push arguments onto stack. */
+ pushl $0 /* 20(%esp) - preserve context */
pushl $1 /* 16(%esp) - cpu has pae */
pushl %ecx /* 12(%esp) - start address */
pushl %edx /* 8(%esp) - page list */
--- a/xen/include/asm-x86/cpufeature.h
+++ b/xen/include/asm-x86/cpufeature.h
@@ -138,7 +138,6 @@
#define cpu_has_de boot_cpu_has(X86_FEATURE_DE)
#define cpu_has_pse boot_cpu_has(X86_FEATURE_PSE)
#define cpu_has_tsc boot_cpu_has(X86_FEATURE_TSC)
-#define cpu_has_pae boot_cpu_has(X86_FEATURE_PAE)
#define cpu_has_pge boot_cpu_has(X86_FEATURE_PGE)
#define cpu_has_pat boot_cpu_has(X86_FEATURE_PAT)
#define cpu_has_apic boot_cpu_has(X86_FEATURE_APIC)
@@ -164,7 +163,6 @@
#define cpu_has_de 1
#define cpu_has_pse 1
#define cpu_has_tsc 1
-#define cpu_has_pae 1
#define cpu_has_pge 1
#define cpu_has_pat 1
#define cpu_has_apic boot_cpu_has(X86_FEATURE_APIC)
++++++ 22326-cpu-pools-numa-placement.patch ++++++
# HG changeset patch
# User Juergen Gross <juergen.gross(a)ts.fujitsu.com>
# Date 1288264929 -3600
# Node ID dc66c13a29f9af67e0258f688bcd6330cf515383
# Parent 4ac03710fc320e8f76014ca27849da03b85dff9d
avoid numa placement of cpus with active cpupools
When using cpupools don't pin vcpus to numa nodes as this might
conflict with the cpupool definition.
numa placement should be handled by cpupool configuration instead.
Signed-off-by: Juergen Gross <juergen.gross(a)ts.fujitsu.com>
Signed-off-by: Ian Jackson <ian.jackson(a)eu.citrix.com>
Index: xen-4.0.1-testing/tools/python/xen/xend/XendCPUPool.py
===================================================================
--- xen-4.0.1-testing.orig/tools/python/xen/xend/XendCPUPool.py
+++ xen-4.0.1-testing/tools/python/xen/xend/XendCPUPool.py
@@ -881,6 +881,11 @@ class XendCPUPool(XendBase):
lookup_pool = classmethod(lookup_pool)
+ def number_of_pools(cls):
+ return len(xc.cpupool_getinfo())
+
+ number_of_pools = classmethod(number_of_pools)
+
def _cpu_number_to_ref(cls, number):
node = XendNode.instance()
for cpu_ref in node.get_host_cpu_refs():
Index: xen-4.0.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
--- xen-4.0.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
+++ xen-4.0.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -2790,7 +2790,7 @@ class XendDomainInfo:
return map(lambda x: x[0], sorted(enumerate(nodeload), key=lambda x:x[1]))
info = xc.physinfo()
- if info['nr_nodes'] > 1:
+ if info['nr_nodes'] > 1 and XendCPUPool.number_of_pools() < 2:
node_memory_list = info['node_to_memory']
needmem = self.image.getRequiredAvailableMemory(self.info['memory_dynamic_max']) / 1024
candidate_node_list = []
++++++ 22337-vtd-scan-single-func.patch ++++++
# HG changeset patch
# User Keir Fraser <keir(a)xen.org>
# Date 1288371977 -3600
# Node ID 7afd8dd1d6cb97484d263311f3f0e6ab74d27ed3
# Parent 49803ac994f4094719ec2c3b67d82561a24ba293
VT-d: only scan secondary functions on multi-function devices
Signed-off-by: Jan Beulich <jbeulich(a)novell.com>
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -442,6 +442,10 @@ int __init scan_pci_devices(void)
spin_unlock(&pcidevs_lock);
return -EINVAL;
}
+
+ if ( !func && !(pci_conf_read8(bus, dev, func,
+ PCI_HEADER_TYPE) & 0x80) )
+ break;
}
}
}
++++++ 22348-vtd-check-secbus-devfn.patch ++++++
# HG changeset patch
# User Keir Fraser <keir(a)xen.org>
# Date 1288772331 0
# Node ID 2dfba250c50bafac4e333d84450324daedf5ae2c
# Parent 16093532f384eee02518520662a38ad16915b063
VT-d: fix device assignment failure (regression from Xen c/s 19805:2f1fa2215e60)
References: bnc#647681
If the device at <secbus>:00.0 is the device the mapping operation was
initiated for, trying to map it a second time will fail, and hence
this second mapping attempt must be prevented (as was done prior to
said c/s).
While at it, simplify the code a little, too.
Signed-off-by: Jan Beulich <jbeulich(a)novell.com>
Acked-by: Weidong Han <weidong.han(a)intel.com>
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1402,23 +1402,16 @@ static int domain_context_mapping(struct
if ( find_upstream_bridge(&bus, &devfn, &secbus) < 1 )
break;
- /* PCIe to PCI/PCIx bridge */
- if ( pdev_type(bus, devfn) == DEV_TYPE_PCIe2PCI_BRIDGE )
- {
- ret = domain_context_mapping_one(domain, drhd->iommu, bus, devfn);
- if ( ret )
- return ret;
+ ret = domain_context_mapping_one(domain, drhd->iommu, bus, devfn);
- /*
- * Devices behind PCIe-to-PCI/PCIx bridge may generate
- * different requester-id. It may originate from devfn=0
- * on the secondary bus behind the bridge. Map that id
- * as well.
- */
+ /*
+ * Devices behind PCIe-to-PCI/PCIx bridge may generate different
+ * requester-id. It may originate from devfn=0 on the secondary bus
+ * behind the bridge. Map that id as well if we didn't already.
+ */
+ if ( !ret && pdev_type(bus, devfn) == DEV_TYPE_PCIe2PCI_BRIDGE &&
+ (secbus != pdev->bus || pdev->devfn != 0) )
ret = domain_context_mapping_one(domain, drhd->iommu, secbus, 0);
- }
- else /* Legacy PCI bridge */
- ret = domain_context_mapping_one(domain, drhd->iommu, bus, devfn);
break;
++++++ 22369-xend-pci-passthru-fix.patch ++++++
# HG changeset patch
# User Jim Fehlig <jfehlig(a)novell.com>
# Date 1288301229 21600
# Branch xend-pci
# Node ID 461b9d3a643a2c67c961d9fc468a804891f3770d
# Parent 28a16074681582f1209c9077f870ccf44927133e
Fix pci passthru in xend interface used by libvirt
Attempting to define or create a domain whose XML config contains a
passthru PCI device fails with libvirt
xen84: # cat win2k8r2.xml
...
<hostdev mode='subsystem' type='pci' managed='no'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
</hostdev>
...
xen84: # virsh create ./win2k8r2.xml
error: Failed to create domain from ./win2k8r2.xml
error: POST operation failed: xend_post: error from xen daemon:
(xend.err "Error creating domain: 'key'")
The PCI device config maintained by xend includes a 'key' field, which is
initialized by xm client when using that tool and traditional xen config
file. libvirt, which uses xend's sexpr-over-http interface (is that the
proper name for that interface??), does not initialize this field - and
shouldn't be expected to do so IMO. Clients should not be bothered with
xend's internal representation of a PCI device.
This patch populates the 'key' field within xend if it is uninitialized,
similar to current initialization of 'uuid' field. The 'vdevfn' field
suffers a similar problem if not (optionally) specified by user.
AFAICT, the xm client initializes 'vdevfn' to 0x100 if not specified so
I've done the same here.
Signed-off-by: Jim Fehlig <jfehlig(a)novell.com>
diff -r 28a160746815 -r 461b9d3a643a tools/python/xen/util/pci.py
--- a/tools/python/xen/util/pci.py Wed Oct 27 12:24:28 2010 +0100
+++ b/tools/python/xen/util/pci.py Thu Oct 28 15:27:09 2010 -0600
@@ -240,10 +240,16 @@
pci_dev_info = dict(pci_dev[1:])
if 'opts' in pci_dev_info:
pci_dev_info['opts'] = pci_opts_list_from_sxp(pci_dev)
- # append uuid to each pci device that does't already have one.
+ # If necessary, initialize uuid, key, and vdevfn for each pci device
if not pci_dev_info.has_key('uuid'):
- dpci_uuid = pci_dev_info.get('uuid', uuid.createString())
- pci_dev_info['uuid'] = dpci_uuid
+ pci_dev_info['uuid'] = uuid.createString()
+ if not pci_dev_info.has_key('key'):
+ pci_dev_info['key'] = "%02x:%02x.%x" % \
+ (int(pci_dev_info['bus'], 16),
+ int(pci_dev_info['slot'], 16),
+ int(pci_dev_info['func'], 16))
+ if not pci_dev_info.has_key('vdevfn'):
+ pci_dev_info['vdevfn'] = "0x%02x" % AUTO_PHP_SLOT
pci_devs.append(pci_dev_info)
dev_config['devs'] = pci_devs
++++++ bdrv_default_rwflag.patch ++++++
Subject: modify default read/write flag in bdrv_init.
Signed-off by Chunyan Liu <cyliu(a)novell.com>
Index: xen-4.0.1-testing/tools/ioemu-qemu-xen/vl.c
===================================================================
--- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/vl.c
+++ xen-4.0.1-testing/tools/ioemu-qemu-xen/vl.c
@@ -2612,6 +2612,8 @@ int drive_init(struct drive_opt *arg, in
strncpy(drives_table[nb_drives].serial, serial, sizeof(serial));
nb_drives++;
+ bdrv_flags = BDRV_O_RDWR;
+
switch(type) {
case IF_IDE:
case IF_SCSI:
@@ -2624,6 +2626,7 @@ int drive_init(struct drive_opt *arg, in
break;
case MEDIA_CDROM:
bdrv_set_type_hint(bdrv, BDRV_TYPE_CDROM);
+ bdrv_flags &= ~BDRV_O_RDWR;
break;
}
break;
@@ -2644,7 +2647,6 @@ int drive_init(struct drive_opt *arg, in
}
if (!file[0])
return -2;
- bdrv_flags = 0;
if (snapshot) {
bdrv_flags |= BDRV_O_SNAPSHOT;
cache = 2; /* always use write-back with snapshot */
++++++ bdrv_open2_flags_2.patch ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:09.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:09.000000000 +0100
@@ -2,7 +2,7 @@
===================================================================
--- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
+++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
-@@ -227,6 +227,7 @@ static int open_disk(struct td_state *s,
+@@ -237,6 +237,7 @@ static int open_disk(struct td_state *s,
BlockDriver* drv;
char* devname;
static int devnumber = 0;
@@ -10,7 +10,7 @@
int i;
DPRINTF("Opening %s as blktap%d\n", path, devnumber);
-@@ -249,7 +250,7 @@ static int open_disk(struct td_state *s,
+@@ -259,7 +260,7 @@ static int open_disk(struct td_state *s,
DPRINTF("%s driver specified\n", drv ? drv->format_name : "No");
/* Open the image */
++++++ blktap-pv-cdrom.patch ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:09.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:09.000000000 +0100
@@ -741,7 +741,7 @@
===================================================================
--- xen-4.0.1-testing.orig/tools/blktap/lib/blktaplib.h
+++ xen-4.0.1-testing/tools/blktap/lib/blktaplib.h
-@@ -220,6 +220,7 @@ typedef struct msg_pid {
+@@ -225,6 +225,7 @@ typedef struct msg_pid {
#define DISK_TYPE_RAM 3
#define DISK_TYPE_QCOW 4
#define DISK_TYPE_QCOW2 5
++++++ block-iscsi ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:09.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:09.000000000 +0100
@@ -46,8 +46,6 @@
# load modules and start iscsid
/etc/init.d/open-iscsi status >/dev/null 2>&1 ||
{ /etc/init.d/open-iscsi start >/dev/null 2>&1; sleep 1; }
- # list of targets on node
- /sbin/iscsiadm -m discovery | sed "s/ .*//g" | while read line; do /sbin/iscsiadm -m discovery -t sendtargets -p $line; done >/dev/null
par=`xenstore-read $XENBUS_PATH/params` || true
TGTID=`echo $par | sed "s/\/\///g"`
while read rec uuid; do
++++++ ioemu-bdrv-open-CACHE_WB.patch ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:10.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:10.000000000 +0100
@@ -2,7 +2,7 @@
===================================================================
--- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
+++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
-@@ -249,8 +249,11 @@ static int open_disk(struct td_state *s,
+@@ -259,8 +259,11 @@ static int open_disk(struct td_state *s,
drv = blktap_drivers[i].drv;
DPRINTF("%s driver specified\n", drv ? drv->format_name : "No");
++++++ ioemu-blktap-barriers.patch ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:10.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:10.000000000 +0100
@@ -2,7 +2,7 @@
===================================================================
--- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
+++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
-@@ -362,6 +362,15 @@ static void qemu_send_responses(void* op
+@@ -360,6 +360,15 @@ static void qemu_send_responses(void* op
}
/**
@@ -18,7 +18,7 @@
* Callback function for the IO message pipe. Reads requests from the ring
* and processes them (call qemu read/write functions).
*
-@@ -380,6 +389,7 @@ static void handle_blktap_iomsg(void* pr
+@@ -378,6 +387,7 @@ static void handle_blktap_iomsg(void* pr
blkif_t *blkif = s->blkif;
tapdev_info_t *info = s->ring_info;
int page_size = getpagesize();
@@ -26,7 +26,7 @@
struct aiocb_info *aiocb_info;
-@@ -412,7 +422,7 @@ static void handle_blktap_iomsg(void* pr
+@@ -410,7 +420,7 @@ static void handle_blktap_iomsg(void* pr
/* Don't allow writes on readonly devices */
if ((s->flags & TD_RDONLY) &&
@@ -35,7 +35,7 @@
blkif->pending_list[idx].status = BLKIF_RSP_ERROR;
goto send_response;
}
-@@ -433,7 +443,7 @@ static void handle_blktap_iomsg(void* pr
+@@ -431,7 +441,7 @@ static void handle_blktap_iomsg(void* pr
DPRINTF("Sector request failed:\n");
DPRINTF("%s request, idx [%d,%d] size [%llu], "
"sector [%llu,%llu]\n",
@@ -44,7 +44,7 @@
"WRITE" : "READ"),
idx,i,
(long long unsigned)
-@@ -446,8 +456,14 @@ static void handle_blktap_iomsg(void* pr
+@@ -444,8 +454,14 @@ static void handle_blktap_iomsg(void* pr
blkif->pending_list[idx].secs_pending += nsects;
@@ -60,7 +60,7 @@
case BLKIF_OP_WRITE:
aiocb_info = malloc(sizeof(*aiocb_info));
-@@ -467,6 +483,10 @@ static void handle_blktap_iomsg(void* pr
+@@ -465,6 +481,10 @@ static void handle_blktap_iomsg(void* pr
DPRINTF("ERROR: bdrv_write() == NULL\n");
goto send_response;
}
++++++ ioemu-blktap-image-format.patch ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:10.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:10.000000000 +0100
@@ -19,7 +19,7 @@
===================================================================
--- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
+++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
-@@ -220,9 +220,10 @@ static int map_new_dev(struct td_state *
+@@ -230,9 +230,10 @@ static int map_new_dev(struct td_state *
return -1;
}
@@ -31,7 +31,7 @@
char* devname;
static int devnumber = 0;
int i;
-@@ -232,7 +233,22 @@ static int open_disk(struct td_state *s,
+@@ -242,7 +243,22 @@ static int open_disk(struct td_state *s,
bs = bdrv_new(devname);
free(devname);
@@ -55,7 +55,7 @@
fprintf(stderr, "Could not open image file %s\n", path);
return -ENOMEM;
}
-@@ -527,7 +543,7 @@ static void handle_blktap_ctrlmsg(void*
+@@ -525,7 +541,7 @@ static void handle_blktap_ctrlmsg(void*
s = state_init();
/*Open file*/
++++++ ioemu-blktap-zero-size.patch ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:10.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:10.000000000 +0100
@@ -16,7 +16,7 @@
===================================================================
--- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/hw/xen_blktap.c
+++ xen-4.0.1-testing/tools/ioemu-qemu-xen/hw/xen_blktap.c
-@@ -258,6 +258,12 @@ static int open_disk(struct td_state *s,
+@@ -268,6 +268,12 @@ static int open_disk(struct td_state *s,
s->size = bs->total_sectors;
s->sector_size = 512;
@@ -28,7 +28,7 @@
+
s->info = ((s->flags & TD_RDONLY) ? VDISK_READONLY : 0);
- #ifndef QEMU_TOOL
+ return 0;
Index: xen-4.0.1-testing/tools/python/xen/xend/server/DevController.py
===================================================================
--- xen-4.0.1-testing.orig/tools/python/xen/xend/server/DevController.py
++++++ minios-fixups.patch ++++++
Index: xen-4.0.1-testing/extras/mini-os/netfront.c
===================================================================
--- xen-4.0.1-testing.orig/extras/mini-os/netfront.c
+++ xen-4.0.1-testing/extras/mini-os/netfront.c
@@ -25,8 +25,8 @@ DECLARE_WAIT_QUEUE_HEAD(netfront_queue);
-#define NET_TX_RING_SIZE __RING_SIZE((struct netif_tx_sring *)0, PAGE_SIZE)
-#define NET_RX_RING_SIZE __RING_SIZE((struct netif_rx_sring *)0, PAGE_SIZE)
+#define NET_TX_RING_SIZE __CONST_RING_SIZE(netif_tx, PAGE_SIZE)
+#define NET_RX_RING_SIZE __CONST_RING_SIZE(netif_rx, PAGE_SIZE)
#define GRANT_INVALID_REF 0
Index: xen-4.0.1-testing/extras/mini-os/lib/math.c
===================================================================
--- xen-4.0.1-testing.orig/extras/mini-os/lib/math.c
+++ xen-4.0.1-testing/extras/mini-os/lib/math.c
@@ -191,6 +191,7 @@ __qdivrem(uint64_t uq, uint64_t vq, uint
* and thus
* m = 4 - n <= 2
*/
+ tmp.ul[H] = tmp.ul[L] = 0;
tmp.uq = uq;
u[0] = 0;
u[1] = HHALF(tmp.ul[H]);
Index: xen-4.0.1-testing/extras/mini-os/arch/x86/mm.c
===================================================================
--- xen-4.0.1-testing.orig/extras/mini-os/arch/x86/mm.c
+++ xen-4.0.1-testing/extras/mini-os/arch/x86/mm.c
@@ -281,7 +281,7 @@ static void build_pagetable(unsigned lon
/*
* Mark portion of the address space read only.
*/
-extern void shared_info;
+extern char shared_info[PAGE_SIZE];
static void set_readonly(void *text, void *etext)
{
unsigned long start_address =
++++++ snapshot-without-pv-fix.patch ++++++
Subject: add the drive into drives_table[] only if guest is using PV driver
now when blktapctrl asks qemu to add a device, it also set a watch
on the xenstore backend state path of the device, e.g.
/local/domain/<domian-id>/device/vbd/<device-id>/state and when the
state changed to 4, that means guest is using the PV driver and it's
ready, so the watch will tell qemu to add the disk entry to
drives_table[], otherwise the disk in qemu will just stay opened,not
showing up in drives_table[].
Signed-off-by: Li Dongyang <lidongyang(a)novell.com>
---
tools/blktap/drivers/blktapctrl.c | 81 +++++++++++++++++++++++++++++++++-
tools/blktap/lib/blkif.c | 23 ++++++++++
tools/blktap/lib/blktaplib.h | 5 ++
tools/blktap/lib/xenbus.c | 69 +++++++++++++++++++++++++++++
tools/ioemu-qemu-xen/hw/xen_blktap.c | 49 +++++++++++++++-----
5 files changed, 213 insertions(+), 14 deletions(-)
diff --git a/tools/blktap/drivers/blktapctrl.c b/tools/blktap/drivers/blktapctrl.c
index bcc3152..8b58e3e 100644
--- a/tools/blktap/drivers/blktapctrl.c
+++ b/tools/blktap/drivers/blktapctrl.c
@@ -381,7 +381,22 @@ static int write_msg(int fd, int msgtype, void *ptr, void *ptr2)
msg->cookie = blkif->cookie;
break;
-
+
+ case CTLMSG_ADDDEV:
+ DPRINTF("Write_msg called: CTLMSG_ADDDEV\n");
+
+ msglen = sizeof(msg_hdr_t);
+ buf = malloc(msglen);
+
+ /*Assign header fields*/
+ msg = (msg_hdr_t *)buf;
+ msg->type = CTLMSG_ADDDEV;
+ msg->len = msglen;
+ msg->drivertype = blkif->drivertype;
+ msg->cookie = blkif->cookie;
+
+ break;
+
default:
return -1;
}
@@ -476,6 +491,12 @@ static int read_msg(int fd, int msgtype, void *ptr)
DPRINTF("\tPID: [%d]\n",blkif->tappid);
}
break;
+
+ case CTLMSG_ADDDEV_RSP:
+ DPRINTF("Received CTLMSG_ADDDEV_RSP\n");
+ if (msgtype != CTLMSG_ADDDEV_RSP) ret = 0;
+ break;
+
default:
DPRINTF("UNKNOWN MESSAGE TYPE RECEIVED\n");
ret = 0;
@@ -758,6 +779,63 @@ static int unmap_blktapctrl(blkif_t *blkif)
return 0;
}
+static int blktapctrl_blkif_state(blkif_t *blkif, XenbusState state)
+{
+ struct disk_info *drivertype = NULL;
+
+ if (!blkif)
+ return -EINVAL;
+
+ switch (state)
+ {
+ case XenbusStateUnknown:
+ break;
+
+ case XenbusStateInitialising:
+ break;
+
+ case XenbusStateInitWait:
+ break;
+
+ case XenbusStateInitialised:
+ break;
+
+ case XenbusStateConnected:
+ drivertype = dtypes[blkif->drivertype];
+ if (drivertype->use_ioemu && blkif->state == CONNECTED) {
+ if (write_msg(blkif->fds[WRITE], CTLMSG_ADDDEV, blkif, NULL)
+ <=0) {
+ DPRINTF("Write_msg failed - CTLMSG_ADDDEV\n");
+ return -1;
+ }
+ if (read_msg(blkif->fds[READ], CTLMSG_ADDDEV_RSP, blkif) <= 0) {
+ DPRINTF("Read_msg failure - CTLMSG_ADDDEV\n");
+ return -1;
+ }
+ }
+
+ break;
+
+ case XenbusStateClosing:
+ break;
+
+ case XenbusStateClosed:
+ break;
+
+ case XenbusStateReconfiguring:
+ break;
+
+ case XenbusStateReconfigured:
+ break;
+
+ default:
+ DPRINTF("Unrecognized XenbusState %d\n", state);
+ return -1;
+ }
+
+ return 0;
+}
+
int open_ctrl_socket(char *devname)
{
int ret;
@@ -854,6 +932,7 @@ int main(int argc, char *argv[])
register_new_blkif_hook(blktapctrl_new_blkif);
register_new_devmap_hook(map_new_blktapctrl);
register_new_unmap_hook(unmap_blktapctrl);
+ register_blkif_state_hook(blktapctrl_blkif_state);
ctlfd = blktap_interface_open();
if (ctlfd < 0) {
diff --git a/tools/blktap/lib/blkif.c b/tools/blktap/lib/blkif.c
index 9a19596..11b63dc 100644
--- a/tools/blktap/lib/blkif.c
+++ b/tools/blktap/lib/blkif.c
@@ -89,6 +89,11 @@ void register_new_blkif_hook(int (*fn)(blkif_t *blkif))
{
new_blkif_hook = fn;
}
+static int (*blkif_state_hook)(blkif_t *blkif, XenbusState state) = NULL;
+void register_blkif_state_hook(int (*fn)(blkif_t *blkif, XenbusState state))
+{
+ blkif_state_hook = fn;
+}
int blkif_init(blkif_t *blkif, long int handle, long int pdev,
long int readonly)
@@ -179,6 +184,24 @@ void free_blkif(blkif_t *blkif)
}
}
+int blkif_handle_state(blkif_t *blkif, XenbusState state)
+{
+ if (blkif == NULL)
+ return -EINVAL;
+
+ if (blkif_state_hook == NULL)
+ {
+ DPRINTF("Probe handling blkif state, but no blkif_state_hook!\n");
+ return -1;
+ }
+ if (blkif_state_hook(blkif, state)!=0) {
+ DPRINTF("BLKIF: blkif_state_hook failed!\n");
+ return -1;
+ }
+
+ return 0;
+}
+
void __init_blkif(void)
{
memset(blkif_hash, 0, sizeof(blkif_hash));
diff --git a/tools/blktap/lib/blktaplib.h b/tools/blktap/lib/blktaplib.h
index 733b924..2a6a078 100644
--- a/tools/blktap/lib/blktaplib.h
+++ b/tools/blktap/lib/blktaplib.h
@@ -38,6 +38,7 @@
#include <xen/xen.h>
#include <xen/io/blkif.h>
#include <xen/io/ring.h>
+#include <xen/io/xenbus.h>
#include <xs.h>
#include <sys/types.h>
#include <unistd.h>
@@ -138,11 +139,13 @@ typedef struct blkif_info {
void register_new_devmap_hook(int (*fn)(blkif_t *blkif));
void register_new_unmap_hook(int (*fn)(blkif_t *blkif));
void register_new_blkif_hook(int (*fn)(blkif_t *blkif));
+void register_blkif_state_hook(int (*fn)(blkif_t *blkif, XenbusState state));
blkif_t *blkif_find_by_handle(domid_t domid, unsigned int handle);
blkif_t *alloc_blkif(domid_t domid);
int blkif_init(blkif_t *blkif, long int handle, long int pdev,
long int readonly);
void free_blkif(blkif_t *blkif);
+int blkif_handle_state(blkif_t *blkif, XenbusState state);
void __init_blkif(void);
typedef struct busy_state {
@@ -210,6 +213,8 @@ typedef struct msg_pid {
#define CTLMSG_CLOSE_RSP 8
#define CTLMSG_PID 9
#define CTLMSG_PID_RSP 10
+#define CTLMSG_ADDDEV 11
+#define CTLMSG_ADDDEV_RSP 12
/* disk driver types */
#define MAX_DISK_TYPES 20
diff --git a/tools/blktap/lib/xenbus.c b/tools/blktap/lib/xenbus.c
index 53db3c8..96f75a5 100644
--- a/tools/blktap/lib/xenbus.c
+++ b/tools/blktap/lib/xenbus.c
@@ -318,6 +318,72 @@ static int check_image(struct xs_handle *h, struct backend_info *be,
return 0;
}
+static void check_frontend_state(struct xs_handle *h, struct xenbus_watch *w,
+ const char *state_path_im)
+{
+ struct backend_info *be = NULL;
+ struct blkif *blkif = NULL;
+ char *fepath = NULL, *bepath = NULL;
+ XenbusState state;
+ int er, len;
+
+ len = strsep_len(state_path_im, '/', 6);
+ if (len < 0)
+ return;
+ if (!(fepath = malloc(len + 1)))
+ return;
+ memset(fepath, 0, len + 1);
+ strncpy(fepath, state_path_im, len);
+
+ er = xs_gather(h, fepath, "state", "%d", &state,
+ "backend", NULL, &bepath,
+ NULL);
+
+ if (er) {
+ DPRINTF("Error getting state [%s]\n", fepath);
+ goto free_fe;
+ }
+
+ be = be_lookup_be(bepath);
+ if (!be || !be->blkif)
+ goto free_fe;
+
+ blkif = be->blkif;
+ blkif_handle_state(blkif, state);
+
+free_fe:
+ if (fepath)
+ free(fepath);
+ if (bepath)
+ free(bepath);
+ return;
+}
+
+static int add_blockdevice_state_watch(struct xs_handle *h, const char *frontend)
+{
+ char *path = NULL;
+ struct xenbus_watch *vbd_watch;
+
+ if (asprintf(&path, frontend) == -1)
+ return -ENOMEM;
+ if (!(path = realloc(path, strlen(path) + strlen("/state") + 1)))
+ return -ENOMEM;
+ strcpy(path + strlen(path), "/state");
+
+ vbd_watch = (struct xenbus_watch *)malloc(sizeof(struct xenbus_watch));
+ if (!vbd_watch) {
+ DPRINTF("ERROR: unable to malloc vbd_watch [%s]\n", path);
+ return -EINVAL;
+ }
+ vbd_watch->node = path;
+ vbd_watch->callback = check_frontend_state;
+ if (register_xenbus_watch(h, vbd_watch) != 0) {
+ DPRINTF("ERROR: adding vbd probe watch %s\n", path);
+ return -EINVAL;
+ }
+ return 0;
+}
+
static void ueblktap_setup(struct xs_handle *h, char *bepath)
{
struct backend_info *be;
@@ -512,6 +578,9 @@ static void ueblktap_probe(struct xs_handle *h, struct xenbus_watch *w,
be->backpath = bepath;
be->frontpath = frontend;
+
+ if (add_blockdevice_state_watch(h, frontend) != 0)
+ goto free_be;
list_add(&be->list, &belist);
diff --git a/tools/ioemu-qemu-xen/hw/xen_blktap.c b/tools/ioemu-qemu-xen/hw/xen_blktap.c
index c2236fd..c925283 100644
--- a/tools/ioemu-qemu-xen/hw/xen_blktap.c
+++ b/tools/ioemu-qemu-xen/hw/xen_blktap.c
@@ -83,8 +83,18 @@ static void unmap_disk(struct td_state *s)
{
tapdev_info_t *info = s->ring_info;
fd_list_entry_t *entry;
+ int i;
bdrv_close(s->bs);
+#ifndef QEMU_TOOL
+ for (i = 0; i < MAX_DRIVES + 1; i++) {
+ if (drives_table[i].bdrv == s->bs) {
+ drives_table[i].bdrv = NULL;
+ nb_drives--;
+ break;
+ }
+ }
+#endif
if (info != NULL && info->mem > 0)
munmap(info->mem, getpagesize() * BLKTAP_MMAP_REGION_SIZE);
@@ -244,18 +254,6 @@ static int open_disk(struct td_state *s, char *path, int readonly)
s->info = ((s->flags & TD_RDONLY) ? VDISK_READONLY : 0);
-#ifndef QEMU_TOOL
- for (i = 0; i < MAX_DRIVES + 1; i++) {
- if (drives_table[i].bdrv == NULL) {
- drives_table[i].bdrv = bs;
- drives_table[i].type = IF_BLKTAP;
- drives_table[i].bus = 0;
- drives_table[i].unit = 0;
- break;
- }
- }
-#endif
-
return 0;
}
@@ -496,7 +494,7 @@ static void handle_blktap_ctrlmsg(void* private)
msg_hdr_t *msg;
msg_newdev_t *msg_dev;
msg_pid_t *msg_pid;
- int ret = -1;
+ int ret = -1, i;
struct td_state *s = NULL;
fd_list_entry_t *entry;
@@ -622,6 +620,31 @@ static void handle_blktap_ctrlmsg(void* private)
len = write(write_fd, buf, msglen);
break;
+ case CTLMSG_ADDDEV:
+ s = get_state(msg->cookie);
+ if (s) {
+#ifndef QEMU_TOOL
+ for (i = 0; i < MAX_DRIVES + 1; i++) {
+ if (drives_table[i].bdrv == NULL) {
+ drives_table[i].bdrv = s->bs;
+ drives_table[i].type = IF_BLKTAP;
+ drives_table[i].bus = 0;
+ drives_table[i].unit = 0;
+ drives_table[i].used = 1;
+ nb_drives++;
+ break;
+ }
+ }
+#endif
+ }
+
+ memset(buf, 0x00, MSG_SIZE);
+ msglen = sizeof(msg_hdr_t);
+ msg->type = CTLMSG_ADDDEV_RSP;
+ msg->len = msglen;
+ len = write(write_fd, buf, msglen);
+ break;
+
default:
break;
}
++++++ stdvga-cache.patch ++++++
Index: xen-4.0.1-testing/xen/arch/x86/hvm/stdvga.c
===================================================================
--- xen-4.0.1-testing.orig/xen/arch/x86/hvm/stdvga.c
+++ xen-4.0.1-testing/xen/arch/x86/hvm/stdvga.c
@@ -135,7 +135,10 @@ static int stdvga_outb(uint64_t addr, ui
/* When in standard vga mode, emulate here all writes to the vram buffer
* so we can immediately satisfy reads without waiting for qemu. */
- s->stdvga = (s->sr[7] == 0x00);
+ s->stdvga =
+ (s->sr[7] == 0x00) && /* standard vga mode */
+ (s->gr[6] == 0x05); /* misc graphics register w/ MemoryMapSelect=1
+ * 0xa0000-0xaffff (64k region), AlphaDis=1 */
if ( !prev_stdvga && s->stdvga )
{
++++++ tapdisk-ioemu-shutdown-fix.patch ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:10.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:10.000000000 +0100
@@ -28,7 +28,7 @@
fd_list_entry_t *fd_start = NULL;
extern char* get_snapshot_name(int devid);
-@@ -547,6 +548,7 @@ static void handle_blktap_ctrlmsg(void*
+@@ -545,6 +546,7 @@ static void handle_blktap_ctrlmsg(void*
/* Allocate the disk structs */
s = state_init();
@@ -36,7 +36,7 @@
/*Open file*/
if (s == NULL || open_disk(s, path, msg->drivertype, msg->readonly)) {
-@@ -629,7 +631,8 @@ static void handle_blktap_ctrlmsg(void*
+@@ -627,7 +629,8 @@ static void handle_blktap_ctrlmsg(void*
case CTLMSG_CLOSE:
s = get_state(msg->cookie);
if (s) unmap_disk(s);
++++++ xenpaging.autostart_delay.patch ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:11.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:11.000000000 +0100
@@ -11,8 +11,8 @@
Signed-off-by: Olaf Hering <olaf(a)aepfle.de>
---
- tools/python/xen/xend/image.py | 28 ++++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
+ tools/python/xen/xend/image.py | 32 ++++++++++++++++++++++++++++++++
+ 1 file changed, 32 insertions(+)
--- xen-4.0.1-testing.orig/tools/python/xen/xend/image.py
+++ xen-4.0.1-testing/tools/python/xen/xend/image.py
@@ -53,7 +53,7 @@
xenpaging_bin = auxbin.pathTo("xenpaging")
args = [xenpaging_bin]
args = args + ([ "%d" % self.vm.getDomid()])
-@@ -430,6 +453,9 @@ class ImageHandler:
+@@ -434,6 +457,9 @@ class ImageHandler:
except:
log.warn("chdir %s failed" % xenpaging_dir)
try:
@@ -63,7 +63,15 @@
log.info("starting %s" % args)
os.execve(xenpaging_bin, args, env)
except Exception, e:
-@@ -449,6 +475,8 @@ class ImageHandler:
+@@ -449,10 +475,16 @@ class ImageHandler:
+ self.xenpaging_pid = xenpaging_pid
+ os.close(null)
+ os.close(logfd)
++ if self.xenpaging_delay == 0.0:
++ log.warn("waiting for xenpaging ...")
++ time.sleep(22)
++ log.warn("waiting for xenpaging done.")
+
def destroyXenPaging(self):
if self.xenpaging is None:
return
++++++ xenpaging.autostart.patch ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:12.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:12.000000000 +0100
@@ -14,10 +14,10 @@
tools/python/README.sxpcfg | 1
tools/python/xen/xend/XendConfig.py | 3 +
tools/python/xen/xend/XendDomainInfo.py | 6 ++
- tools/python/xen/xend/image.py | 87 ++++++++++++++++++++++++++++++++
+ tools/python/xen/xend/image.py | 91 ++++++++++++++++++++++++++++++++
tools/python/xen/xm/create.py | 5 +
tools/python/xen/xm/xenapi_create.py | 1
- 8 files changed, 107 insertions(+)
+ 8 files changed, 111 insertions(+)
Index: xen-4.0.1-testing/tools/examples/xmexample.hvm
===================================================================
@@ -121,7 +121,7 @@
rtc_timeoffset = int(vmConfig['platform'].get('rtc_timeoffset', 0))
if int(vmConfig['platform'].get('localtime', 0)):
if time.localtime(time.time())[8]:
-@@ -392,6 +394,91 @@ class ImageHandler:
+@@ -392,6 +394,95 @@ class ImageHandler:
sentinel_fifos_inuse[sentinel_path_fifo] = 1
self.sentinel_path_fifo = sentinel_path_fifo
@@ -140,6 +140,10 @@
+ self.xenpaging_logfile = "/var/log/xen/xenpaging-%s.log" % str(self.vm.info['name_label'])
+ logfile_mode = os.O_WRONLY|os.O_CREAT|os.O_APPEND|os.O_TRUNC
+ null = os.open("/dev/null", os.O_RDONLY)
++ try:
++ os.unlink(self.xenpaging_logfile)
++ except:
++ pass
+ logfd = os.open(self.xenpaging_logfile, logfile_mode, 0644)
+ sys.stderr.flush()
+ contract = osdep.prefork("%s:%d" % (self.vm.getName(), self.vm.getDomid()))
++++++ xenpaging.guest_remove_page.patch ++++++
Subject: xenpaging: drop paged pages in guest_remove_page
Simply drop paged-pages in guest_remove_page(), and notify xenpaging to
drop reference to the gfn.
Signed-off-by: Olaf Hering <olaf(a)aepfle.de>
---
tools/xenpaging/xenpaging.c | 17 +++++++---
xen/arch/x86/mm/p2m.c | 65 +++++++++++++++++++++++++++++++----------
xen/common/memory.c | 6 +++
xen/include/asm-x86/p2m.h | 4 ++
xen/include/public/mem_event.h | 1
5 files changed, 73 insertions(+), 20 deletions(-)
--- xen-4.0.1-testing.orig/tools/xenpaging/xenpaging.c
+++ xen-4.0.1-testing/tools/xenpaging/xenpaging.c
@@ -598,12 +598,19 @@ int main(int argc, char *argv[])
goto out;
}
- /* Populate the page */
- rc = xenpaging_populate_page(paging, &req.gfn, fd, i);
- if ( rc != 0 )
+ if ( req.flags & MEM_EVENT_FLAG_DROP_PAGE )
{
- ERROR("Error populating page");
- goto out;
+ DPRINTF("Dropping page %"PRIx64" p2mt %x\n", req.gfn, req.p2mt);
+ }
+ else
+ {
+ /* Populate the page */
+ rc = xenpaging_populate_page(paging, &req.gfn, fd, i);
+ if ( rc != 0 )
+ {
+ ERROR("Error populating page");
+ goto out;
+ }
}
/* Prepare the response */
--- xen-4.0.1-testing.orig/xen/arch/x86/mm/p2m.c
+++ xen-4.0.1-testing/xen/arch/x86/mm/p2m.c
@@ -2000,12 +2000,15 @@ p2m_remove_page(struct domain *d, unsign
P2M_DEBUG("removing gfn=%#lx mfn=%#lx\n", gfn, mfn);
- for ( i = 0; i < (1UL << page_order); i++ )
+ if ( mfn_valid(_mfn(mfn)) )
{
- mfn_return = d->arch.p2m->get_entry(d, gfn + i, &t, p2m_query);
- if ( !p2m_is_grant(t) )
- set_gpfn_from_mfn(mfn+i, INVALID_M2P_ENTRY);
- ASSERT( !p2m_is_valid(t) || mfn + i == mfn_x(mfn_return) );
+ for ( i = 0; i < (1UL << page_order); i++ )
+ {
+ mfn_return = d->arch.p2m->get_entry(d, gfn + i, &t, p2m_query);
+ if ( !p2m_is_grant(t) )
+ set_gpfn_from_mfn(mfn+i, INVALID_M2P_ENTRY);
+ ASSERT( !p2m_is_valid(t) || mfn + i == mfn_x(mfn_return) );
+ }
}
set_p2m_entry(d, gfn, _mfn(INVALID_MFN), page_order, p2m_invalid);
}
@@ -2533,6 +2536,35 @@ int p2m_mem_paging_evict(struct domain *
return 0;
}
+void p2m_mem_paging_drop_page(struct domain *d, unsigned long gfn)
+{
+ struct vcpu *v = current;
+ mem_event_request_t req;
+ p2m_type_t p2mt;
+
+ memset(&req, 0, sizeof(req));
+
+ /* Check that there's space on the ring for this request */
+ if ( mem_event_check_ring(d) )
+ return;
+
+ gfn_to_mfn(d, gfn, &p2mt);
+ /* Pause domain */
+ if ( v->domain->domain_id == d->domain_id )
+ {
+ vcpu_pause_nosync(v);
+ req.flags |= MEM_EVENT_FLAG_VCPU_PAUSED;
+ }
+
+ /* Send request to pager */
+ req.flags |= MEM_EVENT_FLAG_DROP_PAGE;
+ req.gfn = gfn;
+ req.p2mt = p2mt;
+ req.vcpu_id = v->vcpu_id;
+
+ mem_event_put_request(d, &req);
+}
+
void p2m_mem_paging_populate(struct domain *d, unsigned long gfn)
{
struct vcpu *v = current;
@@ -2597,17 +2629,20 @@ void p2m_mem_paging_resume(struct domain
/* Pull the response off the ring */
mem_event_get_response(d, &rsp);
- /* Fix p2m entry */
- mfn = gfn_to_mfn(d, rsp.gfn, &p2mt);
- if (mfn_valid(mfn))
+ if ( !( rsp.flags & MEM_EVENT_FLAG_DROP_PAGE ) )
{
- p2m_lock(d->arch.p2m);
- set_p2m_entry(d, rsp.gfn, mfn, 0, p2m_ram_rw);
- set_gpfn_from_mfn(mfn_x(mfn), rsp.gfn);
- p2m_unlock(d->arch.p2m);
- } else {
- gdprintk(XENLOG_ERR, "invalid mfn %lx for gfn %lx p2mt %x\n",
- mfn_x(mfn), rsp.gfn, p2mt);
+ /* Fix p2m entry */
+ mfn = gfn_to_mfn(d, rsp.gfn, &p2mt);
+ if (mfn_valid(mfn))
+ {
+ p2m_lock(d->arch.p2m);
+ set_p2m_entry(d, rsp.gfn, mfn, 0, p2m_ram_rw);
+ set_gpfn_from_mfn(mfn_x(mfn), rsp.gfn);
+ p2m_unlock(d->arch.p2m);
+ } else {
+ gdprintk(XENLOG_ERR, "invalid mfn %lx for gfn %lx p2mt %x\n",
+ mfn_x(mfn), rsp.gfn, p2mt);
+ }
}
/* Unpause domain */
--- xen-4.0.1-testing.orig/xen/common/memory.c
+++ xen-4.0.1-testing/xen/common/memory.c
@@ -162,6 +162,12 @@ int guest_remove_page(struct domain *d,
#ifdef CONFIG_X86
mfn = mfn_x(gfn_to_mfn(d, gmfn, &p2mt));
+ if ( unlikely(p2m_is_paging(p2mt)) )
+ {
+ guest_physmap_remove_page(d, gmfn, mfn, 0);
+ p2m_mem_paging_drop_page(d, gmfn);
+ return 1;
+ }
#else
mfn = gmfn_to_mfn(d, gmfn);
#endif
--- xen-4.0.1-testing.orig/xen/include/asm-x86/p2m.h
+++ xen-4.0.1-testing/xen/include/asm-x86/p2m.h
@@ -441,6 +441,8 @@ int set_shared_p2m_entry(struct domain *
int p2m_mem_paging_nominate(struct domain *d, unsigned long gfn);
/* Evict a frame */
int p2m_mem_paging_evict(struct domain *d, unsigned long gfn);
+/* Tell xenpaging to drop a paged out frame */
+void p2m_mem_paging_drop_page(struct domain *d, unsigned long gfn);
/* Start populating a paged out frame */
void p2m_mem_paging_populate(struct domain *d, unsigned long gfn);
/* Prepare the p2m for paging a frame in */
@@ -448,6 +450,8 @@ int p2m_mem_paging_prep(struct domain *d
/* Resume normal operation (in case a domain was paused) */
void p2m_mem_paging_resume(struct domain *d);
#else
+static inline void p2m_mem_paging_drop_page(struct domain *d, unsigned long gfn)
+{ }
static inline void p2m_mem_paging_populate(struct domain *d, unsigned long gfn)
{ }
#endif
--- xen-4.0.1-testing.orig/xen/include/public/mem_event.h
+++ xen-4.0.1-testing/xen/include/public/mem_event.h
@@ -37,6 +37,7 @@
#define MEM_EVENT_FLAG_VCPU_PAUSED (1 << 0)
#define MEM_EVENT_FLAG_DOM_PAUSED (1 << 1)
#define MEM_EVENT_FLAG_OUT_OF_MEM (1 << 2)
+#define MEM_EVENT_FLAG_DROP_PAGE (1 << 3)
typedef struct mem_event_shared_page {
++++++ xenpaging.HVMCOPY_gfn_paged_out.patch ++++++
Subject: xenpaging: handle HVMCOPY_gfn_paged_out in copy_from/to_user
copy_from_user_hvm can fail when __hvm_copy returns
HVMCOPY_gfn_paged_out for a referenced gfn, for example during guests
pagetable walk. This has to be handled in some way. One hypercall that
failed was do_memory_op/XENMEM_decrease_reservation which lead to a
BUG_ON balloon.c. Since do_memory_op already has restart support for
the hypercall, copy_from_guest uses this existing retry code. In
addition, cleanup on error was added to increase_reservation and
populate_physmap.
Signed-off-by: Olaf Hering <olaf(a)aepfle.de>
---
xen/arch/x86/hvm/hvm.c | 4 ++++
xen/common/memory.c | 43 ++++++++++++++++++++++++++++++++++++++-----
2 files changed, 42 insertions(+), 5 deletions(-)
--- xen-4.0.1-testing.orig/xen/arch/x86/hvm/hvm.c
+++ xen-4.0.1-testing/xen/arch/x86/hvm/hvm.c
@@ -1853,6 +1853,8 @@ unsigned long copy_to_user_hvm(void *to,
rc = hvm_copy_to_guest_virt_nofault((unsigned long)to, (void *)from,
len, 0);
+ if ( rc == HVMCOPY_gfn_paged_out )
+ return -EAGAIN;
return rc ? len : 0; /* fake a copy_to_user() return code */
}
@@ -1869,6 +1871,8 @@ unsigned long copy_from_user_hvm(void *t
#endif
rc = hvm_copy_from_guest_virt_nofault(to, (unsigned long)from, len, 0);
+ if ( rc == HVMCOPY_gfn_paged_out )
+ return -EAGAIN;
return rc ? len : 0; /* fake a copy_from_user() return code */
}
--- xen-4.0.1-testing.orig/xen/common/memory.c
+++ xen-4.0.1-testing/xen/common/memory.c
@@ -47,6 +47,7 @@ static void increase_reservation(struct
{
struct page_info *page;
unsigned long i;
+ unsigned long ctg_ret;
xen_pfn_t mfn;
struct domain *d = a->domain;
@@ -80,8 +81,14 @@ static void increase_reservation(struct
if ( !guest_handle_is_null(a->extent_list) )
{
mfn = page_to_mfn(page);
- if ( unlikely(__copy_to_guest_offset(a->extent_list, i, &mfn, 1)) )
+ ctg_ret = __copy_to_guest_offset(a->extent_list, i, &mfn, 1);
+ if ( unlikely(ctg_ret) )
+ {
+ free_domheap_pages(page, a->extent_order);
+ if ( (long)ctg_ret == -EAGAIN )
+ a->preempted = 1;
goto out;
+ }
}
}
@@ -93,6 +100,7 @@ static void populate_physmap(struct memo
{
struct page_info *page;
unsigned long i, j;
+ unsigned long ctg_ret;
xen_pfn_t gpfn, mfn;
struct domain *d = a->domain;
@@ -111,8 +119,13 @@ static void populate_physmap(struct memo
goto out;
}
- if ( unlikely(__copy_from_guest_offset(&gpfn, a->extent_list, i, 1)) )
+ j = __copy_from_guest_offset(&gpfn, a->extent_list, i, 1);
+ if ( unlikely(j) )
+ {
+ if ( (long)j == -EAGAIN )
+ a->preempted = 1;
goto out;
+ }
if ( a->memflags & MEMF_populate_on_demand )
{
@@ -142,8 +155,17 @@ static void populate_physmap(struct memo
set_gpfn_from_mfn(mfn + j, gpfn + j);
/* Inform the domain of the new page's machine address. */
- if ( unlikely(__copy_to_guest_offset(a->extent_list, i, &mfn, 1)) )
+ ctg_ret = __copy_to_guest_offset(a->extent_list, i, &mfn, 1);
+ if ( unlikely(ctg_ret) )
+ {
+ for ( j = 0; j < (1 << a->extent_order); j++ )
+ set_gpfn_from_mfn(mfn + j, INVALID_M2P_ENTRY);
+ guest_physmap_remove_page(d, gpfn, mfn, a->extent_order);
+ free_domheap_pages(page, a->extent_order);
+ if ( (long)ctg_ret == -EAGAIN )
+ a->preempted = 1;
goto out;
+ }
}
}
}
@@ -226,8 +248,13 @@ static void decrease_reservation(struct
goto out;
}
- if ( unlikely(__copy_from_guest_offset(&gmfn, a->extent_list, i, 1)) )
+ j = __copy_from_guest_offset(&gmfn, a->extent_list, i, 1);
+ if ( unlikely(j) )
+ {
+ if ( (long)j == -EAGAIN )
+ a->preempted = 1;
goto out;
+ }
if ( tb_init_done )
{
@@ -511,6 +538,7 @@ long do_memory_op(unsigned long cmd, XEN
int rc, op;
unsigned int address_bits;
unsigned long start_extent;
+ unsigned long cfg_ret;
struct xen_memory_reservation reservation;
struct memop_args args;
domid_t domid;
@@ -524,8 +552,13 @@ long do_memory_op(unsigned long cmd, XEN
case XENMEM_populate_physmap:
start_extent = cmd >> MEMOP_EXTENT_SHIFT;
- if ( copy_from_guest(&reservation, arg, 1) )
+ cfg_ret = copy_from_guest(&reservation, arg, 1);
+ if ( unlikely(cfg_ret) )
+ {
+ if ( (long)cfg_ret == -EAGAIN )
+ return hypercall_create_continuation(__HYPERVISOR_memory_op, "lh", cmd, arg);
return start_extent;
+ }
/* Is size too large for us to encode a continuation? */
if ( reservation.nr_extents > (ULONG_MAX >> MEMOP_EXTENT_SHIFT) )
++++++ xenpaging.machine_to_phys_mapping.patch ++++++
Subject: xenpaging: update machine_to_phys_mapping during page-in and page-out
The machine_to_phys_mapping array needs updating during page-out.
If a page is gone, a call to get_gpfn_from_mfn will still return the old
gfn for an already paged-out page. This happens when the entire guest
ram is paged-out before xen_vga_populate_vram() runs. Then
XENMEM_populate_physmap is called with gfn 0xff000. A new page is
allocated with alloc_domheap_pages. This new page does not have a gfn
yet. However, in guest_physmap_add_entry() the passed mfn maps still to
an old gfn. This old gfn is paged-out and has no mfn anymore. As a
result, the ASSERT() triggers because p2m_is_ram() is true for
p2m_ram_paging* types.
If the machine_to_phys_mapping array is updated properly, both loops in
guest_physmap_add_entry() turn into no-ops for the new page and the
mfn/gfn mapping will be done at the end of the function.
The same thing needs to happen dring a page-in.
If XENMEM_add_to_physmap is used with XENMAPSPACE_gmfn,
get_gpfn_from_mfn() will return an appearently valid gfn. As a result,
guest_physmap_remove_page() is called. The ASSERT in p2m_remove_page
triggers because the passed mfn does not match the old mfn for the
passed gfn.
Signed-off-by: Olaf Hering <olaf(a)aepfle.de>
---
v2: check wether mfn is valid
xen/arch/x86/mm/p2m.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
--- xen-4.0.1-testing.orig/xen/arch/x86/mm/p2m.c
+++ xen-4.0.1-testing/xen/arch/x86/mm/p2m.c
@@ -2524,6 +2524,7 @@ int p2m_mem_paging_evict(struct domain *
/* Remove mapping from p2m table */
p2m_lock(d->arch.p2m);
set_p2m_entry(d, gfn, _mfn(PAGING_MFN), 0, p2m_ram_paged);
+ set_gpfn_from_mfn(mfn_x(mfn), INVALID_M2P_ENTRY);
p2m_unlock(d->arch.p2m);
/* Put the page back so it gets freed */
@@ -2598,9 +2599,16 @@ void p2m_mem_paging_resume(struct domain
/* Fix p2m entry */
mfn = gfn_to_mfn(d, rsp.gfn, &p2mt);
- p2m_lock(d->arch.p2m);
- set_p2m_entry(d, rsp.gfn, mfn, 0, p2m_ram_rw);
- p2m_unlock(d->arch.p2m);
+ if (mfn_valid(mfn))
+ {
+ p2m_lock(d->arch.p2m);
+ set_p2m_entry(d, rsp.gfn, mfn, 0, p2m_ram_rw);
+ set_gpfn_from_mfn(mfn_x(mfn), rsp.gfn);
+ p2m_unlock(d->arch.p2m);
+ } else {
+ gdprintk(XENLOG_ERR, "invalid mfn %lx for gfn %lx p2mt %x\n",
+ mfn_x(mfn), rsp.gfn, p2mt);
+ }
/* Unpause domain */
if ( rsp.flags & MEM_EVENT_FLAG_VCPU_PAUSED )
++++++ xenpaging.mem_event_check_ring-free_requests.patch ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:12.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:12.000000000 +0100
@@ -1,4 +1,4 @@
-Subject: xenpaging: print info when free request slots drop below 3
+Subject: xenpaging: print info when free request slots drop below 2
Add debugging aid to free request slots in the ring buffer.
It should not happen that the ring gets full, print info anyway if it happens.
@@ -15,7 +15,7 @@
mem_event_ring_lock(d);
free_requests = RING_FREE_REQUESTS(&d->mem_event.front_ring);
-+ if ( unlikely(free_requests < 3) )
++ if ( unlikely(free_requests < 2) )
+ {
+ gdprintk(XENLOG_INFO, "free request slots: %d\n", free_requests);
+ WARN_ON(free_requests == 0);
++++++ xenpaging.notify_policy_only_once.patch ++++++
Subject: xenpaging: notify policy only on resume
If a page is requested more than once, the policy is also notified more
than once about the page-in. However, a page-in happens only once. Any
further resume will only unpause the other vcpu. The multiple notify
will put the page into the mru list multiple times and it will unlock
other already resumed pages too early. In the worst case, a page that
was just resumed can be evicted right away, causing a deadlock in the
guest.
Signed-off-by: Olaf Hering <olaf(a)aepfle.de>
---
tools/xenpaging/xenpaging.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
--- xen-4.0.1-testing.orig/tools/xenpaging/xenpaging.c
+++ xen-4.0.1-testing/tools/xenpaging/xenpaging.c
@@ -377,7 +377,7 @@ int xenpaging_evict_page(xenpaging_t *pa
return ret;
}
-static int xenpaging_resume_page(xenpaging_t *paging, mem_event_response_t *rsp)
+static int xenpaging_resume_page(xenpaging_t *paging, mem_event_response_t *rsp, int notify_policy)
{
int ret;
@@ -387,7 +387,8 @@ static int xenpaging_resume_page(xenpagi
goto out;
/* Notify policy of page being paged in */
- policy_notify_paged_in(paging->mem_event.domain_id, rsp->gfn);
+ if ( notify_policy )
+ policy_notify_paged_in(paging->mem_event.domain_id, rsp->gfn);
/* Tell Xen page is ready */
ret = xc_mem_paging_resume(paging->xc_handle, paging->mem_event.domain_id,
@@ -619,7 +620,7 @@ int main(int argc, char *argv[])
rsp.vcpu_id = req.vcpu_id;
rsp.flags = req.flags;
- rc = xenpaging_resume_page(paging, &rsp);
+ rc = xenpaging_resume_page(paging, &rsp, 1);
if ( rc != 0 )
{
ERROR("Error resuming page");
@@ -648,7 +649,7 @@ int main(int argc, char *argv[])
rsp.vcpu_id = req.vcpu_id;
rsp.flags = req.flags;
- rc = xenpaging_resume_page(paging, &rsp);
+ rc = xenpaging_resume_page(paging, &rsp, 0);
if ( rc != 0 )
{
ERROR("Error resuming");
++++++ xenpaging.num_pages_equal_max_pages.patch ++++++
Subject: xenpaging: allow negative num_pages and limit num_pages
Simplify paging size argument. If a negative number is specified, it
means the entire guest memory should be paged out. This is useful for
debugging. Also limit num_pages to the guests max_pages.
Signed-off-by: Olaf Hering <olaf(a)aepfle.de>
---
tools/xenpaging/xenpaging.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
--- xen-4.0.1-testing.orig/tools/xenpaging/xenpaging.c
+++ xen-4.0.1-testing/tools/xenpaging/xenpaging.c
@@ -512,8 +512,6 @@ int main(int argc, char *argv[])
domain_id = atoi(argv[1]);
num_pages = atoi(argv[2]);
- victims = calloc(num_pages, sizeof(xenpaging_victim_t));
-
/* Seed random-number generator */
srand(time(NULL));
@@ -534,6 +532,13 @@ int main(int argc, char *argv[])
return 2;
}
+ if ( num_pages < 0 || num_pages > paging->domain_info->max_pages )
+ {
+ num_pages = paging->domain_info->max_pages;
+ DPRINTF("setting num_pages to %d\n", num_pages);
+ }
+ victims = calloc(num_pages, sizeof(xenpaging_victim_t));
+
/* ensure that if we get a signal, we'll do cleanup, then exit */
act.sa_handler = close_handler;
act.sa_flags = 0;
++++++ xenpaging.optimize_p2m_mem_paging_populate.patch ++++++
Subject: xenpaging: optimize p2m_mem_paging_populate
p2m_mem_paging_populate will always put another request in the ring. To
reduce pressure on the ring, place only required requests in the ring.
If the gfn was already processed by another thread, and the current vcpu
does not need to be paused, p2m_mem_paging_resume will do nothing with
the request. And also xenpaging will drop the request if the vcpu does
not need a wakeup.
Signed-off-by: Olaf Hering <olaf(a)aepfle.de>
---
xen/arch/x86/mm/p2m.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
--- xen-4.0.1-testing.orig/xen/arch/x86/mm/p2m.c
+++ xen-4.0.1-testing/xen/arch/x86/mm/p2m.c
@@ -2571,12 +2571,12 @@ void p2m_mem_paging_populate(struct doma
mem_event_request_t req;
p2m_type_t p2mt;
- memset(&req, 0, sizeof(req));
-
/* Check that there's space on the ring for this request */
if ( mem_event_check_ring(d) )
return;
+ memset(&req, 0, sizeof(req));
+
/* Fix p2m mapping */
/* XXX: It seems inefficient to have this here, as it's only needed
* in one case (ept guest accessing paging out page) */
@@ -2594,6 +2594,11 @@ void p2m_mem_paging_populate(struct doma
vcpu_pause_nosync(v);
req.flags |= MEM_EVENT_FLAG_VCPU_PAUSED;
}
+ else if ( p2mt != p2m_ram_paging_out && p2mt != p2m_ram_paged )
+ {
+ /* gfn is already on its way back and vcpu is not paused */
+ return;
+ }
/* Send request to pager */
req.gfn = gfn;
++++++ xenpaging.p2m_mem_paging_populate_if_p2m_ram_paged.patch ++++++
Subject: xenpaging: when populating a page, check if populating is already in progress
p2m_mem_paging_populate can be called serveral times from different
vcpus. If the page is already in state p2m_ram_paging_in and has a new
valid mfn, invalidating this new mfn will cause trouble later if
p2m_mem_paging_resume will set the new gfn/mfn pair back to state
p2m_ram_rw.
Detect this situation and change p2m state not if the page is in the
process of being still paged-out or already paged-in.
In fact, p2m state p2m_ram_paged is the only state where the mfn type
can be invalidated.
Signed-off-by: Olaf Hering <olaf(a)aepfle.de>
---
xen/arch/x86/mm/p2m.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- xen-4.0.1-testing.orig/xen/arch/x86/mm/p2m.c
+++ xen-4.0.1-testing/xen/arch/x86/mm/p2m.c
@@ -2581,7 +2581,7 @@ void p2m_mem_paging_populate(struct doma
/* XXX: It seems inefficient to have this here, as it's only needed
* in one case (ept guest accessing paging out page) */
gfn_to_mfn(d, gfn, &p2mt);
- if ( p2mt != p2m_ram_paging_out )
+ if ( p2mt == p2m_ram_paged )
{
p2m_lock(d->arch.p2m);
set_p2m_entry(d, gfn, _mfn(PAGING_MFN), 0, p2m_ram_paging_in_start);
++++++ xenpaging.page_already_populated.patch ++++++
Subject: xenpaging: print p2mt for already paged-in pages
Add more debug output, print p2mt for pages which were requested more than once.
Signed-off-by: Olaf Hering <olaf(a)aepfle.de>
---
tools/xenpaging/xenpaging.c | 2 ++
1 file changed, 2 insertions(+)
--- xen-4.0.1-testing.orig/tools/xenpaging/xenpaging.c
+++ xen-4.0.1-testing/tools/xenpaging/xenpaging.c
@@ -632,8 +632,10 @@ int main(int argc, char *argv[])
else
{
DPRINTF("page already populated (domain = %d; vcpu = %d;"
+ " p2mt = %x;"
" gfn = %"PRIx64"; paused = %"PRId64")\n",
paging->mem_event.domain_id, req.vcpu_id,
+ req.p2mt,
req.gfn, req.flags & MEM_EVENT_FLAG_VCPU_PAUSED);
/* Tell Xen to resume the vcpu */
++++++ xenpaging.populate_only_if_paged.patch ++++++
--- /var/tmp/diff_new_pack.3GDse1/_old 2010-11-15 15:38:12.000000000 +0100
+++ /var/tmp/diff_new_pack.3GDse1/_new 2010-11-15 15:38:12.000000000 +0100
@@ -1,114 +1,26 @@
-Subject: xenpaging: populate only paged-out pages
+Subject: xenpaging: populate paged-out pages unconditionally
-populdate a paged-out page only once to reduce pressure in the ringbuffer.
-Several cpus may still request a page at once. xenpaging can handle this.
+Populate a page unconditionally to avoid missing a page-in request.
+If the page is already in the process of being paged-in, the this vcpu
+will be stopped and later resumed once the page content is usable again.
+
+This matches other p2m_mem_paging_populate usage in the source tree.
Signed-off-by: Olaf Hering <olaf(a)aepfle.de>
---
- xen/arch/x86/hvm/emulate.c | 3 ++-
- xen/arch/x86/hvm/hvm.c | 17 ++++++++++-------
- xen/arch/x86/mm/guest_walk.c | 3 ++-
- xen/arch/x86/mm/hap/guest_walk.c | 6 ++++--
- 4 files changed, 18 insertions(+), 11 deletions(-)
+ xen/common/grant_table.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
---- xen-4.0.1-testing.orig/xen/arch/x86/hvm/emulate.c
-+++ xen-4.0.1-testing/xen/arch/x86/hvm/emulate.c
-@@ -65,7 +65,8 @@ static int hvmemul_do_io(
- ram_mfn = gfn_to_mfn_unshare(current->domain, ram_gfn, &p2mt, 0);
- if ( p2m_is_paging(p2mt) )
- {
-- p2m_mem_paging_populate(curr->domain, ram_gfn);
-+ if ( p2m_is_paged(p2mt) )
-+ p2m_mem_paging_populate(curr->domain, ram_gfn);
- return X86EMUL_RETRY;
- }
- if ( p2m_is_shared(p2mt) )
---- xen-4.0.1-testing.orig/xen/arch/x86/hvm/hvm.c
-+++ xen-4.0.1-testing/xen/arch/x86/hvm/hvm.c
-@@ -291,7 +291,8 @@ static int hvm_set_ioreq_page(
- return -EINVAL;
- if ( p2m_is_paging(p2mt) )
- {
-- p2m_mem_paging_populate(d, gmfn);
-+ if ( p2m_is_paged(p2mt) )
-+ p2m_mem_paging_populate(d, gmfn);
- return -ENOENT;
- }
- if ( p2m_is_shared(p2mt) )
-@@ -1324,7 +1325,8 @@ static void *hvm_map_entry(unsigned long
- mfn = mfn_x(gfn_to_mfn_unshare(current->domain, gfn, &p2mt, 0));
- if ( p2m_is_paging(p2mt) )
- {
-- p2m_mem_paging_populate(current->domain, gfn);
-+ if ( p2m_is_paged(p2mt) )
-+ p2m_mem_paging_populate(current->domain, gfn);
- return NULL;
- }
- if ( p2m_is_shared(p2mt) )
-@@ -1723,7 +1725,8 @@ static enum hvm_copy_result __hvm_copy(
-
+--- xen-4.0.1-testing.orig/xen/common/grant_table.c
++++ xen-4.0.1-testing/xen/common/grant_table.c
+@@ -156,8 +156,7 @@ static int __get_paged_frame(unsigned lo
+ *frame = mfn_x(mfn);
if ( p2m_is_paging(p2mt) )
{
-- p2m_mem_paging_populate(curr->domain, gfn);
-+ if ( p2m_is_paged(p2mt) )
-+ p2m_mem_paging_populate(curr->domain, gfn);
- return HVMCOPY_gfn_paged_out;
+- if ( p2m_is_paged(p2mt) )
+- p2m_mem_paging_populate(rd, gfn);
++ p2m_mem_paging_populate(rd, gfn);
+ rc = GNTST_eagain;
}
- if ( p2m_is_shared(p2mt) )
-@@ -3032,8 +3035,8 @@ long do_hvm_op(unsigned long op, XEN_GUE
- mfn_t mfn = gfn_to_mfn(d, pfn, &t);
- if ( p2m_is_paging(t) )
- {
-- p2m_mem_paging_populate(d, pfn);
--
-+ if ( p2m_is_paged(t) )
-+ p2m_mem_paging_populate(d, pfn);
- rc = -EINVAL;
- goto param_fail3;
- }
-@@ -3096,8 +3099,8 @@ long do_hvm_op(unsigned long op, XEN_GUE
- mfn = gfn_to_mfn_unshare(d, pfn, &t, 0);
- if ( p2m_is_paging(t) )
- {
-- p2m_mem_paging_populate(d, pfn);
--
-+ if ( p2m_is_paged(t) )
-+ p2m_mem_paging_populate(d, pfn);
- rc = -EINVAL;
- goto param_fail4;
- }
---- xen-4.0.1-testing.orig/xen/arch/x86/mm/guest_walk.c
-+++ xen-4.0.1-testing/xen/arch/x86/mm/guest_walk.c
-@@ -96,7 +96,8 @@ static inline void *map_domain_gfn(struc
- *mfn = gfn_to_mfn_unshare(d, gfn_x(gfn), p2mt, 0);
- if ( p2m_is_paging(*p2mt) )
- {
-- p2m_mem_paging_populate(d, gfn_x(gfn));
-+ if ( p2m_is_paged(*p2mt) )
-+ p2m_mem_paging_populate(d, gfn_x(gfn));
-
- *rc = _PAGE_PAGED;
- return NULL;
---- xen-4.0.1-testing.orig/xen/arch/x86/mm/hap/guest_walk.c
-+++ xen-4.0.1-testing/xen/arch/x86/mm/hap/guest_walk.c
-@@ -49,7 +49,8 @@ unsigned long hap_gva_to_gfn(GUEST_PAGIN
- top_mfn = gfn_to_mfn_unshare(v->domain, cr3 >> PAGE_SHIFT, &p2mt, 0);
- if ( p2m_is_paging(p2mt) )
- {
-- p2m_mem_paging_populate(v->domain, cr3 >> PAGE_SHIFT);
-+ if ( p2m_is_paged(p2mt) )
-+ p2m_mem_paging_populate(v->domain, cr3 >> PAGE_SHIFT);
-
- pfec[0] = PFEC_page_paged;
- return INVALID_GFN;
-@@ -81,7 +82,8 @@ unsigned long hap_gva_to_gfn(GUEST_PAGIN
- gfn_to_mfn_unshare(v->domain, gfn_x(gfn), &p2mt, 0);
- if ( p2m_is_paging(p2mt) )
- {
-- p2m_mem_paging_populate(v->domain, gfn_x(gfn));
-+ if ( p2m_is_paged(p2mt) )
-+ p2m_mem_paging_populate(v->domain, gfn_x(gfn));
-
- pfec[0] = PFEC_page_paged;
- return INVALID_GFN;
+ }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
FYI: Package xml-commons-resolver was dropped from openSUSE:Factory at Mon Nov 15 15:38:17 CET 2010.
You can find the latest sources of the package in the
openSUSE:Dropped
repository:
https://build.opensuse.org/package/show?project=openSUSE:Dropped&package=xm…
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package desktop-data-openSUSE for openSUSE:Factory
checked in at Mon Nov 15 15:37:40 CET 2010.
--------
--- desktop-data-openSUSE/desktop-data-openSUSE.changes 2010-09-21 17:27:25.000000000 +0200
+++ /mounts/work_src_done/STABLE/desktop-data-openSUSE/desktop-data-openSUSE.changes 2010-11-15 14:43:02.000000000 +0100
@@ -1,0 +2,5 @@
+Mon Nov 15 13:41:56 UTC 2010 - wstephenson(a)novell.com
+
+- Move package-manager icons from libzypp (bnc#329635)
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ desktop-data-openSUSE.spec ++++++
--- /var/tmp/diff_new_pack.9MuWEI/_old 2010-11-15 15:35:34.000000000 +0100
+++ /var/tmp/diff_new_pack.9MuWEI/_new 2010-11-15 15:35:34.000000000 +0100
@@ -21,7 +21,7 @@
Name: desktop-data-openSUSE
BuildRequires: hicolor-icon-theme perl-RPC-XML update-desktop-files xdg-menu xdg-utils
Version: 11.3
-Release: 5
+Release: 6
%define wallpaper_version 113
Summary: SUSE Theme Files for KDE and GNOME
License: GPLv2+
++++++ desktop-data.tar.bz2 ++++++
desktop-data-openSUSE/desktop-data.tar.bz2 /mounts/work_src_done/STABLE/desktop-data-openSUSE/desktop-data.tar.bz2 differ: byte 11, line 1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
FYI: Package checkbot was dropped from openSUSE:Factory at Mon Nov 15 15:37:36 CET 2010.
You can find the latest sources of the package in the
openSUSE:Dropped
repository:
https://build.opensuse.org/package/show?project=openSUSE:Dropped&package=ch…
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
FYI: Package batik was dropped from openSUSE:Factory at Mon Nov 15 15:37:11 CET 2010.
You can find the latest sources of the package in the
openSUSE:Dropped
repository:
https://build.opensuse.org/package/show?project=openSUSE:Dropped&package=ba…
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0